Updated auto completion for IVI APIs
[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 [NoInterfaceObject] 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>[NoInterfaceObject] 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>Navigator</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="Navigator" name2="MediaServerManagerObject">
3847     <webidl><ref>Navigator</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="Speech" id="::Speech">
4043   <webidl>  module Speech {
4044   [NoInterfaceObject]
4045    interface SpeechManagerObject {
4046                readonly attribute <ref>SpeechManager</ref> speech;
4047    };
4048    <ref>Tizen</ref> implements <ref>SpeechManagerObject</ref>;
4049
4050
4051    [NoInterfaceObject]
4052    interface SpeechManager { 
4053                    void vocalizeString(DOMString speakString);
4054    };
4055
4056    [Constructor]
4057     interface SpeechRecognition : <ref>EventTarget</ref> {
4058         attribute <ref>SpeechGrammarList</ref> grammars;
4059         attribute DOMString lang;
4060         attribute boolean continuous;
4061         attribute boolean interimResults;
4062         attribute unsigned long maxAlternatives;
4063         attribute DOMString serviceURI;
4064
4065         void start();
4066         void stop();
4067         void abort();
4068
4069         attribute <ref>EventHandler</ref> onaudiostart;
4070         attribute <ref>EventHandler</ref> onsoundstart;
4071         attribute <ref>EventHandler</ref> onspeechstart;
4072         attribute <ref>EventHandler</ref> onspeechend;
4073         attribute <ref>EventHandler</ref> onsoundend;
4074         attribute <ref>EventHandler</ref> onaudioend;
4075         attribute <ref>EventHandler</ref> onresult;
4076         attribute <ref>EventHandler</ref> onnomatch;
4077         attribute <ref>EventHandler</ref> onerror;
4078         attribute <ref>EventHandler</ref> onstart;
4079         attribute <ref>EventHandler</ref> onend;
4080     };
4081
4082         enum ErrorCode {
4083           &quot;no-speech&quot;,
4084           &quot;aborted&quot;,
4085           &quot;audio-capture&quot;,
4086           &quot;network&quot;,
4087           &quot;not-allowed&quot;,
4088           &quot;service-not-allowed&quot;,
4089           &quot;bad-grammar&quot;,
4090           &quot;language-not-supported&quot;
4091         };
4092
4093     interface SpeechRecognitionError : <ref>Event</ref> {
4094         readonly attribute <ref>ErrorCode</ref> error;
4095         readonly attribute DOMString message;
4096     };
4097
4098     interface SpeechRecognitionAlternative {
4099         readonly attribute DOMString transcript;
4100         readonly attribute float confidence;
4101     };
4102
4103     interface SpeechRecognitionResult {
4104         readonly attribute unsigned long length;
4105         getter <ref>SpeechRecognitionAlternative</ref> item(unsigned long index);
4106         readonly attribute boolean final;
4107     };
4108
4109     interface SpeechRecognitionResultList {
4110         readonly attribute unsigned long length;
4111         getter <ref>SpeechRecognitionResult</ref> item(unsigned long index);
4112     };
4113
4114     interface SpeechRecognitionEvent : <ref>Event</ref> {
4115         readonly attribute unsigned long resultIndex;
4116         readonly attribute <ref>SpeechRecognitionResultList</ref> results;
4117         readonly attribute any interpretation;
4118         readonly attribute <ref>Document</ref> emma;
4119     };
4120
4121     [Constructor]
4122     interface SpeechGrammar {
4123         attribute DOMString src;
4124         attribute float weight;
4125     };
4126
4127     [Constructor]
4128     interface SpeechGrammarList {
4129         readonly attribute unsigned long length;
4130         getter <ref>SpeechGrammar</ref> item(unsigned long index);
4131         void addFromURI(DOMString src, optional float weight);
4132         void addFromString(DOMString string, optional float weight);
4133     };
4134 };</webidl>
4135   <Interface name="SpeechManagerObject" id="::SpeechManagerObject">
4136     <webidl>   [NoInterfaceObject]
4137    interface SpeechManagerObject {
4138                readonly attribute <ref>SpeechManager</ref> speech;
4139    };</webidl>
4140     <ExtendedAttributeList>
4141       <ExtendedAttribute name="NoInterfaceObject">
4142         <webidl>NoInterfaceObject</webidl>
4143       </ExtendedAttribute>
4144     </ExtendedAttributeList>
4145     <Attribute readonly="readonly" name="speech" id="::SpeechManagerObject::speech">
4146       <webidl>               readonly attribute <ref>SpeechManager</ref> speech;</webidl>
4147       <Type name="SpeechManager"/>
4148     </Attribute>
4149   </Interface>
4150   <Implements name1="Tizen" name2="SpeechManagerObject">
4151     <webidl>   <ref>Tizen</ref> implements <ref>SpeechManagerObject</ref>;</webidl>
4152   </Implements>
4153   <Interface name="SpeechManager" id="::SpeechManager">
4154     <webidl>   [NoInterfaceObject]
4155    interface SpeechManager { 
4156                    void vocalizeString(DOMString speakString);
4157    };</webidl>
4158     <ExtendedAttributeList>
4159       <ExtendedAttribute name="NoInterfaceObject">
4160         <webidl>NoInterfaceObject</webidl>
4161       </ExtendedAttribute>
4162     </ExtendedAttributeList>
4163     <Operation name="vocalizeString" id="::SpeechManager::vocalizeString">
4164       <webidl>                   void vocalizeString(DOMString speakString);</webidl>
4165       <Type type="void"/>
4166       <ArgumentList>
4167         <Argument name="speakString">
4168           <Type type="DOMString"/>
4169         </Argument>
4170       </ArgumentList>
4171     </Operation>
4172   </Interface>
4173   <Interface name="SpeechRecognition" id="::SpeechRecognition">
4174     <webidl>   [Constructor]
4175     interface SpeechRecognition : <ref>EventTarget</ref> {
4176         attribute <ref>SpeechGrammarList</ref> grammars;
4177         attribute DOMString lang;
4178         attribute boolean continuous;
4179         attribute boolean interimResults;
4180         attribute unsigned long maxAlternatives;
4181         attribute DOMString serviceURI;
4182
4183         void start();
4184         void stop();
4185         void abort();
4186
4187         attribute <ref>EventHandler</ref> onaudiostart;
4188         attribute <ref>EventHandler</ref> onsoundstart;
4189         attribute <ref>EventHandler</ref> onspeechstart;
4190         attribute <ref>EventHandler</ref> onspeechend;
4191         attribute <ref>EventHandler</ref> onsoundend;
4192         attribute <ref>EventHandler</ref> onaudioend;
4193         attribute <ref>EventHandler</ref> onresult;
4194         attribute <ref>EventHandler</ref> onnomatch;
4195         attribute <ref>EventHandler</ref> onerror;
4196         attribute <ref>EventHandler</ref> onstart;
4197         attribute <ref>EventHandler</ref> onend;
4198     };</webidl>
4199     <ExtendedAttributeList>
4200       <ExtendedAttribute name="Constructor">
4201         <webidl>Constructor</webidl>
4202       </ExtendedAttribute>
4203     </ExtendedAttributeList>
4204     <InterfaceInheritance>
4205       <Name name="EventTarget"/>
4206     </InterfaceInheritance>
4207     <Attribute name="grammars" id="::SpeechRecognition::grammars">
4208       <webidl>        attribute <ref>SpeechGrammarList</ref> grammars;</webidl>
4209       <Type name="SpeechGrammarList"/>
4210     </Attribute>
4211     <Attribute name="lang" id="::SpeechRecognition::lang">
4212       <webidl>        attribute DOMString lang;</webidl>
4213       <Type type="DOMString"/>
4214     </Attribute>
4215     <Attribute name="continuous" id="::SpeechRecognition::continuous">
4216       <webidl>        attribute boolean continuous;</webidl>
4217       <Type type="boolean"/>
4218     </Attribute>
4219     <Attribute name="interimResults" id="::SpeechRecognition::interimResults">
4220       <webidl>        attribute boolean interimResults;</webidl>
4221       <Type type="boolean"/>
4222     </Attribute>
4223     <Attribute name="maxAlternatives" id="::SpeechRecognition::maxAlternatives">
4224       <webidl>        attribute unsigned long maxAlternatives;</webidl>
4225       <Type type="unsigned long"/>
4226     </Attribute>
4227     <Attribute name="serviceURI" id="::SpeechRecognition::serviceURI">
4228       <webidl>        attribute DOMString serviceURI;</webidl>
4229       <Type type="DOMString"/>
4230     </Attribute>
4231     <Operation name="start" id="::SpeechRecognition::start">
4232       <webidl>        void start();</webidl>
4233       <Type type="void"/>
4234       <ArgumentList/>
4235     </Operation>
4236     <Operation name="stop" id="::SpeechRecognition::stop">
4237       <webidl>        void stop();</webidl>
4238       <Type type="void"/>
4239       <ArgumentList/>
4240     </Operation>
4241     <Operation name="abort" id="::SpeechRecognition::abort">
4242       <webidl>        void abort();</webidl>
4243       <Type type="void"/>
4244       <ArgumentList/>
4245     </Operation>
4246     <Attribute name="onaudiostart" id="::SpeechRecognition::onaudiostart">
4247       <webidl>        attribute <ref>EventHandler</ref> onaudiostart;</webidl>
4248       <Type name="EventHandler"/>
4249     </Attribute>
4250     <Attribute name="onsoundstart" id="::SpeechRecognition::onsoundstart">
4251       <webidl>        attribute <ref>EventHandler</ref> onsoundstart;</webidl>
4252       <Type name="EventHandler"/>
4253     </Attribute>
4254     <Attribute name="onspeechstart" id="::SpeechRecognition::onspeechstart">
4255       <webidl>        attribute <ref>EventHandler</ref> onspeechstart;</webidl>
4256       <Type name="EventHandler"/>
4257     </Attribute>
4258     <Attribute name="onspeechend" id="::SpeechRecognition::onspeechend">
4259       <webidl>        attribute <ref>EventHandler</ref> onspeechend;</webidl>
4260       <Type name="EventHandler"/>
4261     </Attribute>
4262     <Attribute name="onsoundend" id="::SpeechRecognition::onsoundend">
4263       <webidl>        attribute <ref>EventHandler</ref> onsoundend;</webidl>
4264       <Type name="EventHandler"/>
4265     </Attribute>
4266     <Attribute name="onaudioend" id="::SpeechRecognition::onaudioend">
4267       <webidl>        attribute <ref>EventHandler</ref> onaudioend;</webidl>
4268       <Type name="EventHandler"/>
4269     </Attribute>
4270     <Attribute name="onresult" id="::SpeechRecognition::onresult">
4271       <webidl>        attribute <ref>EventHandler</ref> onresult;</webidl>
4272       <Type name="EventHandler"/>
4273     </Attribute>
4274     <Attribute name="onnomatch" id="::SpeechRecognition::onnomatch">
4275       <webidl>        attribute <ref>EventHandler</ref> onnomatch;</webidl>
4276       <Type name="EventHandler"/>
4277     </Attribute>
4278     <Attribute name="onerror" id="::SpeechRecognition::onerror">
4279       <webidl>        attribute <ref>EventHandler</ref> onerror;</webidl>
4280       <Type name="EventHandler"/>
4281     </Attribute>
4282     <Attribute name="onstart" id="::SpeechRecognition::onstart">
4283       <webidl>        attribute <ref>EventHandler</ref> onstart;</webidl>
4284       <Type name="EventHandler"/>
4285     </Attribute>
4286     <Attribute name="onend" id="::SpeechRecognition::onend">
4287       <webidl>        attribute <ref>EventHandler</ref> onend;</webidl>
4288       <Type name="EventHandler"/>
4289     </Attribute>
4290   </Interface>
4291   <Enum name="ErrorCode" id="::ErrorCode">
4292     <webidl>        enum ErrorCode {
4293           &quot;no-speech&quot;,
4294           &quot;aborted&quot;,
4295           &quot;audio-capture&quot;,
4296           &quot;network&quot;,
4297           &quot;not-allowed&quot;,
4298           &quot;service-not-allowed&quot;,
4299           &quot;bad-grammar&quot;,
4300           &quot;language-not-supported&quot;
4301         };</webidl>
4302     <EnumValue stringvalue="no-speech">
4303       <webidl>          &quot;no-speech</webidl>
4304     </EnumValue>
4305     <EnumValue stringvalue="aborted">
4306       <webidl>          &quot;aborted</webidl>
4307     </EnumValue>
4308     <EnumValue stringvalue="audio-capture">
4309       <webidl>          &quot;audio-capture</webidl>
4310     </EnumValue>
4311     <EnumValue stringvalue="network">
4312       <webidl>          &quot;network</webidl>
4313     </EnumValue>
4314     <EnumValue stringvalue="not-allowed">
4315       <webidl>          &quot;not-allowed</webidl>
4316     </EnumValue>
4317     <EnumValue stringvalue="service-not-allowed">
4318       <webidl>          &quot;service-not-allowed</webidl>
4319     </EnumValue>
4320     <EnumValue stringvalue="bad-grammar">
4321       <webidl>          &quot;bad-grammar</webidl>
4322     </EnumValue>
4323     <EnumValue stringvalue="language-not-supported">
4324       <webidl>          &quot;language-not-supported</webidl>
4325     </EnumValue>
4326   </Enum>
4327   <Interface name="SpeechRecognitionError" id="::SpeechRecognitionError">
4328     <webidl>    interface SpeechRecognitionError : <ref>Event</ref> {
4329         readonly attribute <ref>ErrorCode</ref> error;
4330         readonly attribute DOMString message;
4331     };</webidl>
4332     <InterfaceInheritance>
4333       <Name name="Event"/>
4334     </InterfaceInheritance>
4335     <Attribute readonly="readonly" name="error" id="::SpeechRecognitionError::error">
4336       <webidl>        readonly attribute <ref>ErrorCode</ref> error;</webidl>
4337       <Type name="ErrorCode"/>
4338     </Attribute>
4339     <Attribute readonly="readonly" name="message" id="::SpeechRecognitionError::message">
4340       <webidl>        readonly attribute DOMString message;</webidl>
4341       <Type type="DOMString"/>
4342     </Attribute>
4343   </Interface>
4344   <Interface name="SpeechRecognitionAlternative" id="::SpeechRecognitionAlternative">
4345     <webidl>    interface SpeechRecognitionAlternative {
4346         readonly attribute DOMString transcript;
4347         readonly attribute float confidence;
4348     };</webidl>
4349     <Attribute readonly="readonly" name="transcript" id="::SpeechRecognitionAlternative::transcript">
4350       <webidl>        readonly attribute DOMString transcript;</webidl>
4351       <Type type="DOMString"/>
4352     </Attribute>
4353     <Attribute readonly="readonly" name="confidence" id="::SpeechRecognitionAlternative::confidence">
4354       <webidl>        readonly attribute float confidence;</webidl>
4355       <Type type="float"/>
4356     </Attribute>
4357   </Interface>
4358   <Interface name="SpeechRecognitionResult" id="::SpeechRecognitionResult">
4359     <webidl>    interface SpeechRecognitionResult {
4360         readonly attribute unsigned long length;
4361         getter <ref>SpeechRecognitionAlternative</ref> item(unsigned long index);
4362         readonly attribute boolean final;
4363     };</webidl>
4364     <Attribute readonly="readonly" name="length" id="::SpeechRecognitionResult::length">
4365       <webidl>        readonly attribute unsigned long length;</webidl>
4366       <Type type="unsigned long"/>
4367     </Attribute>
4368     <Operation getter="getter" name="item" id="::SpeechRecognitionResult::item">
4369       <webidl>        getter <ref>SpeechRecognitionAlternative</ref> item(unsigned long index);</webidl>
4370       <Type name="SpeechRecognitionAlternative"/>
4371       <ArgumentList>
4372         <Argument name="index">
4373           <Type type="unsigned long"/>
4374         </Argument>
4375       </ArgumentList>
4376     </Operation>
4377     <Attribute readonly="readonly" name="final" id="::SpeechRecognitionResult::final">
4378       <webidl>        readonly attribute boolean final;</webidl>
4379       <Type type="boolean"/>
4380     </Attribute>
4381   </Interface>
4382   <Interface name="SpeechRecognitionResultList" id="::SpeechRecognitionResultList">
4383     <webidl>    interface SpeechRecognitionResultList {
4384         readonly attribute unsigned long length;
4385         getter <ref>SpeechRecognitionResult</ref> item(unsigned long index);
4386     };</webidl>
4387     <Attribute readonly="readonly" name="length" id="::SpeechRecognitionResultList::length">
4388       <webidl>        readonly attribute unsigned long length;</webidl>
4389       <Type type="unsigned long"/>
4390     </Attribute>
4391     <Operation getter="getter" name="item" id="::SpeechRecognitionResultList::item">
4392       <webidl>        getter <ref>SpeechRecognitionResult</ref> item(unsigned long index);</webidl>
4393       <Type name="SpeechRecognitionResult"/>
4394       <ArgumentList>
4395         <Argument name="index">
4396           <Type type="unsigned long"/>
4397         </Argument>
4398       </ArgumentList>
4399     </Operation>
4400   </Interface>
4401   <Interface name="SpeechRecognitionEvent" id="::SpeechRecognitionEvent">
4402     <webidl>    interface SpeechRecognitionEvent : <ref>Event</ref> {
4403         readonly attribute unsigned long resultIndex;
4404         readonly attribute <ref>SpeechRecognitionResultList</ref> results;
4405         readonly attribute any interpretation;
4406         readonly attribute <ref>Document</ref> emma;
4407     };</webidl>
4408     <InterfaceInheritance>
4409       <Name name="Event"/>
4410     </InterfaceInheritance>
4411     <Attribute readonly="readonly" name="resultIndex" id="::SpeechRecognitionEvent::resultIndex">
4412       <webidl>        readonly attribute unsigned long resultIndex;</webidl>
4413       <Type type="unsigned long"/>
4414     </Attribute>
4415     <Attribute readonly="readonly" name="results" id="::SpeechRecognitionEvent::results">
4416       <webidl>        readonly attribute <ref>SpeechRecognitionResultList</ref> results;</webidl>
4417       <Type name="SpeechRecognitionResultList"/>
4418     </Attribute>
4419     <Attribute readonly="readonly" name="interpretation" id="::SpeechRecognitionEvent::interpretation">
4420       <webidl>        readonly attribute any interpretation;</webidl>
4421       <Type type="any"/>
4422     </Attribute>
4423     <Attribute readonly="readonly" name="emma" id="::SpeechRecognitionEvent::emma">
4424       <webidl>        readonly attribute <ref>Document</ref> emma;</webidl>
4425       <Type name="Document"/>
4426     </Attribute>
4427   </Interface>
4428   <Interface name="SpeechGrammar" id="::SpeechGrammar">
4429     <webidl>    [Constructor]
4430     interface SpeechGrammar {
4431         attribute DOMString src;
4432         attribute float weight;
4433     };</webidl>
4434     <ExtendedAttributeList>
4435       <ExtendedAttribute name="Constructor">
4436         <webidl>Constructor</webidl>
4437       </ExtendedAttribute>
4438     </ExtendedAttributeList>
4439     <Attribute name="src" id="::SpeechGrammar::src">
4440       <webidl>        attribute DOMString src;</webidl>
4441       <Type type="DOMString"/>
4442     </Attribute>
4443     <Attribute name="weight" id="::SpeechGrammar::weight">
4444       <webidl>        attribute float weight;</webidl>
4445       <Type type="float"/>
4446     </Attribute>
4447   </Interface>
4448   <Interface name="SpeechGrammarList" id="::SpeechGrammarList">
4449     <webidl>    [Constructor]
4450     interface SpeechGrammarList {
4451         readonly attribute unsigned long length;
4452         getter <ref>SpeechGrammar</ref> item(unsigned long index);
4453         void addFromURI(DOMString src, optional float weight);
4454         void addFromString(DOMString string, optional float weight);
4455     };</webidl>
4456     <ExtendedAttributeList>
4457       <ExtendedAttribute name="Constructor">
4458         <webidl>Constructor</webidl>
4459       </ExtendedAttribute>
4460     </ExtendedAttributeList>
4461     <Attribute readonly="readonly" name="length" id="::SpeechGrammarList::length">
4462       <webidl>        readonly attribute unsigned long length;</webidl>
4463       <Type type="unsigned long"/>
4464     </Attribute>
4465     <Operation getter="getter" name="item" id="::SpeechGrammarList::item">
4466       <webidl>        getter <ref>SpeechGrammar</ref> item(unsigned long index);</webidl>
4467       <Type name="SpeechGrammar"/>
4468       <ArgumentList>
4469         <Argument name="index">
4470           <Type type="unsigned long"/>
4471         </Argument>
4472       </ArgumentList>
4473     </Operation>
4474     <Operation name="addFromURI" id="::SpeechGrammarList::addFromURI">
4475       <webidl>        void addFromURI(DOMString src, optional float weight);</webidl>
4476       <Type type="void"/>
4477       <ArgumentList>
4478         <Argument name="src">
4479           <Type type="DOMString"/>
4480         </Argument>
4481         <Argument optional="optional" name="weight">
4482           <Type type="float"/>
4483         </Argument>
4484       </ArgumentList>
4485     </Operation>
4486     <Operation name="addFromString" id="::SpeechGrammarList::addFromString">
4487       <webidl>        void addFromString(DOMString string, optional float weight);</webidl>
4488       <Type type="void"/>
4489       <ArgumentList>
4490         <Argument name="string">
4491           <Type type="DOMString"/>
4492         </Argument>
4493         <Argument optional="optional" name="weight">
4494           <Type type="float"/>
4495         </Argument>
4496       </ArgumentList>
4497     </Operation>
4498   </Interface>
4499 </Module>
4500   <Module name="Alarm" id="::Alarm">
4501     <webidl>module Alarm {&#13;
4502 &#13;
4503     typedef DOMString AlarmId;&#13;
4504 &#13;
4505 &#13;
4506 &#13;
4507     [NoInterfaceObject] interface AlarmManagerObject {&#13;
4508         readonly attribute <ref>AlarmManager</ref> alarm;&#13;
4509     };&#13;
4510     <ref>Tizen</ref> implements <ref>AlarmManagerObject</ref>;&#13;
4511 &#13;
4512 &#13;
4513     [NoInterfaceObject] interface AlarmManager {&#13;
4514 &#13;
4515         const long PERIOD_MINUTE = 60;&#13;
4516         &#13;
4517 &#13;
4518         const long PERIOD_HOUR = 3600;&#13;
4519          &#13;
4520 &#13;
4521         const long PERIOD_DAY = 86400;&#13;
4522         &#13;
4523 &#13;
4524         const long PERIOD_WEEK = 604800;&#13;
4525 &#13;
4526 &#13;
4527         void add(<ref>Alarm</ref> alarm, <ref>ApplicationId</ref> applicationId, optional <ref>ApplicationControl</ref>? appControl) raises(<ref>WebAPIException</ref>);&#13;
4528 &#13;
4529 &#13;
4530         void remove(<ref>AlarmId</ref> id) raises(<ref>WebAPIException</ref>);&#13;
4531 &#13;
4532 &#13;
4533         void removeAll() raises(<ref>WebAPIException</ref>);&#13;
4534 &#13;
4535 &#13;
4536         <ref>Alarm</ref> get(<ref>AlarmId</ref> id) raises(<ref>WebAPIException</ref>);&#13;
4537 &#13;
4538 &#13;
4539         <ref>Alarm</ref>[] getAll() raises(<ref>WebAPIException</ref>);&#13;
4540     };&#13;
4541 &#13;
4542 &#13;
4543     [NoInterfaceObject] interface Alarm {&#13;
4544 &#13;
4545         readonly attribute <ref>AlarmId</ref>? id;&#13;
4546     };&#13;
4547  &#13;
4548     [Constructor(long delay, optional long? period)]&#13;
4549 &#13;
4550     interface AlarmRelative : <ref>Alarm</ref> {&#13;
4551 &#13;
4552         readonly attribute long delay;&#13;
4553         &#13;
4554 &#13;
4555         readonly attribute long? period;&#13;
4556 &#13;
4557 &#13;
4558         long? getRemainingSeconds() raises(<ref>WebAPIException</ref>);&#13;
4559     };&#13;
4560 &#13;
4561     [Constructor(Date date),&#13;
4562 &#13;
4563      Constructor(Date date, <ref>ByDayValue</ref>[] daysOfTheWeek),&#13;
4564 &#13;
4565      Constructor(Date date, long period)]&#13;
4566 &#13;
4567     interface AlarmAbsolute : <ref>Alarm</ref> {&#13;
4568 &#13;
4569         readonly attribute Date date;&#13;
4570 &#13;
4571 &#13;
4572         readonly attribute long? period;&#13;
4573 &#13;
4574 &#13;
4575         readonly attribute <ref>ByDayValue</ref>[] daysOfTheWeek;&#13;
4576 &#13;
4577 &#13;
4578         Date? getNextScheduledDate() raises(<ref>WebAPIException</ref>);&#13;
4579     };&#13;
4580 };</webidl>
4581     <descriptive>
4582         <brief>
4583  This API provides the functionality for scheduling the system alarm. 
4584 It allows you to run other applications and have them perform operations at the specific time. 
4585 You can schedule an alarm to go off once or to repeat at specific intervals. 
4586         </brief>
4587        <description>
4588         <p>
4589 Each application has its own individual alarm storage, that is, applications cannot view or edit alarms set by other applications.
4590         </p>
4591         <p>
4592 Once an alarm goes off, it will be removed from the alarm storage automatically.
4593 <em>AlarmManager</em> provides methods to manage alarms such as adding and removing. 
4594 For more information on the Alarm features, see <a href="../../org.tizen.web.appprogramming/html/guide/app_guide/alarm.htm">Alarm Guide</a>.
4595         </p>
4596        </description>
4597         <version>
4598  1.0
4599         </version>
4600     </descriptive>
4601     <Typedef name="AlarmId" id="::Alarm::AlarmId">
4602       <webidl>    typedef DOMString AlarmId;</webidl>
4603       <descriptive>
4604           <brief>
4605  An alarm identifier.
4606           </brief>
4607           <version>
4608  1.0
4609           </version>
4610       </descriptive>
4611       <Type type="DOMString"/>
4612     </Typedef>
4613     <Interface name="AlarmManagerObject" id="::Alarm::AlarmManagerObject">
4614       <webidl>    [NoInterfaceObject] interface AlarmManagerObject {&#13;
4615         readonly attribute <ref>AlarmManager</ref> alarm;&#13;
4616     };</webidl>
4617       <descriptive>
4618           <brief>
4619  This interface defines what is instantiated by the <em>Tizen </em>object from the Tizen Platform.
4620 There will be a <em>tizen.alarm </em>object that allows access to the functionality of the Alarm API.
4621           </brief>
4622           <version>
4623  1.0
4624           </version>
4625       </descriptive>
4626       <ExtendedAttributeList>
4627         <ExtendedAttribute name="NoInterfaceObject">
4628           <webidl>NoInterfaceObject</webidl>
4629         </ExtendedAttribute>
4630       </ExtendedAttributeList>
4631       <Attribute readonly="readonly" name="alarm" id="::Alarm::AlarmManagerObject::alarm">
4632         <webidl>        readonly attribute <ref>AlarmManager</ref> alarm;</webidl>
4633         <Type name="AlarmManager"/>
4634       </Attribute>
4635     </Interface>
4636     <Implements name1="Tizen" name2="AlarmManagerObject">
4637       <webidl>    <ref>Tizen</ref> implements <ref>AlarmManagerObject</ref>;</webidl>
4638     </Implements>
4639     <Interface name="AlarmManager" id="::Alarm::AlarmManager">
4640       <webidl>    [NoInterfaceObject] interface AlarmManager {&#13;
4641 &#13;
4642         const long PERIOD_MINUTE = 60;&#13;
4643         &#13;
4644 &#13;
4645         const long PERIOD_HOUR = 3600;&#13;
4646          &#13;
4647 &#13;
4648         const long PERIOD_DAY = 86400;&#13;
4649         &#13;
4650 &#13;
4651         const long PERIOD_WEEK = 604800;&#13;
4652 &#13;
4653 &#13;
4654         void add(<ref>Alarm</ref> alarm, <ref>ApplicationId</ref> applicationId, optional <ref>ApplicationControl</ref>? appControl) raises(<ref>WebAPIException</ref>);&#13;
4655 &#13;
4656 &#13;
4657         void remove(<ref>AlarmId</ref> id) raises(<ref>WebAPIException</ref>);&#13;
4658 &#13;
4659 &#13;
4660         void removeAll() raises(<ref>WebAPIException</ref>);&#13;
4661 &#13;
4662 &#13;
4663         <ref>Alarm</ref> get(<ref>AlarmId</ref> id) raises(<ref>WebAPIException</ref>);&#13;
4664 &#13;
4665 &#13;
4666         <ref>Alarm</ref>[] getAll() raises(<ref>WebAPIException</ref>);&#13;
4667     };</webidl>
4668       <descriptive>
4669           <brief>
4670  This interface provides methods to manage alarms.
4671           </brief>
4672           <version>
4673  1.0
4674           </version>
4675       </descriptive>
4676       <ExtendedAttributeList>
4677         <ExtendedAttribute name="NoInterfaceObject">
4678           <webidl>NoInterfaceObject</webidl>
4679         </ExtendedAttribute>
4680       </ExtendedAttributeList>
4681       <Const name="PERIOD_MINUTE" value="60" id="::Alarm::AlarmManager::PERIOD_MINUTE">
4682         <webidl>        const long PERIOD_MINUTE = 60;</webidl>
4683         <descriptive>
4684             <brief>
4685  The period of a minute.
4686 It defines the number of seconds per minute.
4687             </brief>
4688             <version>
4689  1.0
4690             </version>
4691         </descriptive>
4692         <Type type="long"/>
4693       </Const>
4694       <Const name="PERIOD_HOUR" value="3600" id="::Alarm::AlarmManager::PERIOD_HOUR">
4695         <webidl>        const long PERIOD_HOUR = 3600;</webidl>
4696         <descriptive>
4697             <brief>
4698  The period of an hour.
4699 It defines the number of seconds per hour.
4700             </brief>
4701             <version>
4702  1.0
4703             </version>
4704         </descriptive>
4705         <Type type="long"/>
4706       </Const>
4707       <Const name="PERIOD_DAY" value="86400" id="::Alarm::AlarmManager::PERIOD_DAY">
4708         <webidl>        const long PERIOD_DAY = 86400;</webidl>
4709         <descriptive>
4710             <brief>
4711  The period of a day.
4712 It defines the number of seconds per day.
4713             </brief>
4714             <version>
4715  1.0
4716             </version>
4717         </descriptive>
4718         <Type type="long"/>
4719       </Const>
4720       <Const name="PERIOD_WEEK" value="604800" id="::Alarm::AlarmManager::PERIOD_WEEK">
4721         <webidl>        const long PERIOD_WEEK = 604800;</webidl>
4722         <descriptive>
4723             <brief>
4724  The period of a week.
4725 It defines the number of seconds in a week.
4726             </brief>
4727             <version>
4728  1.0
4729             </version>
4730         </descriptive>
4731         <Type type="long"/>
4732       </Const>
4733       <Operation name="add" id="::Alarm::AlarmManager::add">
4734         <webidl>        void add(<ref>Alarm</ref> alarm, <ref>ApplicationId</ref> applicationId, optional <ref>ApplicationControl</ref>? appControl) raises(<ref>WebAPIException</ref>);</webidl>
4735         <descriptive>
4736             <brief>
4737  Adds an alarm to the storage.
4738             </brief>
4739            <description>
4740             <p>
4741 Set an alarm with the application ID to be run. You should definitely provide the application ID to run 
4742 and the <a href=" ../../org.tizen.web.appprogramming/html/guide/app_guide/application_service.htm">application control </a>information if it is necessary. 
4743 For more information about the application contorl, see <a href="../../org.tizen.web.device.apireference/tizen/application.html">The Application API</a>.
4744             </p>
4745            </description>
4746             <version>
4747  1.0
4748             </version>
4749             <privilegelevel>
4750  public
4751             </privilegelevel>
4752             <privilege>
4753  http://tizen.org/privilege/alarm
4754             </privilege>
4755             <Code> // Triggers an alarm on a given date/time
4756  var alarm = new tizen.AlarmAbsolute(new Date(2014, 10, 4, 8, 0));
4757  var appControl = new tizen.ApplicationControl(&quot;http://tizen.org/appcontrol/operation/view&quot;);
4758  tizen.alarm.add(alarm, tizen.application.getCurrentApplication().appInfo.id, appControl);
4759  console.log(&quot;Alarm added with id: &quot; + alarm.id);
4760  </Code>
4761         </descriptive>
4762         <Type type="void"/>
4763         <ArgumentList>
4764           <Argument name="alarm">
4765             <descriptive>
4766                 <description><p>
4767  An alarm to add. It can be either <em>AlarmRelative </em> or <em>AlarmAbsolute</em>.
4768                 </p></description>
4769             </descriptive>
4770             <Type name="Alarm"/>
4771           </Argument>
4772           <Argument name="applicationId">
4773             <descriptive>
4774                 <description><p>
4775  The application ID to run when the alarm is triggered.
4776                 </p></description>
4777             </descriptive>
4778             <Type name="ApplicationId"/>
4779           </Argument>
4780           <Argument optional="optional" name="appControl">
4781             <descriptive>
4782                 <description><p>
4783  The data structure describing application control details.
4784                 </p></description>
4785             </descriptive>
4786             <Type name="ApplicationControl" nullable="nullable"/>
4787           </Argument>
4788         </ArgumentList>
4789         <Raises>
4790           <RaiseException name="WebAPIException">
4791             <descriptive>
4792                 <description><p>
4793  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
4794                 </p></description>
4795                 <description><p>
4796  with error type InvalidValuesError, if any input parameter does not contain a valid value.
4797                 </p></description>
4798                 <description><p>
4799  with error type SecurityError, if the application does not have the privilege to call this method.
4800                 </p></description>
4801                 <description><p>
4802  with error type UnknownError, if any other error occurs.
4803                 </p></description>
4804             </descriptive>
4805           </RaiseException>
4806         </Raises>
4807       </Operation>
4808       <Operation name="remove" id="::Alarm::AlarmManager::remove">
4809         <webidl>        void remove(<ref>AlarmId</ref> id) raises(<ref>WebAPIException</ref>);</webidl>
4810         <descriptive>
4811             <brief>
4812  Removes an alarm from the storage.
4813             </brief>
4814            <description>
4815             <p>
4816 If an alarm goes off, it will be removed from the storage automatically.
4817             </p>
4818            </description>
4819             <version>
4820  1.0
4821             </version>
4822             <privilegelevel>
4823  public
4824             </privilegelevel>
4825             <privilege>
4826  http://tizen.org/privilege/alarm
4827             </privilege>
4828             <Code> var alarms = tizen.alarm.getAll();
4829
4830  // Removes the first alarm
4831  if (alarms.length > 0) {
4832    try {
4833      tizen.alarm.remove(alarms[0].id);
4834      console.log(&quot;Successfully removed the first alarm.&quot;);
4835    } catch(error) {
4836      console.log(&quot;Failed to remove the first alarm.&quot;);
4837    }
4838  }
4839  </Code>
4840         </descriptive>
4841         <Type type="void"/>
4842         <ArgumentList>
4843           <Argument name="id">
4844             <descriptive>
4845                 <description><p>
4846  The ID of the alarm to remove
4847                 </p></description>
4848             </descriptive>
4849             <Type name="AlarmId"/>
4850           </Argument>
4851         </ArgumentList>
4852         <Raises>
4853           <RaiseException name="WebAPIException">
4854             <descriptive>
4855                 <description><p>
4856  with error type NotFoundError, if this alarm identifier cannot be found in the storage.
4857                 </p></description>
4858                 <description><p>
4859  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
4860                 </p></description>
4861                 <description><p>
4862  with error type InvalidValuesError, if any input parameter does not contain a valid value.
4863                 </p></description>
4864                 <description><p>
4865  with error type SecurityError, if the application does not have the privilege to call this method.
4866                 </p></description>
4867                 <description><p>
4868  with error type UnknownError, if the method cannot be completed because of an unknown error.
4869                 </p></description>
4870             </descriptive>
4871           </RaiseException>
4872         </Raises>
4873       </Operation>
4874       <Operation name="removeAll" id="::Alarm::AlarmManager::removeAll">
4875         <webidl>        void removeAll() raises(<ref>WebAPIException</ref>);</webidl>
4876         <descriptive>
4877             <brief>
4878  Removes all alarms added by an application.
4879             </brief>
4880            <description>
4881             <p>
4882 Because each application has its own alarm storage, this method removes alarms only added by the calling application.
4883             </p>
4884            </description>
4885             <version>
4886  1.0
4887             </version>
4888             <privilegelevel>
4889  public
4890             </privilegelevel>
4891             <privilege>
4892  http://tizen.org/privilege/alarm
4893             </privilege>
4894             <Code> tizen.alarm.removeAll();
4895  console.log(&quot;remove all registered alarms in the storage.&quot;);
4896  </Code>
4897         </descriptive>
4898         <Type type="void"/>
4899         <ArgumentList/>
4900         <Raises>
4901           <RaiseException name="WebAPIException">
4902             <descriptive>
4903                 <description><p>
4904  with error type SecurityError, if the application does not have the privilege to call this method.
4905                 </p></description>
4906                 <description><p>
4907  with error type UnknownError, if the method cannot be completed because of an unknown error.
4908                 </p></description>
4909             </descriptive>
4910           </RaiseException>
4911         </Raises>
4912       </Operation>
4913       <Operation name="get" id="::Alarm::AlarmManager::get">
4914         <webidl>        <ref>Alarm</ref> get(<ref>AlarmId</ref> id) raises(<ref>WebAPIException</ref>);</webidl>
4915         <descriptive>
4916             <brief>
4917  Returns an alarm as per the specified identifier.
4918             </brief>
4919             <version>
4920  1.0
4921             </version>
4922             <Code> // Sets an alarm
4923  var date = new Date();
4924  date.setHours(date.getHours()+1);
4925  var abs_alarm = new tizen.AlarmAbsolute(date);
4926
4927  // Adds an alarm
4928  tizen.alarm.add(abs_alarm, tizen.application.getCurrentApplication().appInfo.id);
4929
4930  // Gets an alarm
4931  var alarm = tizen.alarm.get(abs_alarm.id);
4932  console.log(&quot;The alarm will trigger at &quot; + alarm.getNextScheduledDate());
4933  </Code>
4934         </descriptive>
4935         <Type name="Alarm">
4936           <descriptive>
4937               <description><p>
4938  Alarm An alarm object with the specified ID.
4939               </p></description>
4940           </descriptive>
4941         </Type>
4942         <ArgumentList>
4943           <Argument name="id">
4944             <descriptive>
4945                 <description><p>
4946  The alarm ID to retrieve.
4947                 </p></description>
4948             </descriptive>
4949             <Type name="AlarmId"/>
4950           </Argument>
4951         </ArgumentList>
4952         <Raises>
4953           <RaiseException name="WebAPIException">
4954             <descriptive>
4955                 <description><p>
4956  with error type NotFoundError, if this alarm identifier cannot be found in the storage.
4957                 </p></description>
4958                 <description><p>
4959  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
4960                 </p></description>
4961                 <description><p>
4962  with error type InvalidValuesError, if any input parameter does not contain a valid value.
4963                 </p></description>
4964                 <description><p>
4965  with error type UnknownError, if the method cannot be completed because of an unknown error.
4966                 </p></description>
4967             </descriptive>
4968           </RaiseException>
4969         </Raises>
4970       </Operation>
4971       <Operation name="getAll" id="::Alarm::AlarmManager::getAll">
4972         <webidl>        <ref>Alarm</ref>[] getAll() raises(<ref>WebAPIException</ref>);</webidl>
4973         <descriptive>
4974             <brief>
4975  Retrieves all alarms in an application storage.. 
4976             </brief>
4977            <description>
4978             <p>
4979 Alarms that have already been triggered are removed automatically from the storage.
4980             </p>
4981            </description>
4982             <version>
4983  1.0
4984             </version>
4985             <Code> var alarms = tizen.alarm.getAll();
4986  console.log(alarms.length + &quot; alarms present in the storage.&quot;);
4987  </Code>
4988         </descriptive>
4989         <Type type="array">
4990           <descriptive>
4991               <description><p>
4992  Alarm[] All Alarm objects.
4993               </p></description>
4994           </descriptive>
4995           <Type name="Alarm"/>
4996         </Type>
4997         <ArgumentList/>
4998         <Raises>
4999           <RaiseException name="WebAPIException">
5000             <descriptive>
5001                 <description><p>
5002  with error type UnknownError, if the method cannot be completed because of an unknown error.
5003                 </p></description>
5004             </descriptive>
5005           </RaiseException>
5006         </Raises>
5007       </Operation>
5008     </Interface>
5009     <Interface name="Alarm" id="::Alarm::Alarm">
5010       <webidl>    [NoInterfaceObject] interface Alarm {&#13;
5011 &#13;
5012         readonly attribute <ref>AlarmId</ref>? id;&#13;
5013     };</webidl>
5014       <descriptive>
5015           <brief>
5016  This interface is an abstract interface for alarm types.
5017           </brief>
5018           <version>
5019  1.0
5020           </version>
5021       </descriptive>
5022       <ExtendedAttributeList>
5023         <ExtendedAttribute name="NoInterfaceObject">
5024           <webidl>NoInterfaceObject</webidl>
5025         </ExtendedAttribute>
5026       </ExtendedAttributeList>
5027       <Attribute readonly="readonly" name="id" id="::Alarm::Alarm::id">
5028         <webidl>        readonly attribute <ref>AlarmId</ref>? id;</webidl>
5029         <descriptive>
5030             <brief>
5031  The alarm identifier.
5032             </brief>
5033             <version>
5034  1.0
5035             </version>
5036         </descriptive>
5037         <Type name="AlarmId" nullable="nullable"/>
5038       </Attribute>
5039     </Interface>
5040     <Interface name="AlarmRelative" id="::Alarm::AlarmRelative">
5041       <webidl>    [Constructor(long delay, optional long? period)]&#13;
5042 &#13;
5043     interface AlarmRelative : <ref>Alarm</ref> {&#13;
5044 &#13;
5045         readonly attribute long delay;&#13;
5046         &#13;
5047 &#13;
5048         readonly attribute long? period;&#13;
5049 &#13;
5050 &#13;
5051         long? getRemainingSeconds() raises(<ref>WebAPIException</ref>);&#13;
5052     };</webidl>
5053       <descriptive>
5054           <brief>
5055  This interface provides the relative alarm, which occurs at a fixed interval in future.
5056           </brief>
5057          <description>
5058           <p>
5059 This alarm triggers after a duration mentioned in <em>delay</em> attribute from the moment the alarm is added. 
5060 If a <em>period</em> is provided, the alarm keeps triggering for the given interval.
5061           </p>
5062          </description>
5063           <version>
5064  1.0
5065           </version>
5066           <Code> // Gets the current application id.
5067  var appId = tizen.application.getCurrentApplication().appInfo.id;
5068
5069  // Sets an alarm in 3 hours from now
5070  var alarm1 = new tizen.AlarmRelative(3 * tizen.alarm.PERIOD_HOUR);
5071  tizen.alarm.add(alarm1, appId);
5072
5073  // Sets an alarm in one hour, recurring after every 2 minutes
5074  var alarm2 = new tizen.AlarmRelative(tizen.alarm.PERIOD_HOUR, 2 * tizen.alarm.PERIOD_MINUTE);
5075  tizen.alarm.add(alarm2, appId);
5076  </Code>
5077       </descriptive>
5078       <ExtendedAttributeList>
5079         <ExtendedAttribute name="Constructor">
5080           <webidl>Constructor(long delay, optional long? period)</webidl>
5081           <ArgumentList>
5082             <Argument name="delay">
5083               <Type type="long"/>
5084             </Argument>
5085             <Argument optional="optional" name="period">
5086               <Type type="long" nullable="nullable"/>
5087             </Argument>
5088           </ArgumentList>
5089         </ExtendedAttribute>
5090       </ExtendedAttributeList>
5091       <InterfaceInheritance>
5092         <Name name="Alarm"/>
5093       </InterfaceInheritance>
5094       <Attribute readonly="readonly" name="delay" id="::Alarm::AlarmRelative::delay">
5095         <webidl>        readonly attribute long delay;</webidl>
5096         <descriptive>
5097             <brief>
5098  An attribute to store the difference in time (in seconds) between when an alarm is added and it is triggered.
5099             </brief>
5100             <version>
5101  1.0
5102             </version>
5103         </descriptive>
5104         <Type type="long"/>
5105       </Attribute>
5106       <Attribute readonly="readonly" name="period" id="::Alarm::AlarmRelative::period">
5107         <webidl>        readonly attribute long? period;</webidl>
5108         <descriptive>
5109             <brief>
5110  An attribute to store the duration in seconds between each trigger of an alarm.
5111 By default, this attribute is set to <var>null</var>, indicating that this alarm does not repeat.
5112             </brief>
5113             <version>
5114  1.0
5115             </version>
5116         </descriptive>
5117         <Type type="long" nullable="nullable"/>
5118       </Attribute>
5119       <Operation name="getRemainingSeconds" id="::Alarm::AlarmRelative::getRemainingSeconds">
5120         <webidl>        long? getRemainingSeconds() raises(<ref>WebAPIException</ref>);</webidl>
5121         <descriptive>
5122             <brief>
5123  Returns duration in seconds before the next alarm is triggered.
5124             </brief>
5125            <description>
5126             <p>
5127 If the alarm has expired, this method returns <var>null</var>.
5128             </p>
5129            </description>
5130             <version>
5131  1.0
5132             </version>
5133             <Code> // Gets the current application id.
5134  var appId = tizen.application.getCurrentApplication().appInfo.id; 
5135
5136  // Sets an alarm in 3 hours from now
5137  var alarm = new tizen.AlarmRelative(3 * tizen.alarm.PERIOD_HOUR);
5138  tizen.alarm.add(alarm, appId);
5139  
5140  var sec = alarm.getRemainingSeconds();
5141  console.log(&quot;remaining time is &quot; + sec);
5142  </Code>
5143         </descriptive>
5144         <Type type="long" nullable="nullable">
5145           <descriptive>
5146               <description><p>
5147  long The duration before the next alarm trigger.
5148               </p></description>
5149           </descriptive>
5150         </Type>
5151         <ArgumentList/>
5152         <Raises>
5153           <RaiseException name="WebAPIException">
5154             <descriptive>
5155                 <description><p>
5156  with error type UnknownError, if the method cannot be completed because of an unknown error.
5157                 </p></description>
5158             </descriptive>
5159           </RaiseException>
5160         </Raises>
5161       </Operation>
5162     </Interface>
5163     <Interface name="AlarmAbsolute" id="::Alarm::AlarmAbsolute">
5164       <webidl>    [Constructor(Date date),&#13;
5165 &#13;
5166      Constructor(Date date, <ref>ByDayValue</ref>[] daysOfTheWeek),&#13;
5167 &#13;
5168      Constructor(Date date, long period)]&#13;
5169 &#13;
5170     interface AlarmAbsolute : <ref>Alarm</ref> {&#13;
5171 &#13;
5172         readonly attribute Date date;&#13;
5173 &#13;
5174 &#13;
5175         readonly attribute long? period;&#13;
5176 &#13;
5177 &#13;
5178         readonly attribute <ref>ByDayValue</ref>[] daysOfTheWeek;&#13;
5179 &#13;
5180 &#13;
5181         Date? getNextScheduledDate() raises(<ref>WebAPIException</ref>);&#13;
5182     };</webidl>
5183       <descriptive>
5184           <brief>
5185  This interface provides an absolute alarm, which triggers at a specified absolute date.
5186           </brief>
5187          <description>
5188           <p>
5189 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.
5190           </p>
5191          </description>
5192           <version>
5193  1.0
5194           </version>
5195           <Code> // Gets the current application id.
5196  var appId = tizen.application.getCurrentApplication().appInfo.id;
5197
5198  // Sets an alarm on January 1st 2014 08:00
5199  var date = new Date(2014, 0, 1, 8, 0);
5200  var alarm1 = new tizen.AlarmAbsolute(date);
5201  tizen.alarm.add(alarm1, appId);
5202
5203  // Sets an alarm on January 1st 2014 08:00, repeating every 2 days
5204  var alarm2 = new tizen.AlarmAbsolute(date, 2 * tizen.alarm.PERIOD_DAY);
5205  tizen.alarm.add(alarm2, appId);
5206
5207  // Sets an alarm occurring on every Saturday and Sunday, at 08:00, starting from January 1st 2014
5208  var alarm3 = new tizen.AlarmAbsolute(date, [&quot;SA&quot;, &quot;SU&quot;]);
5209  tizen.alarm.add(alarm3, appId);
5210  </Code>
5211       </descriptive>
5212       <ExtendedAttributeList>
5213         <ExtendedAttribute name="Constructor">
5214           <webidl>Constructor(Date date)</webidl>
5215           <ArgumentList>
5216             <Argument name="date">
5217               <Type type="Date"/>
5218             </Argument>
5219           </ArgumentList>
5220         </ExtendedAttribute>
5221         <ExtendedAttribute name="Constructor">
5222           <webidl>     Constructor(Date date, <ref>ByDayValue</ref>[] daysOfTheWeek)</webidl>
5223           <ArgumentList>
5224             <Argument name="date">
5225               <Type type="Date"/>
5226             </Argument>
5227             <Argument name="daysOfTheWeek">
5228               <Type type="array">
5229                 <Type name="ByDayValue"/>
5230               </Type>
5231             </Argument>
5232           </ArgumentList>
5233         </ExtendedAttribute>
5234         <ExtendedAttribute name="Constructor">
5235           <webidl>     Constructor(Date date, long period)</webidl>
5236           <ArgumentList>
5237             <Argument name="date">
5238               <Type type="Date"/>
5239             </Argument>
5240             <Argument name="period">
5241               <Type type="long"/>
5242             </Argument>
5243           </ArgumentList>
5244         </ExtendedAttribute>
5245       </ExtendedAttributeList>
5246       <InterfaceInheritance>
5247         <Name name="Alarm"/>
5248       </InterfaceInheritance>
5249       <Attribute readonly="readonly" name="date" id="::Alarm::AlarmAbsolute::date">
5250         <webidl>        readonly attribute Date date;</webidl>
5251         <descriptive>
5252             <brief>
5253  An attribute to store the absolute date/time when the alarm is initially triggered.
5254             </brief>
5255            <description>
5256             <p>
5257 This attribute is precise to the second. Milliseconds will be ignored.
5258             </p>
5259            </description>
5260             <version>
5261  1.0
5262             </version>
5263         </descriptive>
5264         <Type type="Date"/>
5265       </Attribute>
5266       <Attribute readonly="readonly" name="period" id="::Alarm::AlarmAbsolute::period">
5267         <webidl>        readonly attribute long? period;</webidl>
5268         <descriptive>
5269             <brief>
5270  An attribute to store the duration in seconds between each trigger of the alarm.
5271             </brief>
5272            <description>
5273             <p>
5274 By default, this attribute is set to <var>null</var>, indicating that this alarm does not repeat.
5275 The <em>period</em> and <em>daysOfTheWeek</em> attributes are mutually exclusive.
5276             </p>
5277            </description>
5278             <version>
5279  1.0
5280             </version>
5281         </descriptive>
5282         <Type type="long" nullable="nullable"/>
5283       </Attribute>
5284       <Attribute readonly="readonly" name="daysOfTheWeek" id="::Alarm::AlarmAbsolute::daysOfTheWeek">
5285         <webidl>        readonly attribute <ref>ByDayValue</ref>[] daysOfTheWeek;</webidl>
5286         <descriptive>
5287             <brief>
5288  An attribute to store the days of the week associated with the recurrence rule.
5289             </brief>
5290            <description>
5291             <p>
5292 By default, this attribute is set to an empty array.
5293 The <em>period</em> and <em>daysOfTheWeek</em> attributes are mutually exclusive.
5294             </p>
5295            </description>
5296             <version>
5297  1.0
5298             </version>
5299         </descriptive>
5300         <Type type="array">
5301           <Type name="ByDayValue"/>
5302         </Type>
5303       </Attribute>
5304       <Operation name="getNextScheduledDate" id="::Alarm::AlarmAbsolute::getNextScheduledDate">
5305         <webidl>        Date? getNextScheduledDate() raises(<ref>WebAPIException</ref>);</webidl>
5306         <descriptive>
5307             <brief>
5308  Returns the date / time of the next alarm trigger.
5309             </brief>
5310            <description>
5311             <p>
5312 If the alarm has expired, this method returns <var>null</var>. The returned date is precise to the second.
5313             </p>
5314            </description>
5315             <version>
5316  1.0
5317             </version>
5318             <Code> // Gets the current application id.
5319  var appId = tizen.application.getCurrentApplication().appInfo.id;
5320
5321  // Sets an alarm on January 1st 2014 08:00
5322  var date = new Date(2014, 0, 1, 8, 0);
5323  var alarm1 = new tizen.AlarmAbsolute(date);
5324  tizen.alarm.add(alarm1, appId);
5325  
5326  var date = alarm1.getNextScheduledDate();
5327  console.log(&quot;next scheduled time is &quot; + date);
5328  </Code>
5329         </descriptive>
5330         <Type type="Date" nullable="nullable">
5331           <descriptive>
5332               <description><p>
5333  Date The date/time of the next alarm trigger.
5334               </p></description>
5335           </descriptive>
5336         </Type>
5337         <ArgumentList/>
5338         <Raises>
5339           <RaiseException name="WebAPIException">
5340             <descriptive>
5341                 <description><p>
5342  with error type UnknownError, if the method cannot be completed because of an unknown error.    
5343                 </p></description>
5344             </descriptive>
5345           </RaiseException>
5346         </Raises>
5347       </Operation>
5348     </Interface>
5349   </Module>
5350   <Module name="Application" id="::Application">
5351     <webidl>module Application {
5352
5353   typedef DOMString ApplicationId;
5354
5355   typedef DOMString ApplicationContextId;
5356
5357   [NoInterfaceObject] interface ApplicationManagerObject {
5358     readonly attribute <ref>ApplicationManager</ref> application;
5359   };
5360   <ref>Tizen</ref> implements <ref>ApplicationManagerObject</ref>;
5361
5362   [NoInterfaceObject] interface ApplicationManager {
5363
5364     <ref>Application</ref> getCurrentApplication() raises(<ref>WebAPIException</ref>);
5365         
5366     void kill(<ref>ApplicationContextId</ref> contextId,
5367               optional <ref>SuccessCallback</ref>? successCallback,
5368               optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
5369         
5370     void launch(<ref>ApplicationId</ref> id,
5371                 optional <ref>SuccessCallback</ref>? successCallback,
5372                 optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
5373
5374     void launchAppControl(<ref>ApplicationControl</ref> appControl,
5375                           optional <ref>ApplicationId</ref>? id,
5376                           optional <ref>SuccessCallback</ref>? successCallback,
5377                           optional <ref>ErrorCallback</ref>? errorCallback,
5378                           optional <ref>ApplicationControlDataArrayReplyCallback</ref>? replyCallback) raises(<ref>WebAPIException</ref>);
5379
5380     void findAppControl(<ref>ApplicationControl</ref> appControl,
5381                         <ref>FindAppControlSuccessCallback</ref> successCallback,
5382                         optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
5383
5384     void getAppsContext(<ref>ApplicationContextArraySuccessCallback</ref> successCallback,
5385                         optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
5386
5387     <ref>ApplicationContext</ref> getAppContext(optional <ref>ApplicationContextId</ref>? contextId) raises(<ref>WebAPIException</ref>);
5388
5389     void getAppsInfo(<ref>ApplicationInformationArraySuccessCallback</ref> successCallback,
5390                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
5391
5392     <ref>ApplicationInformation</ref> getAppInfo(optional <ref>ApplicationId</ref>? id) raises(<ref>WebAPIException</ref>);
5393
5394     <ref>ApplicationCertificate</ref>[] getAppCerts(optional <ref>ApplicationId</ref>? id) raises(<ref>WebAPIException</ref>);
5395
5396     DOMString getAppSharedURI(optional <ref>ApplicationId</ref>? id) raises(<ref>WebAPIException</ref>);
5397
5398     <ref>ApplicationMetaData</ref>[] getAppMetaData(optional <ref>ApplicationId</ref>? id) raises(<ref>WebAPIException</ref>);
5399
5400     long addAppInfoEventListener(<ref>ApplicationInformationEventCallback</ref> eventCallback) raises(<ref>WebAPIException</ref>);
5401
5402     void removeAppInfoEventListener(long watchId) raises(<ref>WebAPIException</ref>);
5403
5404   };
5405
5406   [NoInterfaceObject] interface Application {
5407
5408     readonly attribute <ref>ApplicationInformation</ref> appInfo;
5409
5410     readonly attribute <ref>ApplicationContextId</ref> contextId;
5411
5412     void exit() raises(<ref>WebAPIException</ref>);
5413
5414     void hide() raises(<ref>WebAPIException</ref>);
5415
5416     <ref>RequestedApplicationControl</ref> getRequestedAppControl() raises(<ref>WebAPIException</ref>);
5417   };
5418
5419
5420   [NoInterfaceObject] interface ApplicationInformation {
5421
5422     readonly attribute <ref>ApplicationId</ref> id;
5423
5424     readonly attribute DOMString name;
5425
5426     readonly attribute DOMString iconPath;
5427
5428     readonly attribute DOMString version;
5429
5430     readonly attribute boolean show;
5431
5432     readonly attribute DOMString[] categories;
5433
5434     readonly attribute Date installDate;
5435
5436     readonly attribute long size raises(<ref>WebAPIException</ref>);
5437
5438     readonly attribute <ref>PackageId</ref> packageId;
5439   };
5440
5441   [NoInterfaceObject] interface ApplicationContext {
5442
5443     readonly attribute <ref>ApplicationContextId</ref> id;
5444
5445     readonly attribute <ref>ApplicationId</ref> appId;
5446
5447   };
5448
5449   [Constructor(DOMString key, DOMString[] value)]
5450   interface ApplicationControlData {
5451
5452     attribute DOMString key;
5453
5454     attribute DOMString[] value;
5455
5456   };
5457
5458   [Constructor(DOMString operation, optional DOMString? uri,
5459                optional DOMString? mime, optional DOMString? category,
5460                optional <ref>ApplicationControlData</ref>[]? data)]
5461   interface ApplicationControl {
5462
5463     attribute DOMString operation;
5464
5465     attribute DOMString? uri;
5466
5467     attribute DOMString? mime;
5468
5469     attribute DOMString? category;
5470
5471     attribute <ref>ApplicationControlData</ref>[] data;
5472
5473   };
5474
5475   [NoInterfaceObject] interface RequestedApplicationControl {
5476
5477     readonly attribute <ref>ApplicationControl</ref> appControl;
5478
5479     readonly attribute <ref>ApplicationId</ref> callerAppId;
5480
5481     void replyResult(optional <ref>ApplicationControlData</ref>[]? data) raises(<ref>WebAPIException</ref>);
5482
5483     void replyFailure() raises(<ref>WebAPIException</ref>);
5484
5485   };
5486
5487   
5488   [NoInterfaceObject] interface ApplicationCertificate {
5489
5490     readonly attribute DOMString type;
5491
5492     readonly attribute DOMString value;
5493
5494   };
5495   
5496
5497   [NoInterfaceObject] interface ApplicationMetaData {
5498
5499     readonly attribute DOMString key;
5500
5501     readonly attribute DOMString value;
5502
5503   };
5504
5505
5506   [Callback=FunctionOnly, NoInterfaceObject] interface ApplicationInformationArraySuccessCallback {
5507     void onsuccess(<ref>ApplicationInformation</ref>[] informationArray);
5508   };
5509
5510   [Callback=FunctionOnly, NoInterfaceObject] interface FindAppControlSuccessCallback {
5511     void onsuccess(<ref>ApplicationInformation</ref>[] informationArray, <ref>ApplicationControl</ref> appControl);
5512   };
5513
5514   [Callback=FunctionOnly, NoInterfaceObject] interface ApplicationContextArraySuccessCallback {
5515     void onsuccess(<ref>ApplicationContext</ref>[] contexts);
5516   };
5517
5518   [Callback, NoInterfaceObject] interface ApplicationControlDataArrayReplyCallback {
5519     void onsuccess(optional <ref>ApplicationControlData</ref>[]? data);
5520
5521     void onfailure();
5522   };
5523
5524   [Callback, NoInterfaceObject] interface ApplicationInformationEventCallback {
5525     void oninstalled(<ref>ApplicationInformation</ref> info);
5526
5527     void onupdated(<ref>ApplicationInformation</ref> info);
5528
5529     void onuninstalled(<ref>ApplicationId</ref> id);
5530   };
5531
5532 };</webidl>
5533     <descriptive>
5534         <brief>
5535  This API provides a way to launch other applications and access
5536 application management.
5537         </brief>
5538        <description>
5539         <p>
5540 The <em>ApplicationManager</em> interface also provides methods to launch other applications
5541 explicitly and implicitly through the <em>ApplicationControl</em> interface.
5542 The <em>ApplicationControl</em> interface consists of an operation, URI, and MIME type
5543 and also describes an action to be performed by other
5544 applications and can carry the result from the subsequent application.
5545 The <em>ApplicationManager</em> interface also provides methods to handle the application
5546 lifecycle, to access the installed applications on the device, and to let
5547 an application be notified of a change in the application list.
5548         </p>
5549         <p>
5550 The <em>Application</em> interface defines the current application's information and
5551 the basic operations for current application such as exit or hide.
5552         </p>
5553         <p>
5554 For more information on the Application features, see <a href="../../org.tizen.web.appprogramming/html/guide/app_guide/application.htm">Application Guide</a>.
5555         </p>
5556        </description>
5557         <version>
5558  1.0
5559         </version>
5560     </descriptive>
5561     <Typedef name="ApplicationId" id="::Application::ApplicationId">
5562       <webidl>  typedef DOMString ApplicationId;</webidl>
5563       <descriptive>
5564           <brief>
5565  The unique ID for an installed application.
5566           </brief>
5567           <version>
5568  1.0
5569           </version>
5570       </descriptive>
5571       <Type type="DOMString"/>
5572     </Typedef>
5573     <Typedef name="ApplicationContextId" id="::Application::ApplicationContextId">
5574       <webidl>  typedef DOMString ApplicationContextId;</webidl>
5575       <descriptive>
5576           <brief>
5577  The unique ID for a running application.
5578           </brief>
5579           <version>
5580  1.0
5581           </version>
5582       </descriptive>
5583       <Type type="DOMString"/>
5584     </Typedef>
5585     <Interface name="ApplicationManagerObject" id="::Application::ApplicationManagerObject">
5586       <webidl>  [NoInterfaceObject] interface ApplicationManagerObject {
5587     readonly attribute <ref>ApplicationManager</ref> application;
5588   };</webidl>
5589       <descriptive>
5590           <brief>
5591  This interface defines what is instantiated by the <em>Tizen </em>object by the Tizen Platform.
5592           </brief>
5593          <description>
5594           <p>
5595 There will be a <em>tizen.application </em>object that allows access to Application API functionality.
5596           </p>
5597          </description>
5598           <version>
5599  2.0
5600           </version>
5601       </descriptive>
5602       <ExtendedAttributeList>
5603         <ExtendedAttribute name="NoInterfaceObject">
5604           <webidl>NoInterfaceObject</webidl>
5605         </ExtendedAttribute>
5606       </ExtendedAttributeList>
5607       <Attribute readonly="readonly" name="application" id="::Application::ApplicationManagerObject::application">
5608         <webidl>    readonly attribute <ref>ApplicationManager</ref> application;</webidl>
5609         <Type name="ApplicationManager"/>
5610       </Attribute>
5611     </Interface>
5612     <Implements name1="Tizen" name2="ApplicationManagerObject">
5613       <webidl>  <ref>Tizen</ref> implements <ref>ApplicationManagerObject</ref>;</webidl>
5614     </Implements>
5615     <Interface name="ApplicationManager" id="::Application::ApplicationManager">
5616       <webidl>  [NoInterfaceObject] interface ApplicationManager {
5617
5618     <ref>Application</ref> getCurrentApplication() raises(<ref>WebAPIException</ref>);
5619         
5620     void kill(<ref>ApplicationContextId</ref> contextId,
5621               optional <ref>SuccessCallback</ref>? successCallback,
5622               optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
5623         
5624     void launch(<ref>ApplicationId</ref> id,
5625                 optional <ref>SuccessCallback</ref>? successCallback,
5626                 optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
5627
5628     void launchAppControl(<ref>ApplicationControl</ref> appControl,
5629                           optional <ref>ApplicationId</ref>? id,
5630                           optional <ref>SuccessCallback</ref>? successCallback,
5631                           optional <ref>ErrorCallback</ref>? errorCallback,
5632                           optional <ref>ApplicationControlDataArrayReplyCallback</ref>? replyCallback) raises(<ref>WebAPIException</ref>);
5633
5634     void findAppControl(<ref>ApplicationControl</ref> appControl,
5635                         <ref>FindAppControlSuccessCallback</ref> successCallback,
5636                         optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
5637
5638     void getAppsContext(<ref>ApplicationContextArraySuccessCallback</ref> successCallback,
5639                         optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
5640
5641     <ref>ApplicationContext</ref> getAppContext(optional <ref>ApplicationContextId</ref>? contextId) raises(<ref>WebAPIException</ref>);
5642
5643     void getAppsInfo(<ref>ApplicationInformationArraySuccessCallback</ref> successCallback,
5644                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
5645
5646     <ref>ApplicationInformation</ref> getAppInfo(optional <ref>ApplicationId</ref>? id) raises(<ref>WebAPIException</ref>);
5647
5648     <ref>ApplicationCertificate</ref>[] getAppCerts(optional <ref>ApplicationId</ref>? id) raises(<ref>WebAPIException</ref>);
5649
5650     DOMString getAppSharedURI(optional <ref>ApplicationId</ref>? id) raises(<ref>WebAPIException</ref>);
5651
5652     <ref>ApplicationMetaData</ref>[] getAppMetaData(optional <ref>ApplicationId</ref>? id) raises(<ref>WebAPIException</ref>);
5653
5654     long addAppInfoEventListener(<ref>ApplicationInformationEventCallback</ref> eventCallback) raises(<ref>WebAPIException</ref>);
5655
5656     void removeAppInfoEventListener(long watchId) raises(<ref>WebAPIException</ref>);
5657
5658   };</webidl>
5659       <descriptive>
5660           <brief>
5661  This section defines the application manager interface.
5662           </brief>
5663           <version>
5664  2.0
5665           </version>
5666       </descriptive>
5667       <ExtendedAttributeList>
5668         <ExtendedAttribute name="NoInterfaceObject">
5669           <webidl>NoInterfaceObject</webidl>
5670         </ExtendedAttribute>
5671       </ExtendedAttributeList>
5672       <Operation name="getCurrentApplication" id="::Application::ApplicationManager::getCurrentApplication">
5673         <webidl>    <ref>Application</ref> getCurrentApplication() raises(<ref>WebAPIException</ref>);</webidl>
5674         <descriptive>
5675             <brief>
5676  Gets the <em>Application </em>object defining the current application.
5677             </brief>
5678             <version>
5679  2.0
5680             </version>
5681             <Code> var app = tizen.application.getCurrentApplication();
5682  console.log(&quot;Current application's app id is &quot; + app.appInfo.id);
5683  </Code>
5684         </descriptive>
5685         <Type name="Application">
5686           <descriptive>
5687               <description><p>
5688  Application The data structure that defines current application.
5689               </p></description>
5690           </descriptive>
5691         </Type>
5692         <ArgumentList/>
5693         <Raises>
5694           <RaiseException name="WebAPIException">
5695             <descriptive>
5696                 <description><p>
5697  with error type UnknownError, if the application cannot be retrieved because of an unknown error.
5698                 </p></description>
5699             </descriptive>
5700           </RaiseException>
5701         </Raises>
5702       </Operation>
5703       <Operation name="kill" id="::Application::ApplicationManager::kill">
5704         <webidl>    void kill(<ref>ApplicationContextId</ref> contextId,
5705               optional <ref>SuccessCallback</ref>? successCallback,
5706               optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
5707         <descriptive>
5708             <brief>
5709  Kills an application with the specified application context ID.
5710             </brief>
5711            <description>
5712             <p>
5713 The <em>ErrorCallback() </em>is launched with these error types:
5714             </p>
5715             <ul>
5716               <li>
5717 NotFoundError - If the context is not found with specified context ID.              </li>
5718               <li>
5719 InvalidValuesError - If any of the input parameters contain an invalid value
5720 or if the specified context ID matches the context ID of the calling application.              </li>
5721               <li>
5722 UnknownError - If any other error occurs.              </li>
5723             </ul>
5724            </description>
5725             <version>
5726  2.0
5727             </version>
5728             <privilegelevel>
5729  partner
5730             </privilegelevel>
5731             <privilege>
5732  http://tizen.org/privilege/appmanager.kill
5733             </privilege>
5734             <Code> function onKillSuccess() {
5735      console.log(&quot;Application terminated successfully&quot;);
5736  }
5737
5738  function onRunningAppsContext(contexts) {
5739     // let's assume that the application &quot;targetApp0.main&quot; has been installed.
5740     var targetId = &quot;targetApp0.main&quot;;
5741
5742     for (var i = 0; i &#60; contexts.length; i++) {
5743         if (contexts[i].appId == targetId) {
5744             tizen.application.kill(contexts[i].id, onKillSuccess);
5745         }
5746     }
5747  }
5748
5749  tizen.application.getAppsContext(onRunningAppsContext);
5750  </Code>
5751         </descriptive>
5752         <Type type="void"/>
5753         <ArgumentList>
5754           <Argument name="contextId">
5755             <descriptive>
5756                 <description><p>
5757  The identifier of the application to kill
5758                 </p></description>
5759             </descriptive>
5760             <Type name="ApplicationContextId"/>
5761           </Argument>
5762           <Argument optional="optional" name="successCallback">
5763             <descriptive>
5764                 <description><p>
5765  The method to invoke when an application is killed successfully.
5766                 </p></description>
5767             </descriptive>
5768             <Type name="SuccessCallback" nullable="nullable"/>
5769           </Argument>
5770           <Argument optional="optional" name="errorCallback">
5771             <descriptive>
5772                 <description><p>
5773  The method to invoke when an error occurs.
5774                 </p></description>
5775             </descriptive>
5776             <Type name="ErrorCallback" nullable="nullable"/>
5777           </Argument>
5778         </ArgumentList>
5779         <Raises>
5780           <RaiseException name="WebAPIException">
5781             <descriptive>
5782                 <description><p>
5783  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
5784                 </p></description>
5785                 <description><p>
5786  with error type SecurityError, if the application does not have the privilege to call this method.
5787                 </p></description>
5788             </descriptive>
5789           </RaiseException>
5790         </Raises>
5791       </Operation>
5792       <Operation name="launch" id="::Application::ApplicationManager::launch">
5793         <webidl>    void launch(<ref>ApplicationId</ref> id,
5794                 optional <ref>SuccessCallback</ref>? successCallback,
5795                 optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
5796         <descriptive>
5797             <brief>
5798  Launches an application with the given application ID.
5799             </brief>
5800            <description>
5801             <p>
5802 The <em>ErrorCallback()</em> is launched with these error types:
5803             </p>
5804             <ul>
5805               <li>
5806 NotFoundError - If the application is not found with given ID.              </li>
5807               <li>
5808 InvalidValuesError - If any of the input parameters contain an invalid value.              </li>
5809               <li>
5810 UnknownError - If any other error occurs.              </li>
5811             </ul>
5812            </description>
5813             <version>
5814  2.0
5815             </version>
5816             <privilegelevel>
5817  public
5818             </privilegelevel>
5819             <privilege>
5820  http://tizen.org/privilege/application.launch
5821             </privilege>
5822             <Code> function onsuccess() {
5823      console.log(&quot;The application has launched successfully&quot;);
5824  }
5825
5826  // let's assume that application &quot;targetApp0.main&quot; has been installed
5827  tizen.application.launch(&quot;targetApp0.main&quot;, onsuccess);
5828  </Code>
5829         </descriptive>
5830         <Type type="void"/>
5831         <ArgumentList>
5832           <Argument name="id">
5833             <descriptive>
5834                 <description><p>
5835  A unique string representing application ID.
5836                 </p></description>
5837             </descriptive>
5838             <Type name="ApplicationId"/>
5839           </Argument>
5840           <Argument optional="optional" name="successCallback">
5841             <descriptive>
5842                 <description><p>
5843  The method to call when the invocation ends successfully.
5844                 </p></description>
5845             </descriptive>
5846             <Type name="SuccessCallback" nullable="nullable"/>
5847           </Argument>
5848           <Argument optional="optional" name="errorCallback">
5849             <descriptive>
5850                 <description><p>
5851  The method to call when an error occurs.
5852                 </p></description>
5853             </descriptive>
5854             <Type name="ErrorCallback" nullable="nullable"/>
5855           </Argument>
5856         </ArgumentList>
5857         <Raises>
5858           <RaiseException name="WebAPIException">
5859             <descriptive>
5860                 <description><p>
5861  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
5862                 </p></description>
5863                 <description><p>
5864  with error type SecurityError, if the application does not have the privilege to call this method.
5865                 </p></description>
5866             </descriptive>
5867           </RaiseException>
5868         </Raises>
5869       </Operation>
5870       <Operation name="launchAppControl" id="::Application::ApplicationManager::launchAppControl">
5871         <webidl>    void launchAppControl(<ref>ApplicationControl</ref> appControl,
5872                           optional <ref>ApplicationId</ref>? id,
5873                           optional <ref>SuccessCallback</ref>? successCallback,
5874                           optional <ref>ErrorCallback</ref>? errorCallback,
5875                           optional <ref>ApplicationControlDataArrayReplyCallback</ref>? replyCallback) raises(<ref>WebAPIException</ref>);</webidl>
5876         <descriptive>
5877             <brief>
5878  Launches an application with the specified application control.
5879             </brief>
5880            <description>
5881             <p>
5882 An application can launch other applications with the application control,
5883 and get back the results from the launched applications.
5884             </p>
5885             <p>
5886 The application control consists of an operation, URI, and MIME type, and describes
5887 the request to be performed by the newly launched application. The
5888 application control is passed to the <em>launchAppControl()</em> method to launch an
5889 application. The system tries to find the proper application
5890 to perform the requested application control, then launches the selected application.
5891             </p>
5892             <p>
5893 The application control request is passed to the newly launched application
5894 and it can be accessed by <em>getRequestedAppControl() </em>method. The passed
5895 application control contains the reason the application was launched and
5896 information about what the application is doing. The launched application
5897 can send a result to the caller application with the <em>replyResult() </em>method of
5898 <em>RequestedApplicationControl</em> interface.
5899             </p>
5900             <p>
5901 The <em>ErrorCallback() </em>is launched with these error types:
5902             </p>
5903             <ul>
5904               <li>
5905 NotFoundError - If system cannot find the application that matches the specified application control.              </li>
5906               <li>
5907 InvalidValuesError - If any of the input parameters contain an invalid value.              </li>
5908               <li>
5909 UnknownError: If any other error occurs.              </li>
5910             </ul>
5911            </description>
5912             <version>
5913  2.0
5914             </version>
5915             <privilegelevel>
5916  public
5917             </privilegelevel>
5918             <privilege>
5919  http://tizen.org/privilege/application.launch
5920             </privilege>
5921             <Code> var appControl = new tizen.ApplicationControl(
5922      &quot;http://tizen.org/appcontrol/operation/pick&quot;,
5923      null,
5924      &quot;image/jpeg&quot;,
5925      null);
5926
5927  var appControlReplyCallback = {
5928      // callee sent a reply
5929      onsuccess: function(data) {
5930          for (var i = 0; i &#60; data.length; i++) {
5931              if (data[i].key == &quot;http://tizen.org/appcontrol/data/selected&quot;) {
5932                  console.log('Selected image is ' + data[i].value[0]);
5933              }
5934          }
5935      },
5936      // callee returned failure
5937      onfailure: function() {
5938          console.log('The launch application control failed');
5939      }
5940  }
5941
5942  tizen.application.launchAppControl(
5943      appControl,
5944      null,
5945      function() {console.log(&quot;launch application control succeed&quot;); },
5946      function(e) {console.log(&quot;launch application control failed. reason: &quot; + e.message); },
5947      appControlReplyCallback );
5948  </Code>
5949         </descriptive>
5950         <Type type="void"/>
5951         <ArgumentList>
5952           <Argument name="appControl">
5953             <descriptive>
5954                 <description><p>
5955  The data structure describing application control details.
5956                 </p></description>
5957             </descriptive>
5958             <Type name="ApplicationControl"/>
5959           </Argument>
5960           <Argument optional="optional" name="id">
5961             <descriptive>
5962                 <description><p>
5963  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.
5964                 </p></description>
5965             </descriptive>
5966             <Type name="ApplicationId" nullable="nullable"/>
5967           </Argument>
5968           <Argument optional="optional" name="successCallback">
5969             <descriptive>
5970                 <description><p>
5971  The method to call when the invocation ends successfully.
5972                 </p></description>
5973             </descriptive>
5974             <Type name="SuccessCallback" nullable="nullable"/>
5975           </Argument>
5976           <Argument optional="optional" name="errorCallback">
5977             <descriptive>
5978                 <description><p>
5979  The method to invoke when an error occurs.
5980                 </p></description>
5981             </descriptive>
5982             <Type name="ErrorCallback" nullable="nullable"/>
5983           </Argument>
5984           <Argument optional="optional" name="replyCallback">
5985             <descriptive>
5986                 <description><p>
5987  The method to invoke when the application gets back results from the launched application.
5988                 </p></description>
5989             </descriptive>
5990             <Type name="ApplicationControlDataArrayReplyCallback" nullable="nullable"/>
5991           </Argument>
5992         </ArgumentList>
5993         <Raises>
5994           <RaiseException name="WebAPIException">
5995             <descriptive>
5996                 <description><p>
5997  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
5998                 </p></description>
5999                 <description><p>
6000  with error type SecurityError, if the application does not have the privilege to call this method.
6001                 </p></description>
6002             </descriptive>
6003           </RaiseException>
6004         </Raises>
6005       </Operation>
6006       <Operation name="findAppControl" id="::Application::ApplicationManager::findAppControl">
6007         <webidl>    void findAppControl(<ref>ApplicationControl</ref> appControl,
6008                         <ref>FindAppControlSuccessCallback</ref> successCallback,
6009                         optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
6010         <descriptive>
6011             <brief>
6012  Finds application information can be launched with the given application control.
6013             </brief>
6014            <description>
6015             <p>
6016 An application can get a list of other applications can be launched with the application control.
6017             </p>
6018             <p>
6019 The <em>ErrorCallback()<em> is launched with these error types:
6020 </em></em>            </p>
6021             <ul>
6022               <li>
6023 InvalidValuesError - If any of the input parameters contain an invalid value.              </li>
6024               <li>
6025 UnknownError - If any other error occurs.              </li>
6026             </ul>
6027            </description>
6028             <version>
6029  2.0
6030             </version>
6031             <Code> var appControl = new tizen.ApplicationControl(
6032      &quot;http://tizen.org/appcontrol/operation/pick&quot;,
6033      null,
6034      &quot;image/jpeg&quot;,
6035      null);
6036
6037  function successCB(appInfos, appControl)
6038  {
6039      // em>appControl/em> is same object with the value passed as first parameter to em>findAppControl()/em>
6040      var appControlReplyCallback = {
6041          // callee sent a reply
6042          onsuccess: function(data) {
6043              for (var i = 0; i &#60; data.length; i++) {
6044                  if (data[i].key == &quot;http://tizen.org/appcontrol/data/selected&quot;) {
6045                      console.log('Selected image is ' + data[i].value[0]);
6046                  }
6047              }
6048          },
6049          // callee returned failure
6050          onfailure: function() {
6051              console.log('The launch application control failed');
6052          }
6053      }
6054
6055      var appId = appInfos[0].id; // select first app's id
6056
6057      tizen.application.launchAppControl(
6058          appControl, 
6059          appId,
6060          function() {console.log(&quot;launch application control succeed&quot;); },
6061         function(e) {console.log(&quot;launch application control failed. reason: &quot; + e.message); },
6062         appControlReplyCallback );
6063  }
6064
6065  tizen.application.findAppControl(appControl, successCB);
6066  </Code>
6067         </descriptive>
6068         <Type type="void"/>
6069         <ArgumentList>
6070           <Argument name="appControl">
6071             <descriptive>
6072                 <description><p>
6073  A data structure describing application control details.
6074                 </p></description>
6075             </descriptive>
6076             <Type name="ApplicationControl"/>
6077           </Argument>
6078           <Argument name="successCallback">
6079             <descriptive>
6080                 <description><p>
6081  The method to call that returns a list of application information.
6082                 </p></description>
6083             </descriptive>
6084             <Type name="FindAppControlSuccessCallback"/>
6085           </Argument>
6086           <Argument optional="optional" name="errorCallback">
6087             <descriptive>
6088                 <description><p>
6089  The method to call when an error occurs.
6090                 </p></description>
6091             </descriptive>
6092             <Type name="ErrorCallback" nullable="nullable"/>
6093           </Argument>
6094         </ArgumentList>
6095         <Raises>
6096           <RaiseException name="WebAPIException">
6097             <descriptive>
6098                 <description><p>
6099  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
6100                 </p></description>
6101             </descriptive>
6102           </RaiseException>
6103         </Raises>
6104       </Operation>
6105       <Operation name="getAppsContext" id="::Application::ApplicationManager::getAppsContext">
6106         <webidl>    void getAppsContext(<ref>ApplicationContextArraySuccessCallback</ref> successCallback,
6107                         optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
6108         <descriptive>
6109             <brief>
6110  Gets a list of application contexts for applications that are currently running on a device.
6111 The information contained for each application corresponds to the application state at the time when the list was generated.
6112             </brief>
6113            <description>
6114             <p>
6115 The <em>errorCallback()</em> is launched with this error type:
6116             </p>
6117             <ul>
6118               <li>
6119 UnknownError - If an unknown error occurs.              </li>
6120             </ul>
6121            </description>
6122             <version>
6123  2.0
6124             </version>
6125             <Code> function onRunningAppsContext(contexts) {
6126      for (var i = 0; i &#60; contexts.length; i++)
6127          console.log(&quot;ID : &quot; + contexts[i].id);
6128  }
6129
6130  tizen.application.getAppsContext(onRunningAppsContext);
6131  </Code>
6132         </descriptive>
6133         <Type type="void"/>
6134         <ArgumentList>
6135           <Argument name="successCallback">
6136             <descriptive>
6137                 <description><p>
6138  The method to call when the invocation ends successfully.
6139                 </p></description>
6140             </descriptive>
6141             <Type name="ApplicationContextArraySuccessCallback"/>
6142           </Argument>
6143           <Argument optional="optional" name="errorCallback">
6144             <descriptive>
6145                 <description><p>
6146  The method to call when an error occurs.
6147                 </p></description>
6148             </descriptive>
6149             <Type name="ErrorCallback" nullable="nullable"/>
6150           </Argument>
6151         </ArgumentList>
6152         <Raises>
6153           <RaiseException name="WebAPIException">
6154             <descriptive>
6155                 <description><p>
6156  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
6157                 </p></description>
6158             </descriptive>
6159           </RaiseException>
6160         </Raises>
6161       </Operation>
6162       <Operation name="getAppContext" id="::Application::ApplicationManager::getAppContext">
6163         <webidl>    <ref>ApplicationContext</ref> getAppContext(optional <ref>ApplicationContextId</ref>? contextId) raises(<ref>WebAPIException</ref>);</webidl>
6164         <descriptive>
6165             <brief>
6166  Gets the application context for the specified application context ID.
6167 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.
6168 The list of running applications and their application IDs is obtained with <em>getAppsContext()</em>.
6169             </brief>
6170             <version>
6171  2.0
6172             </version>
6173             <Code> var appContext = tizen.application.getAppContext(null);
6174  console.log(&quot;Application context retrieved for app &quot; + appContext.appId);
6175  </Code>
6176         </descriptive>
6177         <Type name="ApplicationContext">
6178           <descriptive>
6179               <description><p>
6180  ApplicationContext A data structure that lists running application details.
6181               </p></description>
6182           </descriptive>
6183         </Type>
6184         <ArgumentList>
6185           <Argument optional="optional" name="contextId">
6186             <descriptive>
6187                 <description><p>
6188  A string representing an application context ID. If the ID is not provided, the application context of the calling application will be returned.
6189                 </p></description>
6190             </descriptive>
6191             <Type name="ApplicationContextId" nullable="nullable"/>
6192           </Argument>
6193         </ArgumentList>
6194         <Raises>
6195           <RaiseException name="WebAPIException">
6196             <descriptive>
6197                 <description><p>
6198  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
6199                 </p></description>
6200                 <description><p>
6201  with error type NotFoundError, if the application context is not found with provided ID.
6202                 </p></description>
6203                 <description><p>
6204  with error type UnknownError, if the application context cannot be retrieved because of an unknown error.
6205                 </p></description>
6206             </descriptive>
6207           </RaiseException>
6208         </Raises>
6209       </Operation>
6210       <Operation name="getAppsInfo" id="::Application::ApplicationManager::getAppsInfo">
6211         <webidl>    void getAppsInfo(<ref>ApplicationInformationArraySuccessCallback</ref> successCallback,
6212                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
6213         <descriptive>
6214             <brief>
6215  Gets the list of installed application's information on a device.
6216 The information contained on each application corresponds to the application state at the moment when the list was generated.
6217             </brief>
6218            <description>
6219             <p>
6220 The <em>errorCallback()</em> is launched with this error type:
6221             </p>
6222             <ul>
6223               <li>
6224 UnknownError - If an unknown error occurs.              </li>
6225             </ul>
6226            </description>
6227             <version>
6228  2.0
6229             </version>
6230             <Code> function onListInstalledApps(applications) {
6231      for (var i = 0; i &#60; applications.length; i++)
6232          console.log(&quot;ID : &quot; + applications[i].id);
6233  }
6234
6235  tizen.application.getAppsInfo(onListInstalledApps);
6236  </Code>
6237         </descriptive>
6238         <Type type="void"/>
6239         <ArgumentList>
6240           <Argument name="successCallback">
6241             <descriptive>
6242                 <description><p>
6243  The method to call when the invocation ends successfully.
6244                 </p></description>
6245             </descriptive>
6246             <Type name="ApplicationInformationArraySuccessCallback"/>
6247           </Argument>
6248           <Argument optional="optional" name="errorCallback">
6249             <descriptive>
6250                 <description><p>
6251  The method to call when an error occurs.
6252                 </p></description>
6253             </descriptive>
6254             <Type name="ErrorCallback" nullable="nullable"/>
6255           </Argument>
6256         </ArgumentList>
6257         <Raises>
6258           <RaiseException name="WebAPIException">
6259             <descriptive>
6260                 <description><p>
6261  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
6262                 </p></description>
6263             </descriptive>
6264           </RaiseException>
6265         </Raises>
6266       </Operation>
6267       <Operation name="getAppInfo" id="::Application::ApplicationManager::getAppInfo">
6268         <webidl>    <ref>ApplicationInformation</ref> getAppInfo(optional <ref>ApplicationId</ref>? id) raises(<ref>WebAPIException</ref>);</webidl>
6269         <descriptive>
6270             <brief>
6271  Gets application information for a specified application ID.
6272             </brief>
6273            <description>
6274             <p>
6275 If the ID is set to <var>null</var> or not set at all, it returns application information for the current application.
6276 The list of installed applications and their application IDs is obtained with <em>getAppsInfo()</em>.
6277             </p>
6278            </description>
6279             <version>
6280  2.0
6281             </version>
6282             <Code> var appInfo = tizen.application.getAppInfo(null);
6283  console.log(&quot;Current application name : &quot; + appInfo.name);
6284  </Code>
6285         </descriptive>
6286         <Type name="ApplicationInformation">
6287           <descriptive>
6288               <description><p>
6289  ApplicationInformation The information of an application.
6290               </p></description>
6291           </descriptive>
6292         </Type>
6293         <ArgumentList>
6294           <Argument optional="optional" name="id">
6295             <descriptive>
6296                 <description><p>
6297  A string representing application ID. If the ID is not provided, the application information of the calling application will be returned.
6298                 </p></description>
6299             </descriptive>
6300             <Type name="ApplicationId" nullable="nullable"/>
6301           </Argument>
6302         </ArgumentList>
6303         <Raises>
6304           <RaiseException name="WebAPIException">
6305             <descriptive>
6306                 <description><p>
6307  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
6308                 </p></description>
6309                 <description><p>
6310  with error type NotFoundError, if the application is not found with specified ID.
6311                 </p></description>
6312                 <description><p>
6313  with error type UnknownError, if the application cannot be retrieved because of an unknown error.
6314                 </p></description>
6315             </descriptive>
6316           </RaiseException>
6317         </Raises>
6318       </Operation>
6319       <Operation name="getAppCerts" id="::Application::ApplicationManager::getAppCerts">
6320         <webidl>    <ref>ApplicationCertificate</ref>[] getAppCerts(optional <ref>ApplicationId</ref>? id) raises(<ref>WebAPIException</ref>);</webidl>
6321         <descriptive>
6322             <brief>
6323  Gets application certificates for a specified application ID.
6324             </brief>
6325            <description>
6326             <p>
6327 If the ID is set to <var>null</var> or not set at all, it returns application certificates for the current application.
6328             </p>
6329             <p>
6330 The certificate types are listed below
6331             </p>
6332             <ul>
6333               <li>
6334  AUTHOR_ROOT - Author Root Certificate               </li>
6335               <li>
6336  AUTHOR_INTERMEDIATE - Author Intermediate Certificate               </li>
6337               <li>
6338  AUTHOR_SIGNER - Author Signer Certificate               </li>
6339               <li>
6340  DISTRIBUTOR_ROOT - Distributor Root Certificate               </li>
6341               <li>
6342  DISTRIBUTOR_INTERMEDIATE - Distributor Intermediate Certificate               </li>
6343               <li>
6344  DISTRIBUTOR_SIGNER - Distributor Signer Certificate               </li>
6345               <li>
6346  DISTRIBUTOR2_ROOT - Distributor2 Root Certificate               </li>
6347               <li>
6348  DISTRIBUTOR2_INTERMEDIATE - Distributor2 Intermediate Certificate               </li>
6349               <li>
6350  DISTRIBUTOR2_SIGNER - Distributor2 Signer Certificate               </li>
6351             </ul>
6352            </description>
6353             <version>
6354  2.0
6355             </version>
6356             <privilegelevel>
6357  partner
6358             </privilegelevel>
6359             <privilege>
6360  http://tizen.org/privilege/appmanager.certificate
6361             </privilege>
6362             <Code> var appCerts = tizen.application.getAppCerts(null);
6363
6364  for (var i = 0; i &#60; appCerts.length; i++) {
6365     console.log(&quot;#&quot; + i + &quot; type:&quot; + appCerts[i].type);
6366     console.log(&quot;#&quot; + i + &quot; value:&quot; + appCerts[i].value);
6367  }
6368  </Code>
6369         </descriptive>
6370         <Type type="array">
6371           <descriptive>
6372               <description><p>
6373  ApplicationCertificate[] Array of certificate information of a specified application
6374               </p></description>
6375           </descriptive>
6376           <Type name="ApplicationCertificate"/>
6377         </Type>
6378         <ArgumentList>
6379           <Argument optional="optional" name="id">
6380             <descriptive>
6381                 <description><p>
6382  A string representing application ID. If the ID is not provided, the application certificate of the calling application will be returned.
6383                 </p></description>
6384             </descriptive>
6385             <Type name="ApplicationId" nullable="nullable"/>
6386           </Argument>
6387         </ArgumentList>
6388         <Raises>
6389           <RaiseException name="WebAPIException">
6390             <descriptive>
6391                 <description><p>
6392  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
6393                 </p></description>
6394                 <description><p>
6395  with error type SecurityError, if the application does not have the privilege to call this method.
6396                 </p></description>
6397                 <description><p>
6398  with error type NotFoundError, if the application is not found with specified ID.
6399                 </p></description>
6400                 <description><p>
6401  with error type UnknownError, if the application cannot be retrieved because of an unknown error.
6402                 </p></description>
6403             </descriptive>
6404           </RaiseException>
6405         </Raises>
6406       </Operation>
6407       <Operation name="getAppSharedURI" id="::Application::ApplicationManager::getAppSharedURI">
6408         <webidl>    DOMString getAppSharedURI(optional <ref>ApplicationId</ref>? id) raises(<ref>WebAPIException</ref>);</webidl>
6409         <descriptive>
6410             <brief>
6411  Gets URI of read-only shared directory of application for a specified application ID.
6412             </brief>
6413            <description>
6414             <p>
6415 The shared directory is used to export data to other applications.
6416 If the ID is set to <var>null</var> or not set at all, it returns shared directory URI for the current application.
6417             </p>
6418            </description>
6419             <version>
6420  2.1
6421             </version>
6422             <Code> var sharedDir = tizen.application.getAppSharedURI(null);
6423  console.log(&quot;shared directory : &quot; + sharedDir);
6424  </Code>
6425         </descriptive>
6426         <Type type="DOMString">
6427           <descriptive>
6428               <description><p>
6429  DOMString The shared directory URI of application
6430               </p></description>
6431           </descriptive>
6432         </Type>
6433         <ArgumentList>
6434           <Argument optional="optional" name="id">
6435             <descriptive>
6436                 <description><p>
6437  A string representing application ID. If the ID is not provided, the shared directory URI of the calling application will be returned.
6438                 </p></description>
6439             </descriptive>
6440             <Type name="ApplicationId" nullable="nullable"/>
6441           </Argument>
6442         </ArgumentList>
6443         <Raises>
6444           <RaiseException name="WebAPIException">
6445             <descriptive>
6446                 <description><p>
6447  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
6448                 </p></description>
6449                 <description><p>
6450  with error type NotFoundError, if the application is not found with specified ID.
6451                 </p></description>
6452                 <description><p>
6453  with error type UnknownError, if the application cannot be retrieved because of an unknown error.
6454                 </p></description>
6455             </descriptive>
6456           </RaiseException>
6457         </Raises>
6458       </Operation>
6459       <Operation name="getAppMetaData" id="::Application::ApplicationManager::getAppMetaData">
6460         <webidl>    <ref>ApplicationMetaData</ref>[] getAppMetaData(optional <ref>ApplicationId</ref>? id) raises(<ref>WebAPIException</ref>);</webidl>
6461         <descriptive>
6462             <brief>
6463  Gets application meta data array for a specified application ID.
6464             </brief>
6465            <description>
6466             <p>
6467 If the ID is set to <var>null</var> or not set at all, it returns application meta data array for the current application.
6468             </p>
6469            </description>
6470             <version>
6471  2.2
6472             </version>
6473             <privilegelevel>
6474  public
6475             </privilegelevel>
6476             <privilege>
6477  http://tizen.org/privilege/application.info
6478             </privilege>
6479             <Code> var metaDataArray = tizen.application.getAppMetaData(null);
6480  console.log(&quot;size of metadata : &quot; + metaDataArray.length);
6481
6482  </Code>
6483         </descriptive>
6484         <Type type="array">
6485           <descriptive>
6486               <description><p>
6487  ApplicationMetaData[] Array of meta data of a specified application. If there are no meta data for a specified application, 
6488 empty array will be returned
6489               </p></description>
6490           </descriptive>
6491           <Type name="ApplicationMetaData"/>
6492         </Type>
6493         <ArgumentList>
6494           <Argument optional="optional" name="id">
6495             <descriptive>
6496                 <description><p>
6497  A string representing application ID. If the ID is not provided, the application metadata array of the calling application will be returned.
6498                 </p></description>
6499             </descriptive>
6500             <Type name="ApplicationId" nullable="nullable"/>
6501           </Argument>
6502         </ArgumentList>
6503         <Raises>
6504           <RaiseException name="WebAPIException">
6505             <descriptive>
6506                 <description><p>
6507  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
6508                 </p></description>
6509                 <description><p>
6510  with error type SecurityError, if the application does not have the privilege to call this method.
6511                 </p></description>
6512                 <description><p>
6513  with error type NotFoundError, if the application is not found with specified ID.
6514                 </p></description>
6515                 <description><p>
6516  with error type UnknownError, if the application cannot be retrieved because of an unknown error.
6517                 </p></description>
6518             </descriptive>
6519           </RaiseException>
6520         </Raises>
6521       </Operation>
6522       <Operation name="addAppInfoEventListener" id="::Application::ApplicationManager::addAppInfoEventListener">
6523         <webidl>    long addAppInfoEventListener(<ref>ApplicationInformationEventCallback</ref> eventCallback) raises(<ref>WebAPIException</ref>);</webidl>
6524         <descriptive>
6525             <brief>
6526  Adds a listener for receiving any notification for changes in the list of the installed applications
6527 on a device.
6528             </brief>
6529            <description>
6530             <p>
6531 It install a callback that is triggered every time a change occurs on
6532 the list of installed applications on a device. This change may
6533 be occurred by a new installation, uninstallation, or update of an application.
6534             </p>
6535             <p>
6536 When executed, the implementation must immediately return a listener
6537 ID that identifies the listener. After returning the ID, the change
6538 detection operation is started asynchronously.
6539             </p>
6540             <p>
6541 The <em>ApplicationInformationEventCallback </em>must be invoked every time a new
6542 application is installed, removed, or updated.
6543             </p>
6544             <p>
6545 The change detection must continue until the <em>removeAppInfoEventListener()</em> method is called
6546 with the corresponding listener identifier.
6547             </p>
6548            </description>
6549             <version>
6550  2.0
6551             </version>
6552             <Code> var appEventCallback = {
6553     oninstalled: function(appInfo) {
6554        console.log('The application ' + appInfo.name + ' is installed');
6555     },
6556     onupdated: function(appInfo) {
6557        console.log('The application ' + appInfo.name + ' is updated');
6558     },
6559     onuninstalled: function(appid) {
6560        console.log('The application ' + appid + ' is uninstalled');
6561     }
6562  };
6563  var watchId = tizen.application.addAppInfoEventListener(appEventCallback);
6564  </Code>
6565         </descriptive>
6566         <Type type="long">
6567           <descriptive>
6568               <description><p>
6569  long ID of the listener that can be used to remove the listener later.
6570               </p></description>
6571           </descriptive>
6572         </Type>
6573         <ArgumentList>
6574           <Argument name="eventCallback">
6575             <descriptive>
6576                 <description><p>
6577  The method to call when a change on the installed applications is made.
6578                 </p></description>
6579             </descriptive>
6580             <Type name="ApplicationInformationEventCallback"/>
6581           </Argument>
6582         </ArgumentList>
6583         <Raises>
6584           <RaiseException name="WebAPIException">
6585             <descriptive>
6586                 <description><p>
6587  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
6588                 </p></description>
6589                 <description><p>
6590  with error type UnknownError, if fails to add listener because of an unknown error.
6591                 </p></description>
6592             </descriptive>
6593           </RaiseException>
6594         </Raises>
6595       </Operation>
6596       <Operation name="removeAppInfoEventListener" id="::Application::ApplicationManager::removeAppInfoEventListener">
6597         <webidl>    void removeAppInfoEventListener(long watchId) raises(<ref>WebAPIException</ref>);</webidl>
6598         <descriptive>
6599             <brief>
6600  Removes the listener to stop receiving notifications for changes on the list of installed
6601 applications on a device.
6602             </brief>
6603             <version>
6604  2.0
6605             </version>
6606             <Code> tizen.application.removeAppInfoEventListener(watchId);
6607  </Code>
6608         </descriptive>
6609         <Type type="void"/>
6610         <ArgumentList>
6611           <Argument name="watchId">
6612             <descriptive>
6613                 <description><p>
6614  An ID that identifies the listener.
6615                 </p></description>
6616             </descriptive>
6617             <Type type="long"/>
6618           </Argument>
6619         </ArgumentList>
6620         <Raises>
6621           <RaiseException name="WebAPIException">
6622             <descriptive>
6623                 <description><p>
6624  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
6625                 </p></description>
6626                 <description><p>
6627  with error type InvalidValuesError, if any of the input parameters contain an invalid value.
6628                 </p></description>
6629                 <description><p>
6630  with error type NotFoundError, if the listener is not found with specified ID.
6631                 </p></description>
6632                 <description><p>
6633  with error type UnknownError, if fails to remove listener because of an unknown error.
6634                 </p></description>
6635             </descriptive>
6636           </RaiseException>
6637         </Raises>
6638       </Operation>
6639     </Interface>
6640     <Interface name="Application" id="::Application::Application">
6641       <webidl>  [NoInterfaceObject] interface Application {
6642
6643     readonly attribute <ref>ApplicationInformation</ref> appInfo;
6644
6645     readonly attribute <ref>ApplicationContextId</ref> contextId;
6646
6647     void exit() raises(<ref>WebAPIException</ref>);
6648
6649     void hide() raises(<ref>WebAPIException</ref>);
6650
6651     <ref>RequestedApplicationControl</ref> getRequestedAppControl() raises(<ref>WebAPIException</ref>);
6652   };</webidl>
6653       <descriptive>
6654           <brief>
6655  This interface defines the current application's information and 
6656 the basic operations (such as exit or hide) for the current application .
6657           </brief>
6658           <version>
6659  2.0
6660           </version>
6661       </descriptive>
6662       <ExtendedAttributeList>
6663         <ExtendedAttribute name="NoInterfaceObject">
6664           <webidl>NoInterfaceObject</webidl>
6665         </ExtendedAttribute>
6666       </ExtendedAttributeList>
6667       <Attribute readonly="readonly" name="appInfo" id="::Application::Application::appInfo">
6668         <webidl>    readonly attribute <ref>ApplicationInformation</ref> appInfo;</webidl>
6669         <descriptive>
6670             <brief>
6671  An attribute to store the application information for the current application.
6672             </brief>
6673             <version>
6674  2.0
6675             </version>
6676         </descriptive>
6677         <Type name="ApplicationInformation"/>
6678       </Attribute>
6679       <Attribute readonly="readonly" name="contextId" id="::Application::Application::contextId">
6680         <webidl>    readonly attribute <ref>ApplicationContextId</ref> contextId;</webidl>
6681         <descriptive>
6682             <brief>
6683  An attribute to store the ID of a running application.
6684             </brief>
6685             <version>
6686  2.0
6687             </version>
6688         </descriptive>
6689         <Type name="ApplicationContextId"/>
6690       </Attribute>
6691       <Operation name="exit" id="::Application::Application::exit">
6692         <webidl>    void exit() raises(<ref>WebAPIException</ref>);</webidl>
6693         <descriptive>
6694             <brief>
6695  Exits the current application.
6696             </brief>
6697             <version>
6698  2.0
6699             </version>
6700             <Code> var app = tizen.application.getCurrentApplication();
6701
6702  app.exit();
6703  </Code>
6704         </descriptive>
6705         <Type type="void"/>
6706         <ArgumentList/>
6707         <Raises>
6708           <RaiseException name="WebAPIException">
6709             <descriptive>
6710                 <description><p>
6711  with error type UnknownError, if any other error occurs.
6712                 </p></description>
6713             </descriptive>
6714           </RaiseException>
6715         </Raises>
6716       </Operation>
6717       <Operation name="hide" id="::Application::Application::hide">
6718         <webidl>    void hide() raises(<ref>WebAPIException</ref>);</webidl>
6719         <descriptive>
6720             <brief>
6721  Hides the current application.
6722             </brief>
6723             <version>
6724  2.0
6725             </version>
6726             <Code> var app = tizen.application.getCurrentApplication();
6727
6728  app.hide();
6729  </Code>
6730         </descriptive>
6731         <Type type="void"/>
6732         <ArgumentList/>
6733         <Raises>
6734           <RaiseException name="WebAPIException">
6735             <descriptive>
6736                 <description><p>
6737  with error type UnknownError, if any other error occurs.
6738                 </p></description>
6739             </descriptive>
6740           </RaiseException>
6741         </Raises>
6742       </Operation>
6743       <Operation name="getRequestedAppControl" id="::Application::Application::getRequestedAppControl">
6744         <webidl>    <ref>RequestedApplicationControl</ref> getRequestedAppControl() raises(<ref>WebAPIException</ref>);</webidl>
6745         <descriptive>
6746             <brief>
6747  Gets the requested application control passed to the current application.
6748             </brief>
6749            <description>
6750             <p>
6751 Gets the requested application control that contains the application control
6752 passed by the <em>launchAppControl()</em> method from the calling application.
6753 The requested application control contains the reason the application
6754 was launched and what it has to perform. For example, an application
6755 might be launched to display an image on a page by other
6756 application's request. In all of these cases, the application is
6757 responsible for checking the contents of the application control and responding
6758 appropriately when it is launched.
6759             </p>
6760            </description>
6761             <version>
6762  2.0
6763             </version>
6764             <Code> var reqAppControl = tizen.application.getCurrentApplication().getRequestedAppControl();
6765
6766  if (reqAppControl) {
6767      console.log(&quot;Requester AppID : &quot; + reqAppControl.callerAppId);
6768  }
6769  </Code>
6770         </descriptive>
6771         <Type name="RequestedApplicationControl">
6772           <descriptive>
6773               <description><p>
6774  RequestedApplicationControl The details of an requested application control
6775               </p></description>
6776           </descriptive>
6777         </Type>
6778         <ArgumentList/>
6779         <Raises>
6780           <RaiseException name="WebAPIException">
6781             <descriptive>
6782                 <description><p>
6783  with error type UnknownError, if the application control cannot be retrieved because of an unknown error.
6784                 </p></description>
6785             </descriptive>
6786           </RaiseException>
6787         </Raises>
6788       </Operation>
6789     </Interface>
6790     <Interface name="ApplicationInformation" id="::Application::ApplicationInformation">
6791       <webidl>  [NoInterfaceObject] interface ApplicationInformation {
6792
6793     readonly attribute <ref>ApplicationId</ref> id;
6794
6795     readonly attribute DOMString name;
6796
6797     readonly attribute DOMString iconPath;
6798
6799     readonly attribute DOMString version;
6800
6801     readonly attribute boolean show;
6802
6803     readonly attribute DOMString[] categories;
6804
6805     readonly attribute Date installDate;
6806
6807     readonly attribute long size raises(<ref>WebAPIException</ref>);
6808
6809     readonly attribute <ref>PackageId</ref> packageId;
6810   };</webidl>
6811       <descriptive>
6812           <brief>
6813  This interface defines the general information available to an installed application.
6814           </brief>
6815           <version>
6816  1.0
6817           </version>
6818       </descriptive>
6819       <ExtendedAttributeList>
6820         <ExtendedAttribute name="NoInterfaceObject">
6821           <webidl>NoInterfaceObject</webidl>
6822         </ExtendedAttribute>
6823       </ExtendedAttributeList>
6824       <Attribute readonly="readonly" name="id" id="::Application::ApplicationInformation::id">
6825         <webidl>    readonly attribute <ref>ApplicationId</ref> id;</webidl>
6826         <descriptive>
6827             <brief>
6828  An attribute to store the identifier of an application for application management.
6829             </brief>
6830             <version>
6831  1.0
6832             </version>
6833         </descriptive>
6834         <Type name="ApplicationId"/>
6835       </Attribute>
6836       <Attribute readonly="readonly" name="name" id="::Application::ApplicationInformation::name">
6837         <webidl>    readonly attribute DOMString name;</webidl>
6838         <descriptive>
6839             <brief>
6840  An attribute to store the name of an application.
6841             </brief>
6842             <version>
6843  1.0
6844             </version>
6845         </descriptive>
6846         <Type type="DOMString"/>
6847       </Attribute>
6848       <Attribute readonly="readonly" name="iconPath" id="::Application::ApplicationInformation::iconPath">
6849         <webidl>    readonly attribute DOMString iconPath;</webidl>
6850         <descriptive>
6851             <brief>
6852  An attribute to store the icon path of an application.
6853             </brief>
6854             <version>
6855  1.0
6856             </version>
6857         </descriptive>
6858         <Type type="DOMString"/>
6859       </Attribute>
6860       <Attribute readonly="readonly" name="version" id="::Application::ApplicationInformation::version">
6861         <webidl>    readonly attribute DOMString version;</webidl>
6862         <descriptive>
6863             <brief>
6864  An attribute to store the version of an application.
6865             </brief>
6866             <version>
6867  1.0
6868             </version>
6869         </descriptive>
6870         <Type type="DOMString"/>
6871       </Attribute>
6872       <Attribute readonly="readonly" name="show" id="::Application::ApplicationInformation::show">
6873         <webidl>    readonly attribute boolean show;</webidl>
6874         <descriptive>
6875             <brief>
6876  An attribute that determines whether the application information should
6877 be shown (such as in the menus) or not.
6878             </brief>
6879             <version>
6880  1.0
6881             </version>
6882         </descriptive>
6883         <Type type="boolean"/>
6884       </Attribute>
6885       <Attribute readonly="readonly" name="categories" id="::Application::ApplicationInformation::categories">
6886         <webidl>    readonly attribute DOMString[] categories;</webidl>
6887         <descriptive>
6888             <brief>
6889  An array of attributes to store the categories that the app belongs to.
6890             </brief>
6891             <version>
6892  2.0
6893             </version>
6894         </descriptive>
6895         <Type type="array">
6896           <Type type="DOMString"/>
6897         </Type>
6898       </Attribute>
6899       <Attribute readonly="readonly" name="installDate" id="::Application::ApplicationInformation::installDate">
6900         <webidl>    readonly attribute Date installDate;</webidl>
6901         <descriptive>
6902             <brief>
6903  An attribute to store the application install/update time.
6904             </brief>
6905             <version>
6906  2.0
6907             </version>
6908         </descriptive>
6909         <Type type="Date"/>
6910       </Attribute>
6911       <Attribute readonly="readonly" name="size" id="::Application::ApplicationInformation::size">
6912         <webidl>    readonly attribute long size raises(<ref>WebAPIException</ref>);</webidl>
6913         <descriptive>
6914             <brief>
6915  An attribute to store the application size (installed space).
6916             </brief>
6917             <version>
6918  2.0
6919             </version>
6920             <privilegelevel>
6921  public
6922             </privilegelevel>
6923             <privilege>
6924  http://tizen.org/privilege/application.info
6925             </privilege>
6926         </descriptive>
6927         <Type type="long"/>
6928         <Raises>
6929           <RaiseException name="WebAPIException">
6930             <descriptive>
6931                 <description><p>
6932  with error type SecurityError, if this attribute is not allowed.
6933                 </p></description>
6934             </descriptive>
6935           </RaiseException>
6936         </Raises>
6937       </Attribute>
6938       <Attribute readonly="readonly" name="packageId" id="::Application::ApplicationInformation::packageId">
6939         <webidl>    readonly attribute <ref>PackageId</ref> packageId;</webidl>
6940         <descriptive>
6941             <brief>
6942  An attribute to store the package ID of application.
6943             </brief>
6944             <version>
6945  2.1
6946             </version>
6947         </descriptive>
6948         <Type name="PackageId"/>
6949       </Attribute>
6950     </Interface>
6951     <Interface name="ApplicationContext" id="::Application::ApplicationContext">
6952       <webidl>  [NoInterfaceObject] interface ApplicationContext {
6953
6954     readonly attribute <ref>ApplicationContextId</ref> id;
6955
6956     readonly attribute <ref>ApplicationId</ref> appId;
6957
6958   };</webidl>
6959       <descriptive>
6960           <brief>
6961  This interface defines the information available about a running
6962 application.
6963           </brief>
6964           <version>
6965  1.0
6966           </version>
6967       </descriptive>
6968       <ExtendedAttributeList>
6969         <ExtendedAttribute name="NoInterfaceObject">
6970           <webidl>NoInterfaceObject</webidl>
6971         </ExtendedAttribute>
6972       </ExtendedAttributeList>
6973       <Attribute readonly="readonly" name="id" id="::Application::ApplicationContext::id">
6974         <webidl>    readonly attribute <ref>ApplicationContextId</ref> id;</webidl>
6975         <descriptive>
6976             <brief>
6977  An attribute to store the ID of a running application.
6978             </brief>
6979             <version>
6980  1.0
6981             </version>
6982         </descriptive>
6983         <Type name="ApplicationContextId"/>
6984       </Attribute>
6985       <Attribute readonly="readonly" name="appId" id="::Application::ApplicationContext::appId">
6986         <webidl>    readonly attribute <ref>ApplicationId</ref> appId;</webidl>
6987         <descriptive>
6988             <brief>
6989  An attribute to store the ID of an installed application.
6990             </brief>
6991             <version>
6992  1.0
6993             </version>
6994         </descriptive>
6995         <Type name="ApplicationId"/>
6996       </Attribute>
6997     </Interface>
6998     <Interface name="ApplicationControlData" id="::Application::ApplicationControlData">
6999       <webidl>  [Constructor(DOMString key, DOMString[] value)]
7000   interface ApplicationControlData {
7001
7002     attribute DOMString key;
7003
7004     attribute DOMString[] value;
7005
7006   };</webidl>
7007       <descriptive>
7008           <brief>
7009  This interface defines a key/value pair used to pass data
7010 between applications through the <em>ApplicationControl </em>interface.
7011           </brief>
7012           <version>
7013  2.0
7014           </version>
7015           <Code> var appControlData = new tizen.ApplicationControlData(&quot;image&quot;, [imagedata1]);
7016  </Code>
7017       </descriptive>
7018       <ExtendedAttributeList>
7019         <ExtendedAttribute name="Constructor">
7020           <webidl>Constructor(DOMString key, DOMString[] value)</webidl>
7021           <ArgumentList>
7022             <Argument name="key">
7023               <Type type="DOMString"/>
7024             </Argument>
7025             <Argument name="value">
7026               <Type type="array">
7027                 <Type type="DOMString"/>
7028               </Type>
7029             </Argument>
7030           </ArgumentList>
7031         </ExtendedAttribute>
7032       </ExtendedAttributeList>
7033       <Attribute name="key" id="::Application::ApplicationControlData::key">
7034         <webidl>    attribute DOMString key;</webidl>
7035         <descriptive>
7036             <brief>
7037  An attribute to store the name of a key.
7038             </brief>
7039             <version>
7040  2.0
7041             </version>
7042         </descriptive>
7043         <Type type="DOMString"/>
7044       </Attribute>
7045       <Attribute name="value" id="::Application::ApplicationControlData::value">
7046         <webidl>    attribute DOMString[] value;</webidl>
7047         <descriptive>
7048             <brief>
7049  An attribute to store the value associated with a key.
7050             </brief>
7051             <version>
7052  2.0
7053             </version>
7054         </descriptive>
7055         <Type type="array">
7056           <Type type="DOMString"/>
7057         </Type>
7058       </Attribute>
7059     </Interface>
7060     <Interface name="ApplicationControl" id="::Application::ApplicationControl">
7061       <webidl>  [Constructor(DOMString operation, optional DOMString? uri,
7062                optional DOMString? mime, optional DOMString? category,
7063                optional <ref>ApplicationControlData</ref>[]? data)]
7064   interface ApplicationControl {
7065
7066     attribute DOMString operation;
7067
7068     attribute DOMString? uri;
7069
7070     attribute DOMString? mime;
7071
7072     attribute DOMString? category;
7073
7074     attribute <ref>ApplicationControlData</ref>[] data;
7075
7076   };</webidl>
7077       <descriptive>
7078           <brief>
7079  This interface consists of an operation, URI, MIME type,
7080 and data. It describes an action to be performed by other applications
7081 and is passed to launch other applications.
7082 If the system gets the application control request, it finds
7083 the corresponding application to be launched with the delivered application control
7084 and launches the selected application.
7085           </brief>
7086           <version>
7087  2.0
7088           </version>
7089           <Code> var appControl =
7090        new tizen.ApplicationControl(
7091                   &quot;http://tizen.org/appcontrol/operation/view&quot;,
7092                   null,
7093                   &quot;image/jpeg&quot;,
7094                   null,
7095                   [new tizen.ApplicationControlData(&quot;images&quot;,
7096                                                     [imagedata1, imagedata2])] );
7097  </Code>
7098       </descriptive>
7099       <ExtendedAttributeList>
7100         <ExtendedAttribute name="Constructor">
7101           <webidl>Constructor(DOMString operation, optional DOMString? uri,
7102                optional DOMString? mime, optional DOMString? category,
7103                optional <ref>ApplicationControlData</ref>[]? data)</webidl>
7104           <ArgumentList>
7105             <Argument name="operation">
7106               <Type type="DOMString"/>
7107             </Argument>
7108             <Argument optional="optional" name="uri">
7109               <Type type="DOMString" nullable="nullable"/>
7110             </Argument>
7111             <Argument optional="optional" name="mime">
7112               <Type type="DOMString" nullable="nullable"/>
7113             </Argument>
7114             <Argument optional="optional" name="category">
7115               <Type type="DOMString" nullable="nullable"/>
7116             </Argument>
7117             <Argument optional="optional" name="data">
7118               <Type type="array" nullable="nullable">
7119                 <Type name="ApplicationControlData"/>
7120               </Type>
7121             </Argument>
7122           </ArgumentList>
7123         </ExtendedAttribute>
7124       </ExtendedAttributeList>
7125       <Attribute name="operation" id="::Application::ApplicationControl::operation">
7126         <webidl>    attribute DOMString operation;</webidl>
7127         <descriptive>
7128             <brief>
7129  An attribute to store the string that defines the action to be
7130 performed by an application control.
7131             </brief>
7132             <version>
7133  2.0
7134             </version>
7135         </descriptive>
7136         <Type type="DOMString"/>
7137       </Attribute>
7138       <Attribute name="uri" id="::Application::ApplicationControl::uri">
7139         <webidl>    attribute DOMString? uri;</webidl>
7140         <descriptive>
7141             <brief>
7142  An attribute to store the URI needed by application control.
7143             </brief>
7144             <version>
7145  2.0
7146             </version>
7147         </descriptive>
7148         <Type type="DOMString" nullable="nullable"/>
7149       </Attribute>
7150       <Attribute name="mime" id="::Application::ApplicationControl::mime">
7151         <webidl>    attribute DOMString? mime;</webidl>
7152         <descriptive>
7153             <brief>
7154  An attribute to store the MIME type of a content.
7155             </brief>
7156             <version>
7157  2.0
7158             </version>
7159         </descriptive>
7160         <Type type="DOMString" nullable="nullable"/>
7161       </Attribute>
7162       <Attribute name="category" id="::Application::ApplicationControl::category">
7163         <webidl>    attribute DOMString? category;</webidl>
7164         <descriptive>
7165             <brief>
7166  An attribute to store the category of the application to be launched.
7167             </brief>
7168             <version>
7169  2.0
7170             </version>
7171         </descriptive>
7172         <Type type="DOMString" nullable="nullable"/>
7173       </Attribute>
7174       <Attribute name="data" id="::Application::ApplicationControl::data">
7175         <webidl>    attribute <ref>ApplicationControlData</ref>[] data;</webidl>
7176         <descriptive>
7177             <brief>
7178  An array of attributes to store the data needed for an application control.
7179             </brief>
7180             <version>
7181  2.0
7182             </version>
7183         </descriptive>
7184         <Type type="array">
7185           <Type name="ApplicationControlData"/>
7186         </Type>
7187       </Attribute>
7188     </Interface>
7189     <Interface name="RequestedApplicationControl" id="::Application::RequestedApplicationControl">
7190       <webidl>  [NoInterfaceObject] interface RequestedApplicationControl {
7191
7192     readonly attribute <ref>ApplicationControl</ref> appControl;
7193
7194     readonly attribute <ref>ApplicationId</ref> callerAppId;
7195
7196     void replyResult(optional <ref>ApplicationControlData</ref>[]? data) raises(<ref>WebAPIException</ref>);
7197
7198     void replyFailure() raises(<ref>WebAPIException</ref>);
7199
7200   };</webidl>
7201       <descriptive>
7202           <brief>
7203  This interface has an application control information requested and passed 
7204 from other application and is passed to launch other applications. The newly 
7205 launched application can get the requested application control through <em>getRequestedAppControl()</em> method, and send the results
7206 to the calling application through the <em>replyResult()</em> method after performing the
7207 required action requested the calling application.
7208           </brief>
7209           <version>
7210  2.0
7211           </version>
7212           <Code> var reqAppControl = tizen.application.getCurrentApplication().getRequestedAppControl();
7213  if (reqAppControl) {
7214      console.log(&quot;Requester AppID : &quot; + reqAppControl.callerAppId);
7215
7216      var appControl = reqAppControl.appControl;
7217      if (appControl.operation == &quot;http://tizen.org/appcontrol/operation/pick&quot;) {
7218          var data = new tizen.ApplicationControlData(&quot;http://tizen.org/appcontrol/data/selected&quot;, [&quot;Image1.jpg&quot;]);
7219          reqAppControl.replyResult([data]);
7220      }
7221  }
7222  </Code>
7223       </descriptive>
7224       <ExtendedAttributeList>
7225         <ExtendedAttribute name="NoInterfaceObject">
7226           <webidl>NoInterfaceObject</webidl>
7227         </ExtendedAttribute>
7228       </ExtendedAttributeList>
7229       <Attribute readonly="readonly" name="appControl" id="::Application::RequestedApplicationControl::appControl">
7230         <webidl>    readonly attribute <ref>ApplicationControl</ref> appControl;</webidl>
7231         <descriptive>
7232             <brief>
7233  An attribute to store the application control object that describes caller application's request.
7234 It contains the information that the calling application passed to <em>launchAppControl</em>.
7235             </brief>
7236             <version>
7237  2.0
7238             </version>
7239         </descriptive>
7240         <Type name="ApplicationControl"/>
7241       </Attribute>
7242       <Attribute readonly="readonly" name="callerAppId" id="::Application::RequestedApplicationControl::callerAppId">
7243         <webidl>    readonly attribute <ref>ApplicationId</ref> callerAppId;</webidl>
7244         <descriptive>
7245             <brief>
7246  An attribute to store the caller application's ID
7247             </brief>
7248             <version>
7249  2.1
7250             </version>
7251         </descriptive>
7252         <Type name="ApplicationId"/>
7253       </Attribute>
7254       <Operation name="replyResult" id="::Application::RequestedApplicationControl::replyResult">
7255         <webidl>    void replyResult(optional <ref>ApplicationControlData</ref>[]? data) raises(<ref>WebAPIException</ref>);</webidl>
7256         <descriptive>
7257             <brief>
7258  Sends the results to the caller application.
7259             </brief>
7260             <version>
7261  2.0
7262             </version>
7263         </descriptive>
7264         <Type type="void"/>
7265         <ArgumentList>
7266           <Argument optional="optional" name="data">
7267             <descriptive>
7268                 <description><p>
7269  An array of ApplicationControlData objects.     
7270                 </p></description>
7271             </descriptive>
7272             <Type type="array" nullable="nullable">
7273               <Type name="ApplicationControlData"/>
7274             </Type>
7275           </Argument>
7276         </ArgumentList>
7277         <Raises>
7278           <RaiseException name="WebAPIException">
7279             <descriptive>
7280                 <description><p>
7281  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
7282                 </p></description>
7283                 <description><p>
7284  with error type NotFoundError, if the caller app is not alive or there is no response from the caller app
7285                 </p></description>
7286                 <description><p>
7287  with error type UnknownError, if the reply request fails because of an unknown error
7288                 </p></description>
7289             </descriptive>
7290           </RaiseException>
7291         </Raises>
7292       </Operation>
7293       <Operation name="replyFailure" id="::Application::RequestedApplicationControl::replyFailure">
7294         <webidl>    void replyFailure() raises(<ref>WebAPIException</ref>);</webidl>
7295         <descriptive>
7296             <brief>
7297  Notifies the calling application that the application failed
7298 to perform the requested action.
7299             </brief>
7300             <version>
7301  2.0
7302             </version>
7303         </descriptive>
7304         <Type type="void"/>
7305         <ArgumentList/>
7306         <Raises>
7307           <RaiseException name="WebAPIException">
7308             <descriptive>
7309                 <description><p>
7310  with error type NotFoundError, if the caller app is not alive or there is no response from the caller app
7311                 </p></description>
7312                 <description><p>
7313  with error type UnknownError, if the reply request fails because of an unknown error
7314                 </p></description>
7315             </descriptive>
7316           </RaiseException>
7317         </Raises>
7318       </Operation>
7319     </Interface>
7320     <Interface name="ApplicationCertificate" id="::Application::ApplicationCertificate">
7321       <webidl>  [NoInterfaceObject] interface ApplicationCertificate {
7322
7323     readonly attribute DOMString type;
7324
7325     readonly attribute DOMString value;
7326
7327   };</webidl>
7328       <descriptive>
7329           <brief>
7330  This interface defines the certificate information of an installed application.
7331           </brief>
7332           <version>
7333  2.0
7334           </version>
7335       </descriptive>
7336       <ExtendedAttributeList>
7337         <ExtendedAttribute name="NoInterfaceObject">
7338           <webidl>NoInterfaceObject</webidl>
7339         </ExtendedAttribute>
7340       </ExtendedAttributeList>
7341       <Attribute readonly="readonly" name="type" id="::Application::ApplicationCertificate::type">
7342         <webidl>    readonly attribute DOMString type;</webidl>
7343         <descriptive>
7344             <brief>
7345  An attribute to store the type of the application certificate.
7346             </brief>
7347             <version>
7348  2.0
7349             </version>
7350         </descriptive>
7351         <Type type="DOMString"/>
7352       </Attribute>
7353       <Attribute readonly="readonly" name="value" id="::Application::ApplicationCertificate::value">
7354         <webidl>    readonly attribute DOMString value;</webidl>
7355         <descriptive>
7356             <brief>
7357  An attribute to store the value of the application certificate.
7358             </brief>
7359             <version>
7360  2.0
7361             </version>
7362         </descriptive>
7363         <Type type="DOMString"/>
7364       </Attribute>
7365     </Interface>
7366     <Interface name="ApplicationMetaData" id="::Application::ApplicationMetaData">
7367       <webidl>  [NoInterfaceObject] interface ApplicationMetaData {
7368
7369     readonly attribute DOMString key;
7370
7371     readonly attribute DOMString value;
7372
7373   };</webidl>
7374       <descriptive>
7375           <brief>
7376  This interface defines the meta data of an installed application.
7377           </brief>
7378           <version>
7379  2.2
7380           </version>
7381       </descriptive>
7382       <ExtendedAttributeList>
7383         <ExtendedAttribute name="NoInterfaceObject">
7384           <webidl>NoInterfaceObject</webidl>
7385         </ExtendedAttribute>
7386       </ExtendedAttributeList>
7387       <Attribute readonly="readonly" name="key" id="::Application::ApplicationMetaData::key">
7388         <webidl>    readonly attribute DOMString key;</webidl>
7389         <descriptive>
7390             <brief>
7391  An attribute to store the key of the application meta data.
7392             </brief>
7393             <version>
7394  2.2
7395             </version>
7396         </descriptive>
7397         <Type type="DOMString"/>
7398       </Attribute>
7399       <Attribute readonly="readonly" name="value" id="::Application::ApplicationMetaData::value">
7400         <webidl>    readonly attribute DOMString value;</webidl>
7401         <descriptive>
7402             <brief>
7403  An attribute to store the value of the application meta data.
7404             </brief>
7405             <version>
7406  2.2
7407             </version>
7408         </descriptive>
7409         <Type type="DOMString"/>
7410       </Attribute>
7411     </Interface>
7412     <Interface name="ApplicationInformationArraySuccessCallback" id="::Application::ApplicationInformationArraySuccessCallback">
7413       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface ApplicationInformationArraySuccessCallback {
7414     void onsuccess(<ref>ApplicationInformation</ref>[] informationArray);
7415   };</webidl>
7416       <descriptive>
7417           <brief>
7418  This interface invokes the success callback that is invoked when the installed application list is retrieved.
7419           </brief>
7420          <description>
7421           <p>
7422 This callback interface specifies a success method with an array of
7423 <em>ApplicationInformation </em>objects as an input parameter. It is used in <em>ApplicationManager.getAppsInfo()</em>.
7424           </p>
7425          </description>
7426           <version>
7427  1.0
7428           </version>
7429       </descriptive>
7430       <ExtendedAttributeList>
7431         <ExtendedAttribute name="Callback" value="FunctionOnly">
7432           <webidl>Callback</webidl>
7433         </ExtendedAttribute>
7434         <ExtendedAttribute name="NoInterfaceObject">
7435           <webidl> NoInterfaceObject</webidl>
7436         </ExtendedAttribute>
7437       </ExtendedAttributeList>
7438       <Operation name="onsuccess" id="::Application::ApplicationInformationArraySuccessCallback::onsuccess">
7439         <webidl>    void onsuccess(<ref>ApplicationInformation</ref>[] informationArray);</webidl>
7440         <descriptive>
7441             <brief>
7442  Called when the asynchronous call completes successfully.
7443             </brief>
7444             <version>
7445  1.0
7446             </version>
7447         </descriptive>
7448         <Type type="void"/>
7449         <ArgumentList>
7450           <Argument name="informationArray">
7451             <descriptive>
7452                 <description><p>
7453  A list of installed applications.
7454                 </p></description>
7455             </descriptive>
7456             <Type type="array">
7457               <Type name="ApplicationInformation"/>
7458             </Type>
7459           </Argument>
7460         </ArgumentList>
7461       </Operation>
7462     </Interface>
7463     <Interface name="FindAppControlSuccessCallback" id="::Application::FindAppControlSuccessCallback">
7464       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface FindAppControlSuccessCallback {
7465     void onsuccess(<ref>ApplicationInformation</ref>[] informationArray, <ref>ApplicationControl</ref> appControl);
7466   };</webidl>
7467       <descriptive>
7468           <brief>
7469  This interface specified a success callback that is invoked when system finished searching applications which is matched by specific application control .
7470           </brief>
7471          <description>
7472           <p>
7473 This callback interface specifies a success method with an array of
7474 <em>ApplicationInformation </em>objects and application control as an input parameter.
7475 It is used in <em>ApplicationManager.findAppControl()</em>.
7476           </p>
7477          </description>
7478           <version>
7479  2.0
7480           </version>
7481       </descriptive>
7482       <ExtendedAttributeList>
7483         <ExtendedAttribute name="Callback" value="FunctionOnly">
7484           <webidl>Callback</webidl>
7485         </ExtendedAttribute>
7486         <ExtendedAttribute name="NoInterfaceObject">
7487           <webidl> NoInterfaceObject</webidl>
7488         </ExtendedAttribute>
7489       </ExtendedAttributeList>
7490       <Operation name="onsuccess" id="::Application::FindAppControlSuccessCallback::onsuccess">
7491         <webidl>    void onsuccess(<ref>ApplicationInformation</ref>[] informationArray, <ref>ApplicationControl</ref> appControl);</webidl>
7492         <descriptive>
7493             <brief>
7494  Called when the asynchronous call completes successfully.
7495             </brief>
7496             <version>
7497  2.0
7498             </version>
7499         </descriptive>
7500         <Type type="void"/>
7501         <ArgumentList>
7502           <Argument name="informationArray">
7503             <descriptive>
7504                 <description><p>
7505  A list of installed applications.
7506                 </p></description>
7507             </descriptive>
7508             <Type type="array">
7509               <Type name="ApplicationInformation"/>
7510             </Type>
7511           </Argument>
7512           <Argument name="appControl">
7513             <descriptive>
7514                 <description><p>
7515  The application control which were passed on <em>ApplicationManager.findAppControl()</em>.
7516                 </p></description>
7517             </descriptive>
7518             <Type name="ApplicationControl"/>
7519           </Argument>
7520         </ArgumentList>
7521       </Operation>
7522     </Interface>
7523     <Interface name="ApplicationContextArraySuccessCallback" id="::Application::ApplicationContextArraySuccessCallback">
7524       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface ApplicationContextArraySuccessCallback {
7525     void onsuccess(<ref>ApplicationContext</ref>[] contexts);
7526   };</webidl>
7527       <descriptive>
7528           <brief>
7529  This callback interface that specifies the success callback that is invoked when the list of running applications is retrieved.
7530           </brief>
7531          <description>
7532           <p>
7533 This callback interface specifies a success method with
7534 an array of <em>ApplicationContext </em>objects as an input parameter. It is used in <em>ApplicationManager.getAppsContext()</em>.
7535           </p>
7536          </description>
7537           <version>
7538  1.0
7539           </version>
7540       </descriptive>
7541       <ExtendedAttributeList>
7542         <ExtendedAttribute name="Callback" value="FunctionOnly">
7543           <webidl>Callback</webidl>
7544         </ExtendedAttribute>
7545         <ExtendedAttribute name="NoInterfaceObject">
7546           <webidl> NoInterfaceObject</webidl>
7547         </ExtendedAttribute>
7548       </ExtendedAttributeList>
7549       <Operation name="onsuccess" id="::Application::ApplicationContextArraySuccessCallback::onsuccess">
7550         <webidl>    void onsuccess(<ref>ApplicationContext</ref>[] contexts);</webidl>
7551         <descriptive>
7552             <brief>
7553  Called when <em>ApplicationManager.getAppsContext() </em>completes successfully.
7554             </brief>
7555             <version>
7556  1.0
7557             </version>
7558         </descriptive>
7559         <Type type="void"/>
7560         <ArgumentList>
7561           <Argument name="contexts">
7562             <descriptive>
7563                 <description><p>
7564  A list of running applications.
7565                 </p></description>
7566             </descriptive>
7567             <Type type="array">
7568               <Type name="ApplicationContext"/>
7569             </Type>
7570           </Argument>
7571         </ArgumentList>
7572       </Operation>
7573     </Interface>
7574     <Interface name="ApplicationControlDataArrayReplyCallback" id="::Application::ApplicationControlDataArrayReplyCallback">
7575       <webidl>  [Callback, NoInterfaceObject] interface ApplicationControlDataArrayReplyCallback {
7576     void onsuccess(optional <ref>ApplicationControlData</ref>[]? data);
7577
7578     void onfailure();
7579   };</webidl>
7580       <descriptive>
7581           <brief>
7582  This callback interface specifies success callbacks that are invoked as a reply from the requested application control within the application control requester.
7583           </brief>
7584          <description>
7585           <p>
7586 This callback interface specifies two methods:
7587           </p>
7588           <ul>
7589             <li>
7590  <em>onsuccess()</em> - Invoked by the callee application calls <em>RequestedApplicationControl.replyResult()</em>.            </li>
7591             <li>
7592  <em>onfailure()</em> - Invoked if the callee application calls <em>RequestedApplicationControl.replyFailure()</em>.            </li>
7593           </ul>
7594          </description>
7595           <version>
7596  2.0
7597           </version>
7598       </descriptive>
7599       <ExtendedAttributeList>
7600         <ExtendedAttribute name="Callback">
7601           <webidl>Callback</webidl>
7602         </ExtendedAttribute>
7603         <ExtendedAttribute name="NoInterfaceObject">
7604           <webidl> NoInterfaceObject</webidl>
7605         </ExtendedAttribute>
7606       </ExtendedAttributeList>
7607       <Operation name="onsuccess" id="::Application::ApplicationControlDataArrayReplyCallback::onsuccess">
7608         <webidl>    void onsuccess(optional <ref>ApplicationControlData</ref>[]? data);</webidl>
7609         <descriptive>
7610             <brief>
7611  Called when the callee application calls <em>RequestedApplicationControl.replyResult()</em>.
7612             </brief>
7613             <version>
7614  2.0
7615             </version>
7616         </descriptive>
7617         <Type type="void"/>
7618         <ArgumentList>
7619           <Argument optional="optional" name="data">
7620             <descriptive>
7621                 <description><p>
7622  An array of <em>ApplicationControlData </em>objects.
7623                 </p></description>
7624             </descriptive>
7625             <Type type="array" nullable="nullable">
7626               <Type name="ApplicationControlData"/>
7627             </Type>
7628           </Argument>
7629         </ArgumentList>
7630       </Operation>
7631       <Operation name="onfailure" id="::Application::ApplicationControlDataArrayReplyCallback::onfailure">
7632         <webidl>    void onfailure();</webidl>
7633         <descriptive>
7634             <brief>
7635  Called when the callee application calls <em>RequestedApplicationControl.replyFailure()</em>.
7636             </brief>
7637             <version>
7638  2.0
7639             </version>
7640         </descriptive>
7641         <Type type="void"/>
7642         <ArgumentList/>
7643       </Operation>
7644     </Interface>
7645     <Interface name="ApplicationInformationEventCallback" id="::Application::ApplicationInformationEventCallback">
7646       <webidl>  [Callback, NoInterfaceObject] interface ApplicationInformationEventCallback {
7647     void oninstalled(<ref>ApplicationInformation</ref> info);
7648
7649     void onupdated(<ref>ApplicationInformation</ref> info);
7650
7651     void onuninstalled(<ref>ApplicationId</ref> id);
7652   };</webidl>
7653       <descriptive>
7654           <brief>
7655  The callback interface to specify for subscribing for notification of changes in the list of installed
7656 applications on a device.
7657           </brief>
7658          <description>
7659           <p>
7660 This callback interface specifies methods that will be invoked when
7661 an application is installed, updated, or uninstalled.
7662           </p>
7663          </description>
7664           <version>
7665  1.0
7666           </version>
7667       </descriptive>
7668       <ExtendedAttributeList>
7669         <ExtendedAttribute name="Callback">
7670           <webidl>Callback</webidl>
7671         </ExtendedAttribute>
7672         <ExtendedAttribute name="NoInterfaceObject">
7673           <webidl> NoInterfaceObject</webidl>
7674         </ExtendedAttribute>
7675       </ExtendedAttributeList>
7676       <Operation name="oninstalled" id="::Application::ApplicationInformationEventCallback::oninstalled">
7677         <webidl>    void oninstalled(<ref>ApplicationInformation</ref> info);</webidl>
7678         <descriptive>
7679             <brief>
7680  Called when an application is installed.
7681             </brief>
7682             <version>
7683  1.0
7684             </version>
7685         </descriptive>
7686         <Type type="void"/>
7687         <ArgumentList>
7688           <Argument name="info">
7689             <descriptive>
7690                 <description><p>
7691  The application information of the installed application.
7692                 </p></description>
7693             </descriptive>
7694             <Type name="ApplicationInformation"/>
7695           </Argument>
7696         </ArgumentList>
7697       </Operation>
7698       <Operation name="onupdated" id="::Application::ApplicationInformationEventCallback::onupdated">
7699         <webidl>    void onupdated(<ref>ApplicationInformation</ref> info);</webidl>
7700         <descriptive>
7701             <brief>
7702  Called when an application is updated.
7703             </brief>
7704             <version>
7705  1.0
7706             </version>
7707         </descriptive>
7708         <Type type="void"/>
7709         <ArgumentList>
7710           <Argument name="info">
7711             <descriptive>
7712                 <description><p>
7713  The application information of the updated application.
7714                 </p></description>
7715             </descriptive>
7716             <Type name="ApplicationInformation"/>
7717           </Argument>
7718         </ArgumentList>
7719       </Operation>
7720       <Operation name="onuninstalled" id="::Application::ApplicationInformationEventCallback::onuninstalled">
7721         <webidl>    void onuninstalled(<ref>ApplicationId</ref> id);</webidl>
7722         <descriptive>
7723             <brief>
7724  Called when an application is uninstalled.
7725             </brief>
7726             <version>
7727  1.0
7728             </version>
7729         </descriptive>
7730         <Type type="void"/>
7731         <ArgumentList>
7732           <Argument name="id">
7733             <descriptive>
7734                 <description><p>
7735  The ID of the uninstalled application.
7736                 </p></description>
7737             </descriptive>
7738             <Type name="ApplicationId"/>
7739           </Argument>
7740         </ArgumentList>
7741       </Operation>
7742     </Interface>
7743   </Module>
7744   <Module name="Bluetooth" id="::Bluetooth">
7745     <webidl>module Bluetooth {
7746     typedef DOMString BluetoothAddress;
7747     
7748     typedef DOMString BluetoothUUID;
7749     
7750     enum BluetoothSocketState { &quot;CLOSED&quot;, &quot;OPEN&quot; };
7751
7752     enum BluetoothProfileType { &quot;HEALTH&quot; };
7753         
7754     enum BluetoothHealthChannelType { &quot;RELIABLE&quot;, &quot;STREAMING&quot; };
7755     
7756     [NoInterfaceObject] interface BluetoothManagerObject {
7757         readonly attribute <ref>BluetoothManager</ref> bluetooth;
7758     };
7759     <ref>Tizen</ref> implements <ref>BluetoothManagerObject</ref>;
7760
7761     [NoInterfaceObject] interface BluetoothManager {
7762         readonly attribute <ref>BluetoothClassDeviceMajor</ref> deviceMajor;
7763         readonly attribute <ref>BluetoothClassDeviceMinor</ref> deviceMinor;
7764         readonly attribute <ref>BluetoothClassDeviceService</ref> deviceService;
7765         <ref>BluetoothAdapter</ref> getDefaultAdapter() raises(<ref>WebAPIException</ref>);
7766     };
7767
7768
7769     [NoInterfaceObject] interface BluetoothAdapter {
7770         readonly attribute DOMString name;
7771         readonly attribute <ref>BluetoothAddress</ref> address;
7772         readonly attribute boolean powered; 
7773         readonly attribute boolean visible;
7774
7775         void setName(DOMString name,
7776                      optional <ref>SuccessCallback</ref>? successCallback, 
7777                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
7778  
7779         void setPowered(boolean state,
7780                         optional <ref>SuccessCallback</ref>? successCallback, 
7781                         optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);     
7782         
7783         void setVisible(boolean mode,
7784                         optional <ref>SuccessCallback</ref>? successCallback, 
7785                         optional <ref>ErrorCallback</ref>? errorCallback,
7786                         optional unsigned short? timeout) raises(<ref>WebAPIException</ref>);
7787
7788         void setChangeListener(<ref>BluetoothAdapterChangeCallback</ref> listener) raises(<ref>WebAPIException</ref>);
7789
7790         void unsetChangeListener() raises(<ref>WebAPIException</ref>);
7791
7792         void discoverDevices(<ref>BluetoothDiscoverDevicesSuccessCallback</ref> successCallback, 
7793                              optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
7794
7795         void stopDiscovery(optional <ref>SuccessCallback</ref>? successCallback, 
7796                            optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
7797
7798         void getKnownDevices(<ref>BluetoothDeviceArraySuccessCallback</ref> successCallback, 
7799                              optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
7800
7801
7802
7803
7804         void getDevice(<ref>BluetoothAddress</ref> address,
7805                        <ref>BluetoothDeviceSuccessCallback</ref> successCallback, 
7806                        optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
7807
7808
7809
7810
7811         void createBonding(<ref>BluetoothAddress</ref> address,
7812                            <ref>BluetoothDeviceSuccessCallback</ref> successCallback, 
7813                            optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
7814
7815         void destroyBonding(<ref>BluetoothAddress</ref> address,
7816                             optional <ref>SuccessCallback</ref>? successCallback, 
7817                             optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
7818
7819
7820
7821         void registerRFCOMMServiceByUUID(<ref>BluetoothUUID</ref> uuid,
7822                                          DOMString name,
7823                                          <ref>BluetoothServiceSuccessCallback</ref> successCallback, 
7824                                          optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
7825
7826         <ref>BluetoothProfileHandler</ref> getBluetoothProfileHandler(<ref>BluetoothProfileType</ref> profileType) raises(<ref>WebAPIException</ref>);
7827
7828              };
7829     [NoInterfaceObject] interface BluetoothDevice {
7830         readonly attribute DOMString name;
7831         readonly attribute <ref>BluetoothAddress</ref> address;
7832         readonly attribute <ref>BluetoothClass</ref> deviceClass;
7833         readonly attribute boolean isBonded;
7834         readonly attribute boolean isTrusted;
7835         readonly attribute boolean isConnected;
7836         readonly attribute <ref>BluetoothUUID</ref>[] uuids;
7837
7838         void connectToServiceByUUID(<ref>BluetoothUUID</ref> uuid,
7839                                     <ref>BluetoothSocketSuccessCallback</ref> successCallback, 
7840                                     optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
7841     };
7842     [NoInterfaceObject] interface BluetoothSocket {
7843         readonly attribute <ref>BluetoothUUID</ref> uuid;
7844         readonly attribute <ref>BluetoothSocketState</ref> state;
7845         readonly attribute <ref>BluetoothDevice</ref> peer;
7846         [TreatNonCallableAsNull] attribute <ref>SuccessCallback</ref>? onmessage raises(<ref>WebAPIException</ref>);
7847         [TreatNonCallableAsNull] attribute <ref>SuccessCallback</ref>? onclose raises(<ref>WebAPIException</ref>);
7848         unsigned long writeData(byte[] data) raises(<ref>WebAPIException</ref>);
7849
7850
7851         byte[] readData() raises(<ref>WebAPIException</ref>);
7852
7853
7854         void close() raises(<ref>WebAPIException</ref>);
7855     };
7856
7857     [NoInterfaceObject] interface BluetoothClass {
7858         readonly attribute octet major;
7859         
7860         readonly attribute octet minor;
7861         
7862         readonly attribute unsigned short [] services ;
7863         
7864         boolean hasService(unsigned short service) raises(<ref>WebAPIException</ref>);
7865     };
7866
7867     [NoInterfaceObject] interface BluetoothClassDeviceMajor {
7868
7869         const octet MISC = 0x00;
7870         const octet COMPUTER = 0x01;
7871         const octet PHONE = 0x02;
7872         const octet NETWORK = 0x03;
7873         const octet AUDIO_VIDEO = 0x04;
7874         const octet PERIPHERAL = 0x05;
7875         const octet IMAGING = 0x06;
7876         const octet WEARABLE = 0x07;
7877         const octet TOY = 0x08;
7878         const octet HEALTH = 0x09;
7879         const octet UNCATEGORIZED = 0x1F;
7880     };
7881
7882     [NoInterfaceObject] interface BluetoothClassDeviceMinor {
7883         const octet COMPUTER_UNCATEGORIZED = 0x00;
7884         const octet COMPUTER_DESKTOP = 0x01;
7885         const octet COMPUTER_SERVER = 0x02;
7886         const octet COMPUTER_LAPTOP = 0x03;
7887         const octet COMPUTER_HANDHELD_PC_OR_PDA = 0x04;
7888         const octet COMPUTER_PALM_PC_OR_PDA = 0x05;
7889         const octet COMPUTER_WEARABLE = 0x06;
7890
7891         const octet PHONE_UNCATEGORIZED = 0x00;
7892         const octet PHONE_CELLULAR = 0x01;
7893         const octet PHONE_CORDLESS = 0x02;
7894         const octet PHONE_SMARTPHONE = 0x03;
7895         const octet PHONE_MODEM_OR_GATEWAY = 0x04;
7896         const octet PHONE_ISDN = 0x05;
7897
7898         const octet AV_UNRECOGNIZED = 0x00;
7899         const octet AV_WEARABLE_HEADSET = 0x01;
7900         const octet AV_HANDSFREE = 0x02;
7901         const octet AV_MICROPHONE = 0x04;
7902         const octet AV_LOUDSPEAKER = 0x05;
7903         const octet AV_HEADPHONES = 0x06;
7904         const octet AV_PORTABLE_AUDIO = 0x07;
7905         const octet AV_CAR_AUDIO = 0x08;
7906         const octet AV_SETTOP_BOX = 0x09;
7907         const octet AV_HIFI = 0x0a;
7908         const octet AV_VCR = 0x0b;
7909         const octet AV_VIDEO_CAMERA = 0x0c;
7910         const octet AV_CAMCORDER = 0x0d;
7911         const octet AV_MONITOR = 0x0e;
7912         const octet AV_DISPLAY_AND_LOUDSPEAKER = 0x0f;
7913         const octet AV_VIDEO_CONFERENCING = 0x10;
7914         const octet AV_GAMING_TOY = 0x12;
7915
7916         const octet PERIPHERAL_UNCATEGORIZED = 0;
7917         const octet PERIPHERAL_KEYBOARD = 0x10;
7918         const octet PERIPHERAL_POINTING_DEVICE = 0x20;
7919         const octet PERIPHERAL_KEYBOARD_AND_POINTING_DEVICE = 0x30;
7920         const octet PERIPHERAL_JOYSTICK = 0x01;
7921         const octet PERIPHERAL_GAMEPAD = 0x02;
7922         const octet PERIPHERAL_REMOTE_CONTROL = 0x03;
7923         const octet PERIPHERAL_SENSING_DEVICE = 0x04;
7924         const octet PERIPHERAL_DEGITIZER_TABLET = 0x05;
7925         const octet PERIPHERAL_CARD_READER = 0x06;
7926         const octet PERIPHERAL_DIGITAL_PEN = 0x07;
7927         const octet PERIPHERAL_HANDHELD_SCANNER = 0x08;
7928         const octet PERIPHERAL_HANDHELD_INPUT_DEVICE = 0x09;
7929
7930         const octet IMAGING_UNCATEGORIZED = 0x00;
7931         const octet IMAGING_DISPLAY = 0x04;
7932         const octet IMAGING_CAMERA = 0x08;
7933         const octet IMAGING_SCANNER = 0x10;
7934         const octet IMAGING_PRINTER = 0x20;
7935
7936         const octet WEARABLE_WRITST_WATCH = 0x01;
7937         const octet WEARABLE_PAGER = 0x02;
7938         const octet WEARABLE_JACKET = 0x03;
7939         const octet WEARABLE_HELMET = 0x04;
7940         const octet WEARABLE_GLASSES = 0x05;
7941
7942         const octet TOY_ROBOT = 0x01;
7943         const octet TOY_VEHICLE = 0x02;
7944         const octet TOY_DOLL = 0x03;
7945         const octet TOY_CONTROLLER = 0x04;
7946         const octet TOY_GAME = 0x05;
7947
7948         const octet HEALTH_UNDEFINED = 0x00;
7949         const octet HEALTH_BLOOD_PRESSURE_MONITOR = 0x01;
7950         const octet HEALTH_THERMOMETER = 0x02;
7951         const octet HEALTH_WEIGHING_SCALE = 0x03;
7952         const octet HEALTH_GLUCOSE_METER = 0x04;
7953         const octet HEALTH_PULSE_OXIMETER = 0x05;
7954         const octet HEALTH_PULSE_RATE_MONITOR = 0x06;
7955         const octet HEALTH_DATA_DISPLAY = 0x07;
7956         const octet HEALTH_STEP_COUNTER = 0x08;
7957         const octet HEALTH_BODY_COMPOSITION_ANALYZER = 0x09;
7958         const octet HEALTH_PEAK_FLOW_MONITOR = 0x0a;
7959         const octet HEALTH_MEDICATION_MONITOR = 0x0b;
7960         const octet HEALTH_KNEE_PROSTHESIS = 0x0c;
7961         const octet HEALTH_ANKLE_PROSTHESIS = 0x0d;
7962     };
7963
7964     [NoInterfaceObject] interface BluetoothClassDeviceService {
7965         const unsigned short LIMITED_DISCOVERABILITY = 0x0001;
7966         const unsigned short POSITIONING = 0x0008; 
7967         const unsigned short NETWORKING = 0x0010; 
7968         const unsigned short RENDERING = 0x0020; 
7969         const unsigned short CAPTURING = 0x0040;
7970         const unsigned short OBJECT_TRANSFER = 0x0080; 
7971         const unsigned short AUDIO = 0x0100;
7972         const unsigned short TELEPHONY = 0x0200;
7973         const unsigned short INFORMATION = 0x0400;
7974     };
7975
7976     [NoInterfaceObject] interface BluetoothServiceHandler {
7977         readonly attribute <ref>BluetoothUUID</ref> uuid;
7978         readonly attribute DOMString name;
7979         readonly attribute boolean isConnected;
7980         [TreatNonCallableAsNull] attribute <ref>BluetoothSocketSuccessCallback</ref>? onconnect raises(<ref>WebAPIException</ref>);
7981
7982         void unregister(optional <ref>SuccessCallback</ref>? successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
7983     };
7984
7985     [NoInterfaceObject] interface BluetoothProfileHandler {
7986         
7987         readonly attribute <ref>BluetoothProfileType</ref> profileType;
7988                 
7989     };
7990                 
7991
7992     [NoInterfaceObject] interface BluetoothHealthProfileHandler : <ref>BluetoothProfileHandler</ref> {
7993         
7994         void registerSinkApplication(unsigned short dataType, DOMString name, <ref>BluetoothHealthApplicationSuccessCallback</ref> successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
7995
7996         void connectToSource(<ref>BluetoothDevice</ref> peer, <ref>BluetoothHealthApplication</ref> application, <ref>BluetoothHealthChannelSuccessCallback</ref> successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
7997
7998         };              
7999
8000
8001     [NoInterfaceObject] interface BluetoothHealthApplication {
8002
8003         readonly attribute unsigned short dataType;
8004                 
8005         readonly attribute DOMString name;
8006
8007         [TreatNonCallableAsNull] attribute <ref>BluetoothHealthChannelSuccessCallback</ref>? onconnect raises(<ref>WebAPIException</ref>);
8008                 
8009         void unregister(optional <ref>SuccessCallback</ref>? successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
8010                 
8011     };          
8012         
8013         
8014     [NoInterfaceObject] interface BluetoothHealthChannel {
8015
8016         readonly attribute <ref>BluetoothDevice</ref> peer;
8017                 
8018         readonly attribute <ref>BluetoothHealthChannelType</ref> channelType;
8019
8020         readonly attribute <ref>BluetoothHealthApplication</ref> application;
8021                 
8022         readonly attribute boolean isConnected;
8023
8024         void close() raises(<ref>WebAPIException</ref>);
8025
8026         unsigned long sendData(byte[] data) raises(<ref>WebAPIException</ref>);
8027
8028         void setListener(<ref>BluetoothHealthChannelChangeCallback</ref> listener) raises(<ref>WebAPIException</ref>); 
8029  
8030         void unsetListener() raises(<ref>WebAPIException</ref>);
8031                 
8032     };
8033         
8034
8035     [Callback, NoInterfaceObject] interface BluetoothAdapterChangeCallback {
8036         void onstatechanged(boolean powered);
8037         void onnamechanged(DOMString name);
8038         void onvisibilitychanged(boolean visible);
8039     };
8040
8041     [Callback=FunctionOnly, NoInterfaceObject] interface BluetoothDeviceSuccessCallback {
8042         void onsuccess(<ref>BluetoothDevice</ref> device);
8043     };
8044
8045     [Callback=FunctionOnly, NoInterfaceObject] interface BluetoothDeviceArraySuccessCallback {
8046         void onsuccess(<ref>BluetoothDevice</ref>[] devices);
8047     };
8048
8049     [Callback, NoInterfaceObject] interface BluetoothDiscoverDevicesSuccessCallback {
8050         void onstarted();
8051         void ondevicefound(<ref>BluetoothDevice</ref> device);
8052         void ondevicedisappeared(<ref>BluetoothAddress</ref> address);
8053         void onfinished(<ref>BluetoothDevice</ref>[] foundDevices);
8054     };
8055
8056     [Callback=FunctionOnly, NoInterfaceObject] interface BluetoothSocketSuccessCallback {
8057         void onsuccess(<ref>BluetoothSocket</ref> socket);
8058     };
8059
8060     [Callback=FunctionOnly, NoInterfaceObject] interface BluetoothServiceSuccessCallback {
8061         void onsuccess(<ref>BluetoothServiceHandler</ref> handler);
8062     };
8063
8064     [Callback=FunctionOnly, NoInterfaceObject] interface BluetoothHealthApplicationSuccessCallback {
8065         void onsuccess(<ref>BluetoothHealthApplication</ref> application);
8066     };
8067
8068         
8069     [Callback=FunctionOnly, NoInterfaceObject] interface BluetoothHealthChannelSuccessCallback {
8070         void onsuccess(<ref>BluetoothHealthChannel</ref> channel);
8071     };
8072
8073     [Callback, NoInterfaceObject] interface BluetoothHealthChannelChangeCallback {
8074         void onmessage(byte[] data);
8075                 
8076         void onclose(); 
8077     };
8078
8079 };</webidl>
8080     <descriptive>
8081         <brief>
8082  This specification defines interfaces and methods to manage Bluetooth.
8083         </brief>
8084        <description>
8085         <p>
8086 The following Bluetooth functionalities are provided:
8087         </p>
8088         <ul>
8089           <li>
8090 Controls local Bluetooth device, that is, turn Bluetooth on/off, etc.          </li>
8091           <li>
8092 Sets visibility          </li>
8093           <li>
8094 Discovers nearby Bluetooth devices (Device discovery).          </li>
8095           <li>
8096 Gets bonded devices information.          </li>
8097           <li>
8098 Controls bonding.          </li>
8099           <li>
8100 Connects to a service on a remote device and exchanges data.          </li>
8101           <li>
8102 Registers a service (RFCOMM) on a local device, which can be consumed by remote devices to exchange data.          </li>
8103         </ul>
8104         <p>
8105 For more information on the Bluetooth features, see <a href="../../org.tizen.web.appprogramming/html/guide/communication_guide/bluetooth.htm">Bluetooth Guide</a>.
8106         </p>
8107        </description>
8108         <version>
8109  1.0
8110         </version>
8111         <def-api-feature identifier="http://tizen.org/feature/network.bluetooth">
8112           <descriptive>
8113            <description>
8114             <p>
8115 To guarantee this application running on a device with Bluetooth feature, define below in the config file: 
8116             </p>
8117            </description>
8118           </descriptive>
8119         </def-api-feature>
8120     </descriptive>
8121     <Typedef name="BluetoothAddress" id="::Bluetooth::BluetoothAddress">
8122       <webidl>    typedef DOMString BluetoothAddress;</webidl>
8123       <descriptive>
8124           <brief>
8125  The address of a Bluetooth device.
8126           </brief>
8127           <version>
8128  1.0
8129           </version>
8130       </descriptive>
8131       <Type type="DOMString"/>
8132     </Typedef>
8133     <Typedef name="BluetoothUUID" id="::Bluetooth::BluetoothUUID">
8134       <webidl>    typedef DOMString BluetoothUUID;</webidl>
8135       <descriptive>
8136           <brief>
8137  The UUID of a Bluetooth service.
8138           </brief>
8139           <version>
8140  1.0
8141           </version>
8142       </descriptive>
8143       <Type type="DOMString"/>
8144     </Typedef>
8145     <Enum name="BluetoothSocketState" id="::Bluetooth::BluetoothSocketState">
8146       <webidl>    enum BluetoothSocketState { &quot;CLOSED&quot;, &quot;OPEN&quot; };</webidl>
8147       <descriptive>
8148           <brief>
8149  The Bluetooth socket state.
8150           </brief>
8151           <version>
8152  1.0
8153           </version>
8154       </descriptive>
8155       <EnumValue stringvalue="CLOSED">
8156         <webidl> &quot;CLOSED</webidl>
8157       </EnumValue>
8158       <EnumValue stringvalue="OPEN">
8159         <webidl> &quot;OPEN</webidl>
8160       </EnumValue>
8161     </Enum>
8162     <Enum name="BluetoothProfileType" id="::Bluetooth::BluetoothProfileType">
8163       <webidl>    enum BluetoothProfileType { &quot;HEALTH&quot; };</webidl>
8164       <descriptive>
8165           <brief>
8166  The Bluetooth profile.
8167           </brief>
8168           <version>
8169  2.2
8170           </version>
8171       </descriptive>
8172       <EnumValue stringvalue="HEALTH">
8173         <webidl> &quot;HEALTH</webidl>
8174       </EnumValue>
8175     </Enum>
8176     <Enum name="BluetoothHealthChannelType" id="::Bluetooth::BluetoothHealthChannelType">
8177       <webidl>    enum BluetoothHealthChannelType { &quot;RELIABLE&quot;, &quot;STREAMING&quot; };</webidl>
8178       <descriptive>
8179           <brief>
8180  The channel type of health device profile.
8181           </brief>
8182           <version>
8183  2.2
8184           </version>
8185       </descriptive>
8186       <EnumValue stringvalue="RELIABLE">
8187         <webidl> &quot;RELIABLE</webidl>
8188       </EnumValue>
8189       <EnumValue stringvalue="STREAMING">
8190         <webidl> &quot;STREAMING</webidl>
8191       </EnumValue>
8192     </Enum>
8193     <Interface name="BluetoothManagerObject" id="::Bluetooth::BluetoothManagerObject">
8194       <webidl>    [NoInterfaceObject] interface BluetoothManagerObject {
8195         readonly attribute <ref>BluetoothManager</ref> bluetooth;
8196     };</webidl>
8197       <descriptive>
8198           <brief>
8199  This interface defines what is instantiated by the <em>Tizen</em> object from the Tizen platform.
8200           </brief>
8201          <description>
8202           <p>
8203 There is a <em>tizen.bluetooth</em> object that allows access to the Bluetooth API.
8204           </p>
8205          </description>
8206           <version>
8207  1.0
8208           </version>
8209       </descriptive>
8210       <ExtendedAttributeList>
8211         <ExtendedAttribute name="NoInterfaceObject">
8212           <webidl>NoInterfaceObject</webidl>
8213         </ExtendedAttribute>
8214       </ExtendedAttributeList>
8215       <Attribute readonly="readonly" name="bluetooth" id="::Bluetooth::BluetoothManagerObject::bluetooth">
8216         <webidl>        readonly attribute <ref>BluetoothManager</ref> bluetooth;</webidl>
8217         <Type name="BluetoothManager"/>
8218       </Attribute>
8219     </Interface>
8220     <Implements name1="Tizen" name2="BluetoothManagerObject">
8221       <webidl>    <ref>Tizen</ref> implements <ref>BluetoothManagerObject</ref>;</webidl>
8222     </Implements>
8223     <Interface name="BluetoothManager" id="::Bluetooth::BluetoothManager">
8224       <webidl>    [NoInterfaceObject] interface BluetoothManager {
8225         readonly attribute <ref>BluetoothClassDeviceMajor</ref> deviceMajor;
8226         readonly attribute <ref>BluetoothClassDeviceMinor</ref> deviceMinor;
8227         readonly attribute <ref>BluetoothClassDeviceService</ref> deviceService;
8228         <ref>BluetoothAdapter</ref> getDefaultAdapter() raises(<ref>WebAPIException</ref>);
8229     };</webidl>
8230       <descriptive>
8231           <brief>
8232  This interface provides access to the <em>BluetoothAdapter</em> object.
8233           </brief>
8234           <version>
8235  1.0
8236           </version>
8237       </descriptive>
8238       <ExtendedAttributeList>
8239         <ExtendedAttribute name="NoInterfaceObject">
8240           <webidl>NoInterfaceObject</webidl>
8241         </ExtendedAttribute>
8242       </ExtendedAttributeList>
8243       <Attribute readonly="readonly" name="deviceMajor" id="::Bluetooth::BluetoothManager::deviceMajor">
8244         <webidl>        readonly attribute <ref>BluetoothClassDeviceMajor</ref> deviceMajor;</webidl>
8245         <descriptive>
8246             <brief>
8247  An attribute to access to a major device class identifiers of Bluetooth class of device (CoD).
8248             </brief>
8249             <version>
8250  1.0
8251             </version>
8252         </descriptive>
8253         <Type name="BluetoothClassDeviceMajor"/>
8254       </Attribute>
8255       <Attribute readonly="readonly" name="deviceMinor" id="::Bluetooth::BluetoothManager::deviceMinor">
8256         <webidl>        readonly attribute <ref>BluetoothClassDeviceMinor</ref> deviceMinor;</webidl>
8257         <descriptive>
8258             <brief>
8259  An attribute to access to a minor device class identifiers of Bluetooth class of device (CoD).
8260             </brief>
8261             <version>
8262  1.0
8263             </version>
8264         </descriptive>
8265         <Type name="BluetoothClassDeviceMinor"/>
8266       </Attribute>
8267       <Attribute readonly="readonly" name="deviceService" id="::Bluetooth::BluetoothManager::deviceService">
8268         <webidl>        readonly attribute <ref>BluetoothClassDeviceService</ref> deviceService;</webidl>
8269         <descriptive>
8270             <brief>
8271  Accessor to major service class identifiers of Bluetooth class of device (CoD).
8272             </brief>
8273             <version>
8274  1.0
8275             </version>
8276         </descriptive>
8277         <Type name="BluetoothClassDeviceService"/>
8278       </Attribute>
8279       <Operation name="getDefaultAdapter" id="::Bluetooth::BluetoothManager::getDefaultAdapter">
8280         <webidl>        <ref>BluetoothAdapter</ref> getDefaultAdapter() raises(<ref>WebAPIException</ref>);</webidl>
8281         <descriptive>
8282             <brief>
8283  Gets the default local Bluetooth adapter.
8284             </brief>
8285             <version>
8286  1.0
8287             </version>
8288             <privilegelevel>
8289  public
8290             </privilegelevel>
8291             <privilege>
8292  http://tizen.org/privilege/bluetooth.gap
8293             </privilege>
8294             <Code> try {
8295   var adapter = tizen.bluetooth.getDefaultAdapter() ;
8296  } catch (err) {
8297   console.log (err.name +&quot;: &quot; + err.message);
8298  }
8299  </Code>
8300         </descriptive>
8301         <Type name="BluetoothAdapter">
8302           <descriptive>
8303               <description><p>
8304  BluetoothAdapter The local <em>BluetoothAdapter </em>object.
8305               </p></description>
8306           </descriptive>
8307         </Type>
8308         <ArgumentList/>
8309         <Raises>
8310           <RaiseException name="WebAPIException">
8311             <descriptive>
8312                 <description><p>
8313  with error type SecurityError, if the application does not have the privilege to call this method.
8314                 </p></description>
8315                 <description><p>
8316  with error type NotSupportedError, if this feature is not supported.
8317                 </p></description>
8318                 <description><p>
8319  with error type UnknownError, if any other error occurs.
8320                 </p></description>
8321             </descriptive>
8322           </RaiseException>
8323         </Raises>
8324       </Operation>
8325     </Interface>
8326     <Interface name="BluetoothAdapter" id="::Bluetooth::BluetoothAdapter">
8327       <webidl>    [NoInterfaceObject] interface BluetoothAdapter {
8328         readonly attribute DOMString name;
8329         readonly attribute <ref>BluetoothAddress</ref> address;
8330         readonly attribute boolean powered; 
8331         readonly attribute boolean visible;
8332
8333         void setName(DOMString name,
8334                      optional <ref>SuccessCallback</ref>? successCallback, 
8335                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
8336  
8337         void setPowered(boolean state,
8338                         optional <ref>SuccessCallback</ref>? successCallback, 
8339                         optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);     
8340         
8341         void setVisible(boolean mode,
8342                         optional <ref>SuccessCallback</ref>? successCallback, 
8343                         optional <ref>ErrorCallback</ref>? errorCallback,
8344                         optional unsigned short? timeout) raises(<ref>WebAPIException</ref>);
8345
8346         void setChangeListener(<ref>BluetoothAdapterChangeCallback</ref> listener) raises(<ref>WebAPIException</ref>);
8347
8348         void unsetChangeListener() raises(<ref>WebAPIException</ref>);
8349
8350         void discoverDevices(<ref>BluetoothDiscoverDevicesSuccessCallback</ref> successCallback, 
8351                              optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
8352
8353         void stopDiscovery(optional <ref>SuccessCallback</ref>? successCallback, 
8354                            optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
8355
8356         void getKnownDevices(<ref>BluetoothDeviceArraySuccessCallback</ref> successCallback, 
8357                              optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
8358
8359
8360
8361
8362         void getDevice(<ref>BluetoothAddress</ref> address,
8363                        <ref>BluetoothDeviceSuccessCallback</ref> successCallback, 
8364                        optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
8365
8366
8367
8368
8369         void createBonding(<ref>BluetoothAddress</ref> address,
8370                            <ref>BluetoothDeviceSuccessCallback</ref> successCallback, 
8371                            optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
8372
8373         void destroyBonding(<ref>BluetoothAddress</ref> address,
8374                             optional <ref>SuccessCallback</ref>? successCallback, 
8375                             optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
8376
8377
8378
8379         void registerRFCOMMServiceByUUID(<ref>BluetoothUUID</ref> uuid,
8380                                          DOMString name,
8381                                          <ref>BluetoothServiceSuccessCallback</ref> successCallback, 
8382                                          optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
8383
8384         <ref>BluetoothProfileHandler</ref> getBluetoothProfileHandler(<ref>BluetoothProfileType</ref> profileType) raises(<ref>WebAPIException</ref>);
8385
8386              };</webidl>
8387       <descriptive>
8388           <brief>
8389  This interface provides access to control the device's Bluetooth adapter.
8390           </brief>
8391          <description>
8392           <p>
8393 This interface offers methods to control local Bluetooth behavior, such as:
8394           </p>
8395           <ul>
8396             <li>
8397 Turning on/off Bluetooth radio            </li>
8398             <li>
8399 Changing device visibility            </li>
8400             <li>
8401 Scanning for remote devices            </li>
8402             <li>
8403 Accessing known devices            </li>
8404             <li>
8405 Registering a service in the device service database            </li>
8406           </ul>
8407          </description>
8408           <version>
8409  1.0
8410           </version>
8411       </descriptive>
8412       <ExtendedAttributeList>
8413         <ExtendedAttribute name="NoInterfaceObject">
8414           <webidl>NoInterfaceObject</webidl>
8415         </ExtendedAttribute>
8416       </ExtendedAttributeList>
8417       <Attribute readonly="readonly" name="name" id="::Bluetooth::BluetoothAdapter::name">
8418         <webidl>        readonly attribute DOMString name;</webidl>
8419         <descriptive>
8420             <brief>
8421  An attribute to store the readable name of the Bluetooth adapter.
8422             </brief>
8423             <version>
8424  1.0
8425             </version>
8426             <Code> 
8427  // Access adapter name
8428  var adapter = tizen.bluetooth.getDefaultAdapter();
8429  console.log (&quot;Bluetooth adapter name: &quot; + adapter.name);
8430  </Code>
8431         </descriptive>
8432         <Type type="DOMString"/>
8433       </Attribute>
8434       <Attribute readonly="readonly" name="address" id="::Bluetooth::BluetoothAdapter::address">
8435         <webidl>        readonly attribute <ref>BluetoothAddress</ref> address;</webidl>
8436         <descriptive>
8437             <brief>
8438  An attribute to store the unique hardware address of the Bluetooth adapter, also known as the MAC address.
8439             </brief>
8440             <version>
8441  1.0
8442             </version>
8443             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
8444  console.log(&quot;Bluetooth device address: &quot; + adapter.address);
8445  </Code>
8446         </descriptive>
8447         <Type name="BluetoothAddress"/>
8448       </Attribute>
8449       <Attribute readonly="readonly" name="powered" id="::Bluetooth::BluetoothAdapter::powered">
8450         <webidl>        readonly attribute boolean powered;</webidl>
8451         <descriptive>
8452             <brief>
8453  An attribute to indicate the current state of the Bluetooth adapter.
8454 This attribute holds one of the following 2 values:
8455             </brief>
8456            <description>
8457             <ul>
8458               <li>
8459 <var>true</var> - If Bluetooth adapter is currently on              </li>
8460               <li>
8461 <var>false</var> - If Bluetooth adapter is currently off              </li>
8462             </ul>
8463            </description>
8464             <version>
8465  1.0
8466             </version>
8467             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
8468  console.log(&quot;Bluetooth state: &quot; + (adapter.powered ? &quot;On&quot; : &quot;Off&quot;));
8469  </Code>
8470         </descriptive>
8471         <Type type="boolean"/>
8472       </Attribute>
8473       <Attribute readonly="readonly" name="visible" id="::Bluetooth::BluetoothAdapter::visible">
8474         <webidl>        readonly attribute boolean visible;</webidl>
8475         <descriptive>
8476             <brief>
8477  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.
8478             </brief>
8479             <version>
8480  1.0
8481             </version>
8482             <Code> // Queries current visible state
8483  var adapter = tizen.bluetooth.getDefaultAdapter();
8484  console.log (&quot;Bluetooth Visibility: &quot; + (adapter.visible ? &quot;On&quot; : &quot;Off&quot;));
8485  </Code>
8486         </descriptive>
8487         <Type type="boolean"/>
8488       </Attribute>
8489       <Operation name="setName" id="::Bluetooth::BluetoothAdapter::setName">
8490         <webidl>        void setName(DOMString name,
8491                      optional <ref>SuccessCallback</ref>? successCallback, 
8492                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
8493         <descriptive>
8494             <brief>
8495  Sets the local Bluetooth adapter name.
8496             </brief>
8497            <description>
8498             <p>
8499 Sends a request to Bluetooth hardware to change the name of the local Bluetooth adapter to <em>name</em>.
8500             </p>
8501             <p>
8502 The ErrorCallback is launched with these error types:
8503             </p>
8504             <ul>
8505               <li>
8506  InvalidValuesError: If any of the input parameters contain an invalid value.              </li>
8507               <li>
8508  ServiceNotAvailableError: If a Bluetooth device is turned off.               </li>
8509               <li>
8510  UnknownError: In any other error case.               </li>
8511             </ul>
8512            </description>
8513             <version>
8514  1.0
8515             </version>
8516             <privilegelevel>
8517  public
8518             </privilegelevel>
8519             <privilege>
8520  http://tizen.org/privilege/bluetooth.admin
8521             </privilege>
8522             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
8523  
8524  function changeName(newName) 
8525  {  
8526       if(adapter.name != newName) {
8527            // initiate change name
8528            adapter.setName(newName, function() {
8529                console.log(&quot;Adapter name changed to &quot; + adapter.name);
8530            },
8531            function(e) {
8532                console.log(&quot;Failed to change name: &quot; + e.message);
8533            });
8534       }
8535  }
8536
8537  changeName(&quot;myDevice&quot;);
8538  </Code>
8539         </descriptive>
8540         <Type type="void"/>
8541         <ArgumentList>
8542           <Argument name="name">
8543             <descriptive>
8544                 <description><p>
8545  The name to set.
8546                 </p></description>
8547             </descriptive>
8548             <Type type="DOMString"/>
8549           </Argument>
8550           <Argument optional="optional" name="successCallback">
8551             <descriptive>
8552                 <description><p>
8553  The method to invoke when the asynchronous call completes successfully.
8554                 </p></description>
8555             </descriptive>
8556             <Type name="SuccessCallback" nullable="nullable"/>
8557           </Argument>
8558           <Argument optional="optional" name="errorCallback">
8559             <descriptive>
8560                 <description><p>
8561  The method to invoke when an error occurs.
8562                 </p></description>
8563             </descriptive>
8564             <Type name="ErrorCallback" nullable="nullable"/>
8565           </Argument>
8566         </ArgumentList>
8567         <Raises>
8568           <RaiseException name="WebAPIException">
8569             <descriptive>
8570                 <description><p>
8571  with error type TypeMismatchError, if any of the input parameter is not compatible with the expected type for that parameter.
8572                 </p></description>
8573                 <description><p>
8574  with error type SecurityError, if the application does not have the privilege to call this method.
8575                 </p></description>
8576                 <description><p>
8577  with error type NotSupportedError, if this feature is not supported.
8578                 </p></description>
8579             </descriptive>
8580           </RaiseException>
8581         </Raises>
8582       </Operation>
8583       <Operation name="setPowered" id="::Bluetooth::BluetoothAdapter::setPowered">
8584         <webidl>        void setPowered(boolean state,
8585                         optional <ref>SuccessCallback</ref>? successCallback, 
8586                         optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
8587         <descriptive>
8588             <brief>
8589  Sets the state of a Bluetooth adapter to on or off by sending a request to Bluetooth hardware to change the power state.
8590 For most Bluetooth actions, the Bluetooth adapter must be powered on.
8591             </brief>
8592            <description>
8593             <p>
8594 The ErrorCallback is launched with these error names:
8595             </p>
8596             <ul>
8597               <li>
8598  ServiceNotAvailableError - If a Bluetooth device is busy.              </li>
8599               <li>
8600  UnknownError - If any other error occurs.              </li>
8601             </ul>
8602            </description>
8603             <version>
8604  1.0
8605             </version>
8606             <privilegelevel>
8607  public
8608             </privilegelevel>
8609             <privilege>
8610  http://tizen.org/privilege/bluetooth.admin
8611             </privilege>
8612             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
8613  
8614  function powerOn() 
8615  {
8616       // If adapter is not powered on 
8617       if(!adapter.powered) {
8618            // Initiates power on
8619            adapter.setPowered(true, function() {
8620                console.log(&quot;Bluetooth powered on success.&quot;);
8621            },
8622            function(e) {
8623                console.log(&quot;Failed to power on Bluetooth: &quot; + e.message);
8624            });
8625       }
8626  }
8627
8628  function powerOff()
8629  {
8630       // If powered on
8631       if(adapter.powered) {
8632            // Initiates power off
8633            adapter.setPowered(false, function() {
8634                console.log(&quot;Bluetooth powered off successfully.&quot;);
8635            },
8636            function(e) {
8637                console.log(&quot;Failed to power off Bluetooth: &quot; + e.message);
8638            });
8639       }
8640  }
8641  </Code>
8642         </descriptive>
8643         <Type type="void"/>
8644         <ArgumentList>
8645           <Argument name="state">
8646             <descriptive>
8647                 <description><p>
8648  The state to set: <var>true</var> to power on Bluetooth, <var>false</var> to power it off.
8649                 </p></description>
8650             </descriptive>
8651             <Type type="boolean"/>
8652           </Argument>
8653           <Argument optional="optional" name="successCallback">
8654             <descriptive>
8655                 <description><p>
8656  The method to invoke on successful Bluetooth activation/deactivation.
8657                 </p></description>
8658             </descriptive>
8659             <Type name="SuccessCallback" nullable="nullable"/>
8660           </Argument>
8661           <Argument optional="optional" name="errorCallback">
8662             <descriptive>
8663                 <description><p>
8664  The method to invoke on failure of a Bluetooth activation/deactivation.
8665                 </p></description>
8666             </descriptive>
8667             <Type name="ErrorCallback" nullable="nullable"/>
8668           </Argument>
8669         </ArgumentList>
8670         <Raises>
8671           <RaiseException name="WebAPIException">
8672             <descriptive>
8673                 <description><p>
8674  with error type TypeMismatchError, if any of the input parameter is not compatible with the expected type for that parameter.
8675                 </p></description>
8676                 <description><p>
8677  with error type SecurityError, if the application does not have the privilege to call this method.
8678                 </p></description>
8679                 <description><p>
8680  with error type NotSupportedError, if this feature is not supported.
8681                 </p></description>
8682             </descriptive>
8683           </RaiseException>
8684         </Raises>
8685       </Operation>
8686       <Operation name="setVisible" id="::Bluetooth::BluetoothAdapter::setVisible">
8687         <webidl>        void setVisible(boolean mode,
8688                         optional <ref>SuccessCallback</ref>? successCallback, 
8689                         optional <ref>ErrorCallback</ref>? errorCallback,
8690                         optional unsigned short? timeout) raises(<ref>WebAPIException</ref>);</webidl>
8691         <descriptive>
8692             <brief>
8693  Sets the local device visibility by sending a request to a Bluetooth hardware to change the device visible state to <em>mode</em>.
8694 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.
8695             </brief>
8696            <description>
8697             <p>
8698 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.
8699             </p>
8700             <p>
8701 The ErrorCallback is launched with these error types:
8702             </p>
8703             <ul>
8704               <li>
8705  InvalidValuesError - If any of the input parameters contain an invalid value.              </li>
8706               <li>
8707  ServiceNotAvailableError - If a Bluetooth device is turned off.              </li>
8708               <li>
8709  UnknownError - If any other error case occurs.              </li>
8710             </ul>
8711            </description>
8712             <version>
8713  1.0
8714             </version>
8715             <privilegelevel>
8716  platform
8717             </privilegelevel>
8718             <privilege>
8719  http://tizen.org/privilege/bluetoothmanager
8720             </privilege>
8721             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
8722  
8723  function showMe()
8724  {
8725       if (adapter.visible == false) {
8726           //Shows device
8727           adapter.setVisible(true, 
8728                              function() { console.log ('Device is visible to other devices for 3 minutes.'); },
8729                              function(e) { console.log ('Error: ' + e.message + '(' + e.name + ')'); });
8730       }
8731       else {
8732            console.log(&quot;Device is already in discoverable mode.&quot;);
8733       }
8734  }
8735
8736  function hideMe() 
8737  {
8738      if (adapter.visible) {
8739           // Hides device
8740           adapter.setVisible(false,
8741                              function() { console.log('Device is in-visible now.'); },
8742                              function(e) { console.log ('Error: ' + e.message + '(' + e.name + ')'); });
8743      }
8744      else {
8745           console.log(&quot;Device is already in invisible mode.&quot;);
8746      }
8747  }
8748  </Code>
8749         </descriptive>
8750         <Type type="void"/>
8751         <ArgumentList>
8752           <Argument name="mode">
8753             <descriptive>
8754                 <description><p>
8755  The boolean value to set visibility.
8756 It can either be set to: <var>true</var> - to show the device or <var>false</var> - to hide the device.
8757                 </p></description>
8758             </descriptive>
8759             <Type type="boolean"/>
8760           </Argument>
8761           <Argument optional="optional" name="successCallback">
8762             <descriptive>
8763                 <description><p>
8764  The method to invoke when an asynchronous call completes successfully.
8765                 </p></description>
8766             </descriptive>
8767             <Type name="SuccessCallback" nullable="nullable"/>
8768           </Argument>
8769           <Argument optional="optional" name="errorCallback">
8770             <descriptive>
8771                 <description><p>
8772  The method to invoke when an error occurs.
8773                 </p></description>
8774             </descriptive>
8775             <Type name="ErrorCallback" nullable="nullable"/>
8776           </Argument>
8777           <Argument optional="optional" name="timeout">
8778             <descriptive>
8779                 <description><p>
8780  The visible timeout in seconds, used only when <em>mode</em> is <var>true</var>.
8781                 </p></description>
8782             </descriptive>
8783             <Type type="unsigned short" nullable="nullable"/>
8784           </Argument>
8785         </ArgumentList>
8786         <Raises>
8787           <RaiseException name="WebAPIException">
8788             <descriptive>
8789                 <description><p>
8790  with error type TypeMismatchError, if any of the input parameter is not compatible with the expected type for that parameter.
8791                 </p></description>
8792                 <description><p>
8793  with error type SecurityError, if the application does not have the privilege to call this method.
8794                 </p></description>
8795                 <description><p>
8796  with error type NotSupportedError, if this feature is not supported.
8797                 </p></description>
8798             </descriptive>
8799           </RaiseException>
8800         </Raises>
8801       </Operation>
8802       <Operation name="setChangeListener" id="::Bluetooth::BluetoothAdapter::setChangeListener">
8803         <webidl>        void setChangeListener(<ref>BluetoothAdapterChangeCallback</ref> listener) raises(<ref>WebAPIException</ref>);</webidl>
8804         <descriptive>
8805             <brief>
8806  Sets the listener to receive notifications about changes of Bluetooth adapter.
8807             </brief>
8808             <version>
8809  2.2
8810             </version>
8811             <Code> var changeListener = {
8812       onstatechanged: function(powered) {
8813           console.log (&quot;Power state is changed into: &quot; + powered);
8814       },
8815       onnamechanged: function(name) {
8816           console.log(&quot;Name is changed to: &quot; + name);
8817       },
8818       onvisibilitychanged: function(visible) {
8819           console.log(&quot;Visibility is changed into: &quot; + visible);
8820       }
8821  };
8822
8823  var adapter = tizen.bluetooth.getDefaultAdapter();
8824  adapter.setChangeListener(changeListener);
8825  </Code>
8826         </descriptive>
8827         <Type type="void"/>
8828         <ArgumentList>
8829           <Argument name="listener">
8830             <descriptive>
8831                 <description><p>
8832  The Bluetooth Adapter event listener to set.
8833                 </p></description>
8834             </descriptive>
8835             <Type name="BluetoothAdapterChangeCallback"/>
8836           </Argument>
8837         </ArgumentList>
8838         <Raises>
8839           <RaiseException name="WebAPIException">
8840             <descriptive>
8841                 <description><p>
8842  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
8843                 </p></description>
8844                 <description><p>
8845  with error type SecurityError, if this functionality is not allowed.
8846                 </p></description>
8847                 <description><p>
8848  with error type UnknownError, if any other error occurs.
8849                 </p></description>
8850             </descriptive>
8851           </RaiseException>
8852         </Raises>
8853       </Operation>
8854       <Operation name="unsetChangeListener" id="::Bluetooth::BluetoothAdapter::unsetChangeListener">
8855         <webidl>        void unsetChangeListener() raises(<ref>WebAPIException</ref>);</webidl>
8856         <descriptive>
8857             <brief>
8858  Unsets the listener, so stop receiving notifications about changes of Bluetooth adapter.
8859             </brief>
8860             <version>
8861  2.2
8862             </version>
8863             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
8864
8865  var changeListener = {
8866       onstatechanged: function(powered) {
8867           console.log (&quot;Power state is changed into: &quot; + powered);
8868           if(!powered)
8869               adapter.unsetChangeListener();
8870       },
8871       onnamechanged: function(name) {
8872           console.log(&quot;Name is changed to: &quot; + name);
8873       },
8874       onvisibilitychanged: function(visible) {
8875           console.log(&quot;Visibility is changed into: &quot; + visible);
8876       }
8877  };
8878
8879  adapter.setChangeListener(changeListener);
8880  </Code>
8881         </descriptive>
8882         <Type type="void"/>
8883         <ArgumentList/>
8884         <Raises>
8885           <RaiseException name="WebAPIException">
8886             <descriptive>
8887                 <description><p>
8888  with error type SecurityError, if this functionality is not allowed.
8889                 </p></description>
8890                 <description><p>
8891  with error type UnknownError, if any other error occurs.
8892                 </p></description>
8893             </descriptive>
8894           </RaiseException>
8895         </Raises>
8896       </Operation>
8897       <Operation name="discoverDevices" id="::Bluetooth::BluetoothAdapter::discoverDevices">
8898         <webidl>        void discoverDevices(<ref>BluetoothDiscoverDevicesSuccessCallback</ref> successCallback, 
8899                              optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
8900         <descriptive>
8901             <brief>
8902  Discovers nearby Bluetooth devices if any, that is, devices within proximity to the local device.
8903             </brief>
8904            <description>
8905             <p>
8906 This method initiates the device discovery process. Depending on the progress of this process the following methods are invoked:
8907             </p>
8908             <ul>
8909               <li>
8910 <em>BluetoothDiscoverDevicesSuccessCallback.onstarted()</em> - when a discovery process starts successfully.              </li>
8911               <li>
8912 <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>
8913               <li>
8914 <em>BluetoothDiscoverDevicesSuccessCallback.ondevicedisappeared()</em> - when a device goes out of proximity and this method is invoked with the address of the device.              </li>
8915               <li>
8916 <em>BluetoothDiscoverDevicesSuccessCallback.onfinished()</em> - when a discovery process is completed.              </li>
8917             </ul>
8918             <p>
8919 A discovery process can be canceled anytime, by calling <em>stopDiscovery() </em>on the <em>BluetoothAdapter</em>.
8920             </p>
8921             <p>
8922 The ErrorCallback is launched with these error types:
8923             </p>
8924             <ul>
8925               <li>
8926  ServiceNotAvailableError - If a Bluetooth device is turned off.              </li>
8927               <li>
8928  UnknownError - If any other error occurs.              </li>
8929             </ul>
8930            </description>
8931             <version>
8932  1.0
8933             </version>
8934             <privilegelevel>
8935  public
8936             </privilegelevel>
8937             <privilege>
8938  http://tizen.org/privilege/bluetooth.gap
8939             </privilege>
8940             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
8941  
8942  function startDiscovery() {
8943
8944   var discoverDevicesSuccessCallback = {
8945       onstarted: function() { 
8946           console.log (&quot;Device discovery started...&quot;);
8947       },
8948       ondevicefound: function(device) { 
8949           console.log(&quot;Found device - name: &quot; + device.name + &quot;, Address: &quot;+ device.address); 
8950       },
8951       ondevicedisappeared: function(address) { 
8952           console.log(&quot;Device disappeared: &quot; + address); 
8953       },
8954       onfinished: function(devices) { 
8955           console.log(&quot;Found Devices&quot;);
8956           for (var i = 0; i &#60; devices.length; i++) {
8957               console.log(&quot;Name: &quot; + devices[i].name + &quot;, Address: &quot; + devices[i].address);
8958           }
8959           console.log(&quot;Total: &quot; + devices.length);
8960       }
8961   };
8962  
8963   // Starts searching for nearby devices, for about 12 sec.
8964   adapter.discoverDevices(discoverDevicesSuccessCallback, function(e){
8965       console.log (&quot;Failed to search devices: &quot; + e.message + &quot;(&quot; + e.name + &quot;)&quot;);
8966   });
8967  }
8968
8969  function onSetPoweredError(e) {
8970      console.log (&quot;Could not turn on device, reason: &quot; + e.message + &quot;(&quot; + e.name + &quot;)&quot;);
8971  }
8972
8973  adapter.setPowered(true, startDiscovery, onSetPoweredError);
8974  </Code>
8975         </descriptive>
8976         <Type type="void"/>
8977         <ArgumentList>
8978           <Argument name="successCallback">
8979             <descriptive>
8980                 <description><p>
8981  The method to invoke when an asynchronous call completes successfully.
8982                 </p></description>
8983             </descriptive>
8984             <Type name="BluetoothDiscoverDevicesSuccessCallback"/>
8985           </Argument>
8986           <Argument optional="optional" name="errorCallback">
8987             <descriptive>
8988                 <description><p>
8989  The method to invoke when an error occurs.
8990                 </p></description>
8991             </descriptive>
8992             <Type name="ErrorCallback" nullable="nullable"/>
8993           </Argument>
8994         </ArgumentList>
8995         <Raises>
8996           <RaiseException name="WebAPIException">
8997             <descriptive>
8998                 <description><p>
8999  with error type TypeMismatchError, if any of the input parameter is not compatible with the expected type for that parameter.
9000                 </p></description>
9001                 <description><p>
9002  with error type SecurityError, if the application does not have the privilege to call this method.
9003                 </p></description>
9004                 <description><p>
9005  with error type NotSupportedError, if this feature is not supported.
9006                 </p></description>
9007             </descriptive>
9008           </RaiseException>
9009         </Raises>
9010       </Operation>
9011       <Operation name="stopDiscovery" id="::Bluetooth::BluetoothAdapter::stopDiscovery">
9012         <webidl>        void stopDiscovery(optional <ref>SuccessCallback</ref>? successCallback, 
9013                            optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
9014         <descriptive>
9015             <brief>
9016  Stops an active device discovery session.
9017             </brief>
9018            <description>
9019             <p>
9020 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.
9021             </p>
9022             <p>
9023 The ErrorCallback is launched with these error types:
9024             </p>
9025             <ul>
9026               <li>
9027  ServiceNotAvailableError - If a Bluetooth device is turned off.              </li>
9028               <li>
9029  UnknownError - If any other error occurs.              </li>
9030             </ul>
9031            </description>
9032             <version>
9033  1.0
9034             </version>
9035             <privilegelevel>
9036  public
9037             </privilegelevel>
9038             <privilege>
9039  http://tizen.org/privilege/bluetooth.gap
9040             </privilege>
9041             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
9042  
9043  // Calls this method whenever user finds one of the device
9044  function cancelDiscovery() {
9045     adapter.stopDiscovery(function() {
9046         console.log(&quot;Stop discovery success.&quot;);
9047     },
9048     function (e) {
9049         console.log(&quot;Error while stopDiscovery:&quot; + e.message);
9050     });
9051  }
9052
9053  function startDiscovery() {
9054
9055   var discoverDevicesSuccessCallback = {
9056       onstarted: function() { 
9057           console.log (&quot;Device discovery started...&quot;) ;
9058       },
9059       ondevicefound: function(device) {
9060           console.log(&quot;Found device - name: &quot; + device.name + &quot;, Address: &quot;+ device.address);
9061           // Shows the device to user to check if this is the device user is looking for.
9062           // For example, add this to list view.
9063
9064           cancelDiscovery();
9065       },
9066       ondevicedisappeared: function(address) { 
9067           console.log(&quot;Device disappeared: &quot; + address);
9068           // Removes from list, as it is no longer valid.
9069       },
9070       onfinished: function(devices) { 
9071           console.log(&quot;Found Devices&quot;);
9072           for (var i = 0; i &#60; devices.length; i++) {
9073               console.log(&quot;Name: &quot; + devices[i].name + &quot;, Address: &quot; + devices[i].address);
9074           }
9075           console.log(&quot;Total: &quot; + devices.length);
9076       }
9077   };
9078  
9079   // Starts searching for nearby devices, for about 12 sec.
9080   adapter.discoverDevices(discoverDevicesSuccessCallback, function(e){
9081       console.log (&quot;Failed to search devices: &quot; + e.message + &quot;(&quot; + e.name + &quot;)&quot;);
9082   });
9083  }
9084
9085  function onSetPoweredError(e) {
9086      console.log (&quot;Could not turn on device, reason: &quot; + e.message + &quot;(&quot; + e.name + &quot;)&quot;);
9087  }
9088
9089  adapter.setPowered(true, startDiscovery, onSetPoweredError);
9090  </Code>
9091         </descriptive>
9092         <Type type="void"/>
9093         <ArgumentList>
9094           <Argument optional="optional" name="successCallback">
9095             <descriptive>
9096                 <description><p>
9097  The method to invoke when an asynchronous call completes successfully.
9098                 </p></description>
9099             </descriptive>
9100             <Type name="SuccessCallback" nullable="nullable"/>
9101           </Argument>
9102           <Argument optional="optional" name="errorCallback">
9103             <descriptive>
9104                 <description><p>
9105  The method to invoke when an error occurs.
9106                 </p></description>
9107             </descriptive>
9108             <Type name="ErrorCallback" nullable="nullable"/>
9109           </Argument>
9110         </ArgumentList>
9111         <Raises>
9112           <RaiseException name="WebAPIException">
9113             <descriptive>
9114                 <description><p>
9115  with error type TypeMismatchError, if any of the input parameter is not compatible with the expected type for that parameter.
9116                 </p></description>
9117                 <description><p>
9118  with error type SecurityError, if the application does not have the privilege to call this method.
9119                 </p></description>
9120                 <description><p>
9121  with error type NotSupportedError, if this feature is not supported.
9122                 </p></description>
9123             </descriptive>
9124           </RaiseException>
9125         </Raises>
9126       </Operation>
9127       <Operation name="getKnownDevices" id="::Bluetooth::BluetoothAdapter::getKnownDevices">
9128         <webidl>        void getKnownDevices(<ref>BluetoothDeviceArraySuccessCallback</ref> successCallback, 
9129                              optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
9130         <descriptive>
9131             <brief>
9132  Gets all the known devices that have information stored in the local Bluetooth adapter.
9133             </brief>
9134            <description>
9135             <p>
9136 A known device is one of the following:
9137             </p>
9138             <ul>
9139               <li>
9140 a bonded device              </li>
9141               <li>
9142 a device found in last inquiry process              </li>
9143             </ul>
9144             <p>
9145 On success, it returns the list of currently known devices through <em>BluetoothDeviceArraySuccessCallback</em>.
9146             </p>
9147             <p>
9148 The ErrorCallback is launched with these error types:
9149             </p>
9150             <ul>
9151               <li>
9152  ServiceNotAvailableError - If a Bluetooth device is turned off.              </li>
9153               <li>
9154  UnknownError - If any other error occurs.              </li>
9155             </ul>
9156            </description>
9157             <version>
9158  1.0
9159             </version>
9160             <privilegelevel>
9161  public
9162             </privilegelevel>
9163             <privilege>
9164  http://tizen.org/privilege/bluetooth.gap
9165             </privilege>
9166             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
9167  
9168  function onGotDevices(devices) {
9169     console.log(&quot;Devices&quot;);
9170     for (var i = 0; i &#60; devices.length; i++) {
9171         console.log(&quot; Name: &quot; + devices[i].name + &quot;, Address: &quot; + devices[i].address);
9172     }
9173     console.log(&quot;Total: &quot; + devices.length);
9174  }
9175
9176  function onError(e) {
9177    console.log (&quot;Error: &quot; + e.message);
9178  }
9179
9180  function onBluetoothsetPowered() {
9181     adapter.getKnownDevices(onGotDevices, onError);
9182  }
9183  
9184  // Turns on Bluetooth
9185  adapter.setPowered(true, onBluetoothsetPowered);
9186  </Code>
9187         </descriptive>
9188         <Type type="void"/>
9189         <ArgumentList>
9190           <Argument name="successCallback">
9191             <descriptive>
9192                 <description><p>
9193  The method to invoke at retrieval of a list of Bluetooth devices that were bonded (paired) to the local Bluetooth adapter.
9194                 </p></description>
9195             </descriptive>
9196             <Type name="BluetoothDeviceArraySuccessCallback"/>
9197           </Argument>
9198           <Argument optional="optional" name="errorCallback">
9199             <descriptive>
9200                 <description><p>
9201  The method to invoke in case of failure in finding any bonded devices.
9202                 </p></description>
9203             </descriptive>
9204             <Type name="ErrorCallback" nullable="nullable"/>
9205           </Argument>
9206         </ArgumentList>
9207         <Raises>
9208           <RaiseException name="WebAPIException">
9209             <descriptive>
9210                 <description><p>
9211  with error type TypeMismatchError, if the input parameter is not compatible with the expected type for that parameter
9212                 </p></description>
9213                 <description><p>
9214  with error type SecurityError, if the application does not have the privilege to call this method.
9215                 </p></description>
9216                 <description><p>
9217  with error type NotSupportedError, if this feature is not supported.
9218                 </p></description>
9219             </descriptive>
9220           </RaiseException>
9221         </Raises>
9222       </Operation>
9223       <Operation name="getDevice" id="::Bluetooth::BluetoothAdapter::getDevice">
9224         <webidl>        void getDevice(<ref>BluetoothAddress</ref> address,
9225                        <ref>BluetoothDeviceSuccessCallback</ref> successCallback, 
9226                        optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
9227         <descriptive>
9228             <brief>
9229  Gets the <em>BluetoothDevice</em> object for a given device hardware address.
9230             </brief>
9231            <description>
9232             <p>
9233 This method returns device information stored in the local Bluetooth adapter for the specified device <em>address</em> through 
9234 BluetoothDeviceSuccessCallback.
9235 A valid hardware address must be passed, such as &quot;35:F4:59:D1:7A:03&quot;.
9236             </p>
9237             <p>
9238 The ErrorCallback is launched with these error types:
9239             </p>
9240             <ul>
9241               <li>
9242  NotFoundError - If there is no device with the given address.              </li>
9243               <li>
9244  ServiceNotAvailableError - If a Bluetooth device is turned off.              </li>
9245               <li>
9246  UnknownError - If any other error occurs.              </li>
9247             </ul>
9248            </description>
9249             <version>
9250  1.0
9251             </version>
9252             <privilegelevel>
9253  public
9254             </privilegelevel>
9255             <privilege>
9256  http://tizen.org/privilege/bluetooth.gap
9257             </privilege>
9258             <Code> function gotDeviceInfo(device) {
9259     console.log(&quot;Device Name: &quot; + device.name);
9260     console.log(&quot;Device Address: &quot; + device.address);
9261     console.log(&quot;Device Class: &quot; + device.deviceClass.major);
9262     console.log(&quot;Is Bonded: &quot; + (device.isBonded ? &quot;Yes&quot; : &quot;No&quot;));
9263  }
9264
9265  function onError(e) {
9266     console.log (&quot;Could not get device info:&quot; + e.message);
9267  }
9268
9269  var adapter = tizen.bluetooth.getDefaultAdapter();
9270  adapter.getDevice(&quot;35:F4:59:D1:7A:03&quot;, gotDeviceInfo, onError);
9271  </Code>
9272         </descriptive>
9273         <Type type="void"/>
9274         <ArgumentList>
9275           <Argument name="address">
9276             <descriptive>
9277                 <description><p>
9278  The address of a remote Bluetooth device to get.
9279                 </p></description>
9280             </descriptive>
9281             <Type name="BluetoothAddress"/>
9282           </Argument>
9283           <Argument name="successCallback">
9284             <descriptive>
9285                 <description><p>
9286  The method to invoke when an asynchronous call completes successfully.
9287                 </p></description>
9288             </descriptive>
9289             <Type name="BluetoothDeviceSuccessCallback"/>
9290           </Argument>
9291           <Argument optional="optional" name="errorCallback">
9292             <descriptive>
9293                 <description><p>
9294  The method to invoke when an error occurs.
9295                 </p></description>
9296             </descriptive>
9297             <Type name="ErrorCallback" nullable="nullable"/>
9298           </Argument>
9299         </ArgumentList>
9300         <Raises>
9301           <RaiseException name="WebAPIException">
9302             <descriptive>
9303                 <description><p>
9304  with error type TypeMismatchError, if the input parameter is not compatible with the expected type for that parameter
9305                 </p></description>
9306                 <description><p>
9307  with error type SecurityError, if the application does not have the privilege to call this method.
9308                 </p></description>
9309                 <description><p>
9310  with error type NotSupportedError, if this feature is not supported.
9311                 </p></description>
9312             </descriptive>
9313           </RaiseException>
9314         </Raises>
9315       </Operation>
9316       <Operation name="createBonding" id="::Bluetooth::BluetoothAdapter::createBonding">
9317         <webidl>        void createBonding(<ref>BluetoothAddress</ref> address,
9318                            <ref>BluetoothDeviceSuccessCallback</ref> successCallback, 
9319                            optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
9320         <descriptive>
9321             <brief>
9322  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.
9323             </brief>
9324            <description>
9325             <p>
9326 If the bonding process is successful, the device information is sent in <em>successCallback</em>.
9327             </p>
9328             <p>
9329 The ErrorCallback is launched with these error types:
9330             </p>
9331             <ul>
9332               <li>
9333  NotFoundError - If there is no device with the given address.              </li>
9334               <li>
9335  ServiceNotAvailableError - If a Bluetooth device is turned off.              </li>
9336               <li>
9337  UnknownError - If any other error occurs.              </li>
9338             </ul>
9339            </description>
9340             <version>
9341  1.0
9342             </version>
9343             <privilegelevel>
9344  public
9345             </privilegelevel>
9346             <privilege>
9347  http://tizen.org/privilege/bluetooth.gap
9348             </privilege>
9349             <Code> function onBondingSuccess(device) {
9350     console.log(&quot;Device Name:&quot; + device.name);
9351     console.log(&quot;Device Address:&quot; + device.address);
9352     console.log(&quot;Device Service UUIDs:&quot; + device.uuids.join(&quot;\n&quot;));
9353  }
9354
9355  function onError(e) {
9356     console.log (&quot;Could not create bonding, reason:&quot; + e.message);
9357  }
9358
9359  var adapter = tizen.bluetooth.getDefaultAdapter();
9360  adapter.createBonding(&quot;35:F4:59:D1:7A:03&quot;, onBondingSuccess, onError);
9361  </Code>
9362         </descriptive>
9363         <Type type="void"/>
9364         <ArgumentList>
9365           <Argument name="address">
9366             <descriptive>
9367                 <description><p>
9368  The MAC address of remote Bluetooth address to bond with.
9369                 </p></description>
9370             </descriptive>
9371             <Type name="BluetoothAddress"/>
9372           </Argument>
9373           <Argument name="successCallback">
9374             <descriptive>
9375                 <description><p>
9376  The method to invoke when an asynchronous call completes successfully.
9377                 </p></description>
9378             </descriptive>
9379             <Type name="BluetoothDeviceSuccessCallback"/>
9380           </Argument>
9381           <Argument optional="optional" name="errorCallback">
9382             <descriptive>
9383                 <description><p>
9384  The method to invoke when an error occurs.
9385                 </p></description>
9386             </descriptive>
9387             <Type name="ErrorCallback" nullable="nullable"/>
9388           </Argument>
9389         </ArgumentList>
9390         <Raises>
9391           <RaiseException name="WebAPIException">
9392             <descriptive>
9393                 <description><p>
9394  with error type TypeMismatchError, if the input parameter is not compatible with the expected type for that parameter.
9395                 </p></description>
9396                 <description><p>
9397  with error type SecurityError, if the application does not have the privilege to call this method.
9398                 </p></description>
9399                 <description><p>
9400  with error type NotSupportedError, if this feature is not supported.
9401                 </p></description>
9402             </descriptive>
9403           </RaiseException>
9404         </Raises>
9405       </Operation>
9406       <Operation name="destroyBonding" id="::Bluetooth::BluetoothAdapter::destroyBonding">
9407         <webidl>        void destroyBonding(<ref>BluetoothAddress</ref> address,
9408                             optional <ref>SuccessCallback</ref>? successCallback, 
9409                             optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
9410         <descriptive>
9411             <brief>
9412  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.
9413             </brief>
9414            <description>
9415             <p>
9416 The ErrorCallback is launched with these error types:
9417             </p>
9418             <ul>
9419               <li>
9420  NotFoundError - If there is no device with the given address.              </li>
9421               <li>
9422  ServiceNotAvailableError - If a Bluetooth device is turned off.              </li>
9423               <li>
9424  UnknownError - If any other error occurs.              </li>
9425             </ul>
9426            </description>
9427             <version>
9428  1.0
9429             </version>
9430             <privilegelevel>
9431  public
9432             </privilegelevel>
9433             <privilege>
9434  http://tizen.org/privilege/bluetooth.gap
9435             </privilege>
9436             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
9437  
9438  function gotDevice(device) {
9439     if (device.isBonded) {
9440       // Initiates destroying bonding
9441       adapter.destroyBonding(device.address, function() { 
9442            console.log(&quot;Succeeded to destroy the bond success with:&quot; + device.address);
9443        },
9444        function(e) { 
9445            console.log(&quot;Failed to destroy the bond with &quot; + device.address + &quot;, reason: &quot; + e.message); 
9446        });
9447     }
9448  }
9449
9450  var deviceAddress = &quot;35:F4:59:D1:7A:03&quot;;
9451  adapter.getDevice(deviceAddress, gotDevice, function(e) { 
9452              console.log(&quot;Failed to get device info for &quot; + deviceAddress + &quot;, reason: &quot; + e.message); 
9453  } );
9454  </Code>
9455         </descriptive>
9456         <Type type="void"/>
9457         <ArgumentList>
9458           <Argument name="address">
9459             <descriptive>
9460                 <description><p>
9461  The address of a bonded device.
9462                 </p></description>
9463             </descriptive>
9464             <Type name="BluetoothAddress"/>
9465           </Argument>
9466           <Argument optional="optional" name="successCallback">
9467             <descriptive>
9468                 <description><p>
9469  The method to invoke when an asynchronous call completes successfully.
9470                 </p></description>
9471             </descriptive>
9472             <Type name="SuccessCallback" nullable="nullable"/>
9473           </Argument>
9474           <Argument optional="optional" name="errorCallback">
9475             <descriptive>
9476                 <description><p>
9477  The method to invoke when an error occurs.
9478                 </p></description>
9479             </descriptive>
9480             <Type name="ErrorCallback" nullable="nullable"/>
9481           </Argument>
9482         </ArgumentList>
9483         <Raises>
9484           <RaiseException name="WebAPIException">
9485             <descriptive>
9486                 <description><p>
9487  with error type TypeMismatchError, if the input parameter is not compatible with the expected type for that parameter
9488                 </p></description>
9489                 <description><p>
9490  with error type SecurityError, if the application does not have the privilege to call this method.
9491                 </p></description>
9492                 <description><p>
9493  with error type NotSupportedError, if this feature is not supported.
9494                 </p></description>
9495             </descriptive>
9496           </RaiseException>
9497         </Raises>
9498       </Operation>
9499       <Operation name="registerRFCOMMServiceByUUID" id="::Bluetooth::BluetoothAdapter::registerRFCOMMServiceByUUID">
9500         <webidl>        void registerRFCOMMServiceByUUID(<ref>BluetoothUUID</ref> uuid,
9501                                          DOMString name,
9502                                          <ref>BluetoothServiceSuccessCallback</ref> successCallback, 
9503                                          optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
9504         <descriptive>
9505             <brief>
9506  Registers a service record in the device service record database with the specified <em>uuid</em>, <em>name</em>.
9507             </brief>
9508            <description>
9509             <p>
9510 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. 
9511 The service handler can be used to be notified on client connections or to unregister the service.
9512 User interaction is mandatory to connect to a registered service.
9513             </p>
9514             <p>
9515 If any client(remote device) connects to this service, then <em>BluetoothServiceHandler.onconnect()</em> is invoked with <em>BluetoothSocket</em> object.
9516             </p>
9517             <p>
9518 <em>BluetoothServiceHandler.unregister()</em> can be used to unregister the service record from the device service database and stop listening for client connections.
9519             </p>
9520             <p>
9521 The ErrorCallback is launched with these error types:
9522             </p>
9523             <ul>
9524               <li>
9525  InvalidValuesError - If any of the input parameters contain an invalid value.              </li>
9526               <li>
9527  ServiceNotAvailableError - If a Bluetooth device is turned off.              </li>
9528               <li>
9529  UnknownError - If any other error occurs.              </li>
9530             </ul>
9531            </description>
9532             <version>
9533  1.0
9534             </version>
9535             <privilegelevel>
9536  public
9537             </privilegelevel>
9538             <privilege>
9539  http://tizen.org/privilege/bluetooth.spp
9540             </privilege>
9541             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
9542  // Holds currently registered service record
9543  var chatServiceHandler = null;
9544  // Holds currently open socket
9545  var serviceSocket = null;
9546
9547  function chatServiceSuccessCb(recordHandler) {
9548     console.log(&quot;Chat service registration succeeds!&quot;);
9549     chatServiceHandler = recordHandler;
9550     recordHandler.onconnect = function(socket) {
9551         console.log(&quot;Client connected: &quot; + socket.peer.name + &quot;,&quot; + socket.peer.address);
9552         serviceSocket = socket;
9553         // Messages received from remote device
9554         socket.onmessage = function() {
9555              var data = socket.readData();
9556              // Handles message code goes here
9557              
9558         };
9559         
9560         socket.onclose = function() {
9561             console.log('The socket is closed.');
9562             serviceSocket = null;
9563         };
9564     };
9565  };
9566
9567  function publishChatService()
9568  {
9569     var CHAT_SERVICE_UUID = &quot;5BCE9431-6C75-32AB-AFE0-2EC108A30860&quot;;
9570     adapter.registerRFCOMMServiceByUUID(CHAT_SERVICE_UUID, &quot;Chat service&quot;, chatServiceSuccessCb,
9571       // Error handler
9572       function(e) {
9573            console.log( &quot;Could not register service record, Error: &quot; + e.message);
9574       });
9575  }
9576  
9577  function unregisterChatService()
9578  {
9579       if (chatServiceHandler != null) {
9580           chatServiceHandler.unregister(function() {
9581                console.log(&quot;Chat service is unregistered&quot;);
9582                chatServiceHandler = null;
9583            }, function(e) {
9584                console.log(&quot;Failed to unregister service: &quot; + e.message);
9585            });
9586       }
9587  }
9588  </Code>
9589         </descriptive>
9590         <Type type="void"/>
9591         <ArgumentList>
9592           <Argument name="uuid">
9593             <descriptive>
9594                 <description><p>
9595  The UUID of the service, to which clients connects.
9596                 </p></description>
9597             </descriptive>
9598             <Type name="BluetoothUUID"/>
9599           </Argument>
9600           <Argument name="name">
9601             <descriptive>
9602                 <description><p>
9603  The Name of a service.
9604                 </p></description>
9605             </descriptive>
9606             <Type type="DOMString"/>
9607           </Argument>
9608           <Argument name="successCallback">
9609             <descriptive>
9610                 <description><p>
9611  The method to invoke on successful service registration.
9612                 </p></description>
9613             </descriptive>
9614             <Type name="BluetoothServiceSuccessCallback"/>
9615           </Argument>
9616           <Argument optional="optional" name="errorCallback">
9617             <descriptive>
9618                 <description><p>
9619  The method to invoke when an error occurs.
9620                 </p></description>
9621             </descriptive>
9622             <Type name="ErrorCallback" nullable="nullable"/>
9623           </Argument>
9624         </ArgumentList>
9625         <Raises>
9626           <RaiseException name="WebAPIException">
9627             <descriptive>
9628                 <description><p>
9629  with error type TypeMismatchError, if the input parameter is not compatible with the expected type for that parameter.
9630                 </p></description>
9631                 <description><p>
9632  with error type SecurityError, if the application does not have the privilege to call this method.
9633                 </p></description>
9634                 <description><p>
9635  with error type NotSupportedError, if this feature is not supported.
9636                 </p></description>
9637             </descriptive>
9638           </RaiseException>
9639         </Raises>
9640       </Operation>
9641       <Operation name="getBluetoothProfileHandler" id="::Bluetooth::BluetoothAdapter::getBluetoothProfileHandler">
9642         <webidl>        <ref>BluetoothProfileHandler</ref> getBluetoothProfileHandler(<ref>BluetoothProfileType</ref> profileType) raises(<ref>WebAPIException</ref>);</webidl>
9643         <descriptive>
9644             <brief>
9645  Gets the profile handler for the given type.
9646             </brief>
9647             <version>
9648  2.2
9649             </version>
9650             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
9651  var healthProfileHandler = adapter.getBluetoothProfileHandler(&quot;HEALTH&quot;);
9652  </Code>
9653         </descriptive>
9654         <Type name="BluetoothProfileHandler"/>
9655         <ArgumentList>
9656           <Argument name="profileType">
9657             <descriptive>
9658                 <description><p>
9659  The type of Bluetooth Profile.
9660                 </p></description>
9661             </descriptive>
9662             <Type name="BluetoothProfileType"/>
9663           </Argument>
9664         </ArgumentList>
9665         <Raises>
9666           <RaiseException name="WebAPIException">
9667             <descriptive>
9668                 <description><p>
9669  with error type TypeMismatchError, if the input parameter is not compatible with the expected type for that parameter.
9670                 </p></description>
9671                 <description><p>
9672  with error type NotSupportedError, if this feature is not supported.
9673                 </p></description>
9674                 <description><p>
9675  with error type UnknownError, if any other error occurs.
9676                 </p></description>
9677             </descriptive>
9678           </RaiseException>
9679         </Raises>
9680       </Operation>
9681     </Interface>
9682     <Interface name="BluetoothDevice" id="::Bluetooth::BluetoothDevice">
9683       <webidl>    [NoInterfaceObject] interface BluetoothDevice {
9684         readonly attribute DOMString name;
9685         readonly attribute <ref>BluetoothAddress</ref> address;
9686         readonly attribute <ref>BluetoothClass</ref> deviceClass;
9687         readonly attribute boolean isBonded;
9688         readonly attribute boolean isTrusted;
9689         readonly attribute boolean isConnected;
9690         readonly attribute <ref>BluetoothUUID</ref>[] uuids;
9691
9692         void connectToServiceByUUID(<ref>BluetoothUUID</ref> uuid,
9693                                     <ref>BluetoothSocketSuccessCallback</ref> successCallback, 
9694                                     optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
9695     };</webidl>
9696       <descriptive>
9697           <brief>
9698  This interface represents a remote Bluetooth device.
9699           </brief>
9700          <description>
9701           <p>
9702 A <em>BluetoothDevice</em> object can be retrieved using one of the following APIs:
9703           </p>
9704           <ul>
9705             <li>
9706  BluetoothAdapter.getDevice()            </li>
9707             <li>
9708  BluetoothAdapter.getKnownDevices()             </li>
9709             <li>
9710  BluetoothAdapter.discoverDevices()             </li>
9711             <li>
9712  BluetoothAdapter.createBonding()             </li>
9713           </ul>
9714          </description>
9715           <version>
9716  1.0
9717           </version>
9718       </descriptive>
9719       <ExtendedAttributeList>
9720         <ExtendedAttribute name="NoInterfaceObject">
9721           <webidl>NoInterfaceObject</webidl>
9722         </ExtendedAttribute>
9723       </ExtendedAttributeList>
9724       <Attribute readonly="readonly" name="name" id="::Bluetooth::BluetoothDevice::name">
9725         <webidl>        readonly attribute DOMString name;</webidl>
9726         <descriptive>
9727             <brief>
9728  An attribute to store the readable name of this remote device.
9729             </brief>
9730             <version>
9731  1.0
9732             </version>
9733             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
9734  adapter.getDevice(&quot;11:22:33:44:55:66&quot;, function(device) {
9735     console.log(&quot;Device Name: &quot; + device.name);
9736  });
9737  </Code>
9738         </descriptive>
9739         <Type type="DOMString"/>
9740       </Attribute>
9741       <Attribute readonly="readonly" name="address" id="::Bluetooth::BluetoothDevice::address">
9742         <webidl>        readonly attribute <ref>BluetoothAddress</ref> address;</webidl>
9743         <descriptive>
9744             <brief>
9745  An attribute to store the hardware address of this remote device.
9746             </brief>
9747             <version>
9748  1.0
9749             </version>
9750             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
9751  adapter.getDevice(&quot;11:22:33:44:55:66&quot;, function(device) {
9752     console.log(&quot;Device Address: &quot; + device.address);
9753  });
9754  </Code>
9755         </descriptive>
9756         <Type name="BluetoothAddress"/>
9757       </Attribute>
9758       <Attribute readonly="readonly" name="deviceClass" id="::Bluetooth::BluetoothDevice::deviceClass">
9759         <webidl>        readonly attribute <ref>BluetoothClass</ref> deviceClass;</webidl>
9760         <descriptive>
9761             <brief>
9762  An attribute to indicate a device class, which represents the type of the device and the services it provides.
9763             </brief>
9764             <version>
9765  1.0
9766             </version>
9767             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
9768  adapter.getDevice(&quot;11:22:33:44:55:66&quot;, function(device) {
9769     console.log(&quot;Device Major Class: &quot; + device.deviceClass.major);
9770  });
9771  </Code>
9772         </descriptive>
9773         <Type name="BluetoothClass"/>
9774       </Attribute>
9775       <Attribute readonly="readonly" name="isBonded" id="::Bluetooth::BluetoothDevice::isBonded">
9776         <webidl>        readonly attribute boolean isBonded;</webidl>
9777         <descriptive>
9778             <brief>
9779  An attribute to check the bond state of this remote device with the local device.
9780             </brief>
9781             <version>
9782  1.0
9783             </version>
9784             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
9785  adapter.getDevice(&quot;11:22:33:44:55:66&quot;, function(device) {
9786     console.log(&quot;Is bonded: &quot; + (device.isBonded ? &quot;Yes&quot; : &quot;No&quot;));
9787  });
9788  </Code>
9789         </descriptive>
9790         <Type type="boolean"/>
9791       </Attribute>
9792       <Attribute readonly="readonly" name="isTrusted" id="::Bluetooth::BluetoothDevice::isTrusted">
9793         <webidl>        readonly attribute boolean isTrusted;</webidl>
9794         <descriptive>
9795             <brief>
9796  An attribute to check whether the local device recognizes this remote device as a trusted device or not.
9797             </brief>
9798             <version>
9799  1.0
9800             </version>
9801             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
9802  adapter.getDevice(&quot;11:22:33:44:55:66&quot;, function(device) {
9803     console.log(&quot;Is trusted: &quot; + (device.isTrusted ? &quot;Yes&quot; : &quot;No&quot;));
9804  });
9805  </Code>
9806         </descriptive>
9807         <Type type="boolean"/>
9808       </Attribute>
9809       <Attribute readonly="readonly" name="isConnected" id="::Bluetooth::BluetoothDevice::isConnected">
9810         <webidl>        readonly attribute boolean isConnected;</webidl>
9811         <descriptive>
9812             <brief>
9813  An attribute to check the connection state of this remote device with the local device.
9814             </brief>
9815             <version>
9816  1.0
9817             </version>
9818             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
9819  adapter.getDevice(&quot;11:22:33:44:55:66&quot;, function(device) {
9820     console.log(&quot;Is connected: &quot; + (device.isConnected ? &quot;Yes&quot; : &quot;No&quot;));
9821  });
9822  </Code>
9823         </descriptive>
9824         <Type type="boolean"/>
9825       </Attribute>
9826       <Attribute readonly="readonly" name="uuids" id="::Bluetooth::BluetoothDevice::uuids">
9827         <webidl>        readonly attribute <ref>BluetoothUUID</ref>[] uuids;</webidl>
9828         <descriptive>
9829             <brief>
9830  An attribute to store the list of 128 bit service UUIDs available on this remote device.
9831             </brief>
9832             <version>
9833  1.0
9834             </version>
9835             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
9836  var CHAT_SERVICE_UUID = &quot;5BCE9431-6C75-32AB-AFE0-2EC108A30860&quot;;
9837  adapter.getDevice(&quot;11:22:33:44:55:66&quot;, function(device) {
9838     var uuids = device.uuids;
9839     var services = &quot;&quot;;
9840     for (var i = 0; i &#60; uuids.length; i++) {
9841         services += uuids[i] + &quot;\n&quot;;
9842     }
9843     console.log (&quot;Services found: &quot; + services);
9844     if (uuids.indexOf(CHAT_SERVICE_UUID) != -1) {
9845         // Connects to service
9846         device.connectToServiceByUUID(CHAT_SERVICE_UUID, function(socket) {
9847             //
9848             // Connected to service, handle socket
9849             //
9850         }, function (e) {
9851             console.log(&quot;Could not connect to chat service !!!. Error: &quot; + e.message);
9852         });
9853     }
9854  });
9855  </Code>
9856         </descriptive>
9857         <Type type="array">
9858           <Type name="BluetoothUUID"/>
9859         </Type>
9860       </Attribute>
9861       <Operation name="connectToServiceByUUID" id="::Bluetooth::BluetoothDevice::connectToServiceByUUID">
9862         <webidl>        void connectToServiceByUUID(<ref>BluetoothUUID</ref> uuid,
9863                                     <ref>BluetoothSocketSuccessCallback</ref> successCallback, 
9864                                     optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
9865         <descriptive>
9866             <brief>
9867  Connects to a specified service identified by <em>uuid</em> on this remote device.
9868             </brief>
9869            <description>
9870             <p>
9871 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.
9872             </p>
9873             <p>
9874 The ErrorCallback is launched with these error types:
9875             </p>
9876             <ul>
9877               <li>
9878  NotFoundError - If there is no service with the specified <em>uuid</em>.              </li>
9879               <li>
9880  InvalidValuesError - If any of the input parameters contain an invalid value.              </li>
9881               <li>
9882  UnknownError - If any other error occurs.              </li>
9883             </ul>
9884            </description>
9885             <version>
9886  1.0
9887             </version>
9888             <privilegelevel>
9889  public
9890             </privilegelevel>
9891             <privilege>
9892  http://tizen.org/privilege/bluetooth.spp
9893             </privilege>
9894             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
9895  var clientSocket = null;
9896
9897  // Calls a method that is invoked when user wants to send a message to a remote device
9898  function sendMessage(msg) {
9899     // Validates socket state, if everything is ok.
9900     if (clientSocket != null &amp;&amp; clientSocket.state == &quot;OPEN&quot;) {
9901         // Sends the message
9902         clientSocket.writeData(msg);
9903     }
9904  }
9905
9906  // Calls a method that is invoked when a socket is open
9907  function onSocketConnected(socket) {
9908     clientSocket = socket;
9909     console.log(&quot;Opening a socket successfully!!!&quot;);
9910     socket.onmessage = function () {
9911         var data = socket.readData();
9912         var recvmsg = &quot;&quot;;
9913         for (var i = 0; i &#60; data.length; i++)
9914         {
9915            recvmsg += String.fromCharCode(data[i]);
9916         }
9917         console.log(&quot;server msg >> &quot; + recvmsg);
9918     };
9919
9920     socket.onclose = function() {
9921         console.log(&quot;socket disconnected.&quot;);
9922     };
9923  }
9924
9925  function onDeviceReady(device) {
9926     // Validates device and service uuid
9927     if (device.uuids.indexOf(&quot;5BCE9431-6C75-32AB-AFE0-2EC108A30860&quot;) != -1) {
9928        // Opens socket
9929        device.connectToServiceByUUID(&quot;5BCE9431-6C75-32AB-AFE0-2EC108A30860&quot;, onSocketConnected, function(e) {
9930            console.log (&quot;Error connecting to service. Reason: &quot; + e.message);
9931         });
9932     }
9933     else {
9934         console.log (&quot;Chat service is not supported by this device&quot;);
9935     }
9936  }
9937
9938  function onSetPowered() {
9939     // Gets the BluetoothDevice object
9940     adapter.getDevice(&quot;35:F4:59:D1:7A:03&quot;, onDeviceReady, function(e) { console.log(&quot;Error: &quot; + e.message); });
9941  }
9942
9943  adapter.setPowered(true, onSetPowered, function(e) {console.log (&quot;Could not turn on Bluetooth adapter. reason: &quot; + e.message); });
9944  </Code>
9945         </descriptive>
9946         <Type type="void"/>
9947         <ArgumentList>
9948           <Argument name="uuid">
9949             <descriptive>
9950                 <description><p>
9951  The 128 bit unique identifier, which represents the service record on the device.
9952                 </p></description>
9953             </descriptive>
9954             <Type name="BluetoothUUID"/>
9955           </Argument>
9956           <Argument name="successCallback">
9957             <descriptive>
9958                 <description><p>
9959  The method to invoke when an asynchronous call completes successfully.
9960                 </p></description>
9961             </descriptive>
9962             <Type name="BluetoothSocketSuccessCallback"/>
9963           </Argument>
9964           <Argument optional="optional" name="errorCallback">
9965             <descriptive>
9966                 <description><p>
9967  The method to invoke when opening of a socket fails.
9968                 </p></description>
9969             </descriptive>
9970             <Type name="ErrorCallback" nullable="nullable"/>
9971           </Argument>
9972         </ArgumentList>
9973         <Raises>
9974           <RaiseException name="WebAPIException">
9975             <descriptive>
9976                 <description><p>
9977  with error type TypeMismatchError, if the input parameter is not compatible with the expected type for that parameter
9978                 </p></description>
9979                 <description><p>
9980  with error type SecurityError, if the application does not have the privilege to call this method.
9981                 </p></description>
9982                 <description><p>
9983  with error type NotSupportedError, if this feature is not supported.
9984                 </p></description>
9985             </descriptive>
9986           </RaiseException>
9987         </Raises>
9988       </Operation>
9989     </Interface>
9990     <Interface name="BluetoothSocket" id="::Bluetooth::BluetoothSocket">
9991       <webidl>    [NoInterfaceObject] interface BluetoothSocket {
9992         readonly attribute <ref>BluetoothUUID</ref> uuid;
9993         readonly attribute <ref>BluetoothSocketState</ref> state;
9994         readonly attribute <ref>BluetoothDevice</ref> peer;
9995         [TreatNonCallableAsNull] attribute <ref>SuccessCallback</ref>? onmessage raises(<ref>WebAPIException</ref>);
9996         [TreatNonCallableAsNull] attribute <ref>SuccessCallback</ref>? onclose raises(<ref>WebAPIException</ref>);
9997         unsigned long writeData(byte[] data) raises(<ref>WebAPIException</ref>);
9998
9999
10000         byte[] readData() raises(<ref>WebAPIException</ref>);
10001
10002
10003         void close() raises(<ref>WebAPIException</ref>);
10004     };</webidl>
10005       <descriptive>
10006           <brief>
10007  This interface represents the Bluetooth socket.
10008           </brief>
10009          <description>
10010           <p>
10011 The socket object is created by <em>BluetoothDevice.connectToServiceByUUID()</em> or <em>BluetoothAdapter.registerRFCOMMServiceByUUID()</em>.
10012           </p>
10013          </description>
10014           <version>
10015  1.0
10016           </version>
10017       </descriptive>
10018       <ExtendedAttributeList>
10019         <ExtendedAttribute name="NoInterfaceObject">
10020           <webidl>NoInterfaceObject</webidl>
10021         </ExtendedAttribute>
10022       </ExtendedAttributeList>
10023       <Attribute readonly="readonly" name="uuid" id="::Bluetooth::BluetoothSocket::uuid">
10024         <webidl>        readonly attribute <ref>BluetoothUUID</ref> uuid;</webidl>
10025         <descriptive>
10026             <brief>
10027  An attribute to store the service UUID to which this socket is connected.
10028             </brief>
10029             <version>
10030  1.0
10031             </version>
10032         </descriptive>
10033         <Type name="BluetoothUUID"/>
10034       </Attribute>
10035       <Attribute readonly="readonly" name="state" id="::Bluetooth::BluetoothSocket::state">
10036         <webidl>        readonly attribute <ref>BluetoothSocketState</ref> state;</webidl>
10037         <descriptive>
10038             <brief>
10039  An attribute to indicate the socket state.
10040             </brief>
10041             <version>
10042  1.0
10043             </version>
10044         </descriptive>
10045         <Type name="BluetoothSocketState"/>
10046       </Attribute>
10047       <Attribute readonly="readonly" name="peer" id="::Bluetooth::BluetoothSocket::peer">
10048         <webidl>        readonly attribute <ref>BluetoothDevice</ref> peer;</webidl>
10049         <descriptive>
10050             <brief>
10051  The peer device to which this socket is connected.
10052             </brief>
10053             <version>
10054  1.0
10055             </version>
10056         </descriptive>
10057         <Type name="BluetoothDevice"/>
10058       </Attribute>
10059       <Attribute name="onmessage" id="::Bluetooth::BluetoothSocket::onmessage">
10060         <webidl>        [TreatNonCallableAsNull] attribute <ref>SuccessCallback</ref>? onmessage raises(<ref>WebAPIException</ref>);</webidl>
10061         <descriptive>
10062             <brief>
10063  The success callback to be invoked when an incoming message is received from the peer.
10064 By default, this attribute is set to null.
10065             </brief>
10066             <version>
10067  1.0
10068             </version>
10069         </descriptive>
10070         <ExtendedAttributeList>
10071           <ExtendedAttribute name="TreatNonCallableAsNull">
10072             <webidl>TreatNonCallableAsNull</webidl>
10073           </ExtendedAttribute>
10074         </ExtendedAttributeList>
10075         <Type name="SuccessCallback" nullable="nullable"/>
10076         <Raises>
10077           <RaiseException name="WebAPIException">
10078             <descriptive>
10079                 <description><p>
10080  with error type TypeMismatchError, if any input attribute is not compatible with the expected type for this attribute.
10081                 </p></description>
10082             </descriptive>
10083           </RaiseException>
10084         </Raises>
10085       </Attribute>
10086       <Attribute name="onclose" id="::Bluetooth::BluetoothSocket::onclose">
10087         <webidl>        [TreatNonCallableAsNull] attribute <ref>SuccessCallback</ref>? onclose raises(<ref>WebAPIException</ref>);</webidl>
10088         <descriptive>
10089             <brief>
10090  The success callback to be invoked when the socket is closed.
10091 By default, this attribute is set to null.
10092             </brief>
10093             <version>
10094  1.0
10095             </version>
10096         </descriptive>
10097         <ExtendedAttributeList>
10098           <ExtendedAttribute name="TreatNonCallableAsNull">
10099             <webidl>TreatNonCallableAsNull</webidl>
10100           </ExtendedAttribute>
10101         </ExtendedAttributeList>
10102         <Type name="SuccessCallback" nullable="nullable"/>
10103         <Raises>
10104           <RaiseException name="WebAPIException">
10105             <descriptive>
10106                 <description><p>
10107  with error type TypeMismatchError, if any input attribute is not compatible with the expected type for this attribute.
10108                 </p></description>
10109             </descriptive>
10110           </RaiseException>
10111         </Raises>
10112       </Attribute>
10113       <Operation name="writeData" id="::Bluetooth::BluetoothSocket::writeData">
10114         <webidl>        unsigned long writeData(byte[] data) raises(<ref>WebAPIException</ref>);</webidl>
10115         <descriptive>
10116             <brief>
10117  Writes data as a sequence of bytes onto the socket and returns the number of bytes actually written.
10118             </brief>
10119             <version>
10120  1.0
10121             </version>
10122             <privilegelevel>
10123  public
10124             </privilegelevel>
10125             <privilege>
10126  http://tizen.org/privilege/bluetooth.spp
10127             </privilege>
10128             <Code> 
10129  var adapter = tizen.bluetooth.getDefaultAdapter();
10130  
10131  function onSocketConnected(socket) {
10132     console.log (&quot;Opened connection to remote device&quot;);
10133     socket.onmessage = function () {
10134       console.log (&quot;Message received: &quot; + socket.readData());
10135     };
10136
10137     socket.onclose = function() {
10138        console.log(&quot;Socket closed with &quot; + socket.peer.name);
10139     };
10140
10141     // Sends data to peer.
10142     var textmsg = &quot;Test&quot;;
10143     var sendtextmsg = new Array();
10144     for (var i = 0; i &#60; textmsg.length; i++)
10145     {
10146         sendtextmsg[i] = textmsg.charCodeAt(i);
10147     }
10148     socket.writeData (sendtextmsg);
10149  }
10150
10151  function onSocketError(e) {
10152     console.log (&quot;Error connecting to service. Reason: &quot; + e.message);
10153  }
10154
10155  function onDeviceReady(device) {
10156     // Validates device and service uuid
10157     if (device.uuids.indexOf(&quot;5BCE9431-6C75-32AB-AFE0-2EC108A30860&quot;) != -1) {
10158        // Opens socket
10159        device.connectToServiceByUUID(&quot;5BCE9431-6C75-32AB-AFE0-2EC108A30860&quot;, onSocketConnected, onSocketError );
10160     }
10161  }
10162  function onSetPowered() {
10163     // Gets the BluetoothDevice object
10164     adapter.getDevice(&quot;35:F4:59:D1:7A:03&quot;, onDeviceReady, function(e) { console.log(&quot;Error: &quot; + e.message); });
10165  }
10166
10167  adapter.setPowered(true, onSetPowered, function(e) {console.log (&quot;Could not turn on Bluetooth adapter. reason: &quot; + e.message); });
10168  </Code>
10169         </descriptive>
10170         <Type type="unsigned long">
10171           <descriptive>
10172               <description><p>
10173  unsigned long The number of bytes actually sent.
10174               </p></description>
10175           </descriptive>
10176         </Type>
10177         <ArgumentList>
10178           <Argument name="data">
10179             <descriptive>
10180                 <description><p>
10181  The data to send.
10182                 </p></description>
10183             </descriptive>
10184             <Type type="array">
10185               <Type type="byte"/>
10186             </Type>
10187           </Argument>
10188         </ArgumentList>
10189         <Raises>
10190           <RaiseException name="WebAPIException">
10191             <descriptive>
10192                 <description><p>
10193  with error type TypeMismatchError, if any input parameters not compatible with the expected type for that parameter.
10194                 </p></description>
10195                 <description><p>
10196  with error type SecurityError, if the application does not have the privilege to call this method.
10197                 </p></description>
10198                 <description><p>
10199  with error type NotSupportedError, if this feature is not supported.
10200                 </p></description>
10201                 <description><p>
10202  with error type UnknownError, if any other error occurs. 
10203                 </p></description>
10204             </descriptive>
10205           </RaiseException>
10206         </Raises>
10207       </Operation>
10208       <Operation name="readData" id="::Bluetooth::BluetoothSocket::readData">
10209         <webidl>        byte[] readData() raises(<ref>WebAPIException</ref>);</webidl>
10210         <descriptive>
10211             <brief>
10212  Reads data from the socket.
10213             </brief>
10214            <description>
10215             <p>
10216 This method should be called only in the <em>BluetoothSocket.onmessage</em> handler, that is, when data is ready on the socket.
10217             </p>
10218            </description>
10219             <version>
10220  1.0
10221             </version>
10222             <privilegelevel>
10223  public
10224             </privilegelevel>
10225             <privilege>
10226  http://tizen.org/privilege/bluetooth.spp
10227             </privilege>
10228             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
10229
10230  function onError(e) {
10231     console.log (&quot;Error connecting to service. Reason: &quot; + e.message);
10232  }
10233
10234  function onSocketConnected(socket) {
10235     console.log (&quot;Opening socket success!!!&quot;);
10236
10237     socket.onmessage = function() {
10238       //  Has got a message from peer, reads it
10239       var data = socket.readData();
10240
10241       //
10242       // Code to evaluate message goes here
10243       //
10244     };
10245
10246     socket.onclose = function() {
10247        console.log(&quot;Socket closed with &quot; + socket.peer.name);
10248     };
10249  }
10250
10251  function onDeviceReady(device) {
10252     // Validates device and service uuid
10253     if (device.uuids.indexOf(&quot;5BCE9431-6C75-32AB-AFE0-2EC108A30860&quot;) != -1) {
10254        // Opens socket
10255        device.connectToServiceByUUID(&quot;5BCE9431-6C75-32AB-AFE0-2EC108A30860&quot;, onSocketConnected, onError);
10256     }
10257  }
10258  function onSetPowered() {
10259     // Gets the BluetoothDevice object
10260     adapter.getDevice(&quot;35:F4:59:D1:7A:03&quot;, onDeviceReady, function(e) { console.log(&quot;Error: &quot; + e.message); });
10261  }
10262
10263  adapter.setPowered(true, onSetPowered, function(e) {console.log (&quot;Could not turn on Bluetooth adapter. reason: &quot; + e.message); });
10264  </Code>
10265         </descriptive>
10266         <Type type="array">
10267           <descriptive>
10268               <description><p>
10269  byte[] The sequence of bytes successfully read.
10270               </p></description>
10271           </descriptive>
10272           <Type type="byte"/>
10273         </Type>
10274         <ArgumentList/>
10275         <Raises>
10276           <RaiseException name="WebAPIException">
10277             <descriptive>
10278                 <description><p>
10279  with error type SecurityError, if the application does not have the privilege to call this method.
10280                 </p></description>
10281                 <description><p>
10282  with error type NotSupportedError, if this feature is not supported.
10283                 </p></description>
10284                 <description><p>
10285  with error type UnknownError, if any other error occurs. 
10286                 </p></description>
10287             </descriptive>
10288           </RaiseException>
10289         </Raises>
10290       </Operation>
10291       <Operation name="close" id="::Bluetooth::BluetoothSocket::close">
10292         <webidl>        void close() raises(<ref>WebAPIException</ref>);</webidl>
10293         <descriptive>
10294             <brief>
10295  Closes the socket.
10296             </brief>
10297            <description>
10298             <p>
10299 <b>BluetoothSocket.state</b> changes to <var>CLOSED</var>, and <em>BluetoothSocket.onclose()</em> is invoked on success.
10300             </p>
10301            </description>
10302             <version>
10303  1.0
10304             </version>
10305             <privilegelevel>
10306  public
10307             </privilegelevel>
10308             <privilege>
10309  http://tizen.org/privilege/bluetooth.spp
10310             </privilege>
10311         </descriptive>
10312         <Type type="void"/>
10313         <ArgumentList/>
10314         <Raises>
10315           <RaiseException name="WebAPIException">
10316             <descriptive>
10317                 <description><p>
10318  with error type NotSupportedError, if this feature is not supported.
10319                 </p></description>
10320                 <description><p>
10321  with error type SecurityError, if the application does not have the privilege to call this method.
10322                 </p></description>
10323                 <description><p>
10324  with error type UnknownError, if any other error occurs. 
10325                 </p></description>
10326             </descriptive>
10327           </RaiseException>
10328         </Raises>
10329       </Operation>
10330     </Interface>
10331     <Interface name="BluetoothClass" id="::Bluetooth::BluetoothClass">
10332       <webidl>    [NoInterfaceObject] interface BluetoothClass {
10333         readonly attribute octet major;
10334         
10335         readonly attribute octet minor;
10336         
10337         readonly attribute unsigned short [] services ;
10338         
10339         boolean hasService(unsigned short service) raises(<ref>WebAPIException</ref>);
10340     };</webidl>
10341       <descriptive>
10342           <brief>
10343  This interface represents Bluetooth Class of Device/Service(CoD).
10344           </brief>
10345          <description>
10346           <p>
10347 Bluetooth device class describes the characteristics and capabilities of a device.
10348           </p>
10349           <p>
10350 Bluetooth CoD is a 24 bit integer created by the union of three components:
10351           </p>
10352           <ul>
10353             <li>
10354 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>
10355             <li>
10356 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>
10357             <li>
10358 Zero or more <b>Major Service Classes</b>(bits 13-23) - Represents the services supported by the device.            </li>
10359           </ul>
10360           <p>
10361 The Major and Minor classes are intended to define a general family of devices with which any particular implementation wishes to be associated. 
10362 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.
10363           </p>
10364          </description>
10365           <version>
10366  1.0
10367           </version>
10368       </descriptive>
10369       <ExtendedAttributeList>
10370         <ExtendedAttribute name="NoInterfaceObject">
10371           <webidl>NoInterfaceObject</webidl>
10372         </ExtendedAttribute>
10373       </ExtendedAttributeList>
10374       <Attribute readonly="readonly" name="major" id="::Bluetooth::BluetoothClass::major">
10375         <webidl>        readonly attribute octet major;</webidl>
10376         <descriptive>
10377             <brief>
10378  The major device class and it refers to the <em>BluetoothClassDeviceMajor</em> interface for the list of possible
10379 values.
10380             </brief>
10381             <version>
10382  1.0
10383             </version>
10384             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
10385  
10386  function evaluateDevice(address) {
10387     adapter.getDevice(address, function(device) {
10388         if (device.deviceClass.major == tizen.bluetooth.deviceMajor.COMPUTER) {
10389             // Shows computer icon for this device
10390             console.log(&quot;Device is computer&quot;);
10391         } else if (device.deviceClass.major == tizen.bluetooth.deviceMajor.PHONE) {
10392             // Shows phone icon
10393             console.log(&quot;Device is a Phone&quot;);
10394         }
10395     }, function(e) {
10396         console.log(&quot;Couldn't get any device with the given address: &quot; + e.message);
10397     });
10398  }
10399
10400  evaluateDevice(&quot;11:22:33:44:55:66&quot;);
10401
10402  </Code>
10403         </descriptive>
10404         <Type type="octet"/>
10405       </Attribute>
10406       <Attribute readonly="readonly" name="minor" id="::Bluetooth::BluetoothClass::minor">
10407         <webidl>        readonly attribute octet minor;</webidl>
10408         <descriptive>
10409             <brief>
10410  The minor device class and it refer to the <em>BluetoothClassDeviceMinor</em> interface for the list of possible values.
10411             </brief>
10412             <version>
10413  1.0
10414             </version>
10415         </descriptive>
10416         <Type type="octet"/>
10417       </Attribute>
10418       <Attribute readonly="readonly" name="services" id="::Bluetooth::BluetoothClass::services">
10419         <webidl>        readonly attribute unsigned short [] services ;</webidl>
10420         <descriptive>
10421             <brief>
10422  The services provided by this device and it refers to the <em>BluetoothClassDeviceService</em> interface for the list of possible
10423 values.
10424             </brief>
10425             <version>
10426  1.0
10427             </version>
10428         </descriptive>
10429         <Type type="array">
10430           <Type type="unsigned short"/>
10431         </Type>
10432       </Attribute>
10433       <Operation name="hasService" id="::Bluetooth::BluetoothClass::hasService">
10434         <webidl>        boolean hasService(unsigned short service) raises(<ref>WebAPIException</ref>);</webidl>
10435         <descriptive>
10436             <brief>
10437  Checks whether the given service exists in the <em>services</em>.
10438             </brief>
10439             <version>
10440  1.0
10441             </version>
10442             <privilegelevel>
10443  public
10444             </privilegelevel>
10445             <privilege>
10446  http://tizen.org/privilege/bluetooth.gap
10447             </privilege>
10448             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
10449  adapter.getDevice(&quot;12:34:56:78:9A:BC&quot;, function(device) {
10450     if (device.deviceClass.hasService(tizen.bluetooth.deviceService.POSITIONING)) {
10451          console.log(&quot;Device supports Positioning service&quot;);
10452     }
10453  }, function(e) {
10454     console.log(&quot;Couldn't get device for given address: &quot; + e.message);
10455  });
10456  </Code>
10457         </descriptive>
10458         <Type type="boolean"/>
10459         <ArgumentList>
10460           <Argument name="service">
10461             <descriptive>
10462                 <description><p>
10463  The service to check.
10464                 </p></description>
10465             </descriptive>
10466             <Type type="unsigned short"/>
10467           </Argument>
10468         </ArgumentList>
10469         <Raises>
10470           <RaiseException name="WebAPIException">
10471             <descriptive>
10472                 <description><p>
10473  with error type InvalidValuesError, if any of the input parameters contain an invalid value.
10474                 </p></description>
10475                 <description><p>
10476  with error type NotSupportedError, if this feature is not supported.
10477                 </p></description>
10478                 <description><p>
10479  with error type SecurityError, if the application does not have the privilege to call this method.
10480                 </p></description>
10481                 <description><p>
10482  with error type UnknownError, if any other error occurs. 
10483                 </p></description>
10484             </descriptive>
10485           </RaiseException>
10486         </Raises>
10487       </Operation>
10488     </Interface>
10489     <Interface name="BluetoothClassDeviceMajor" id="::Bluetooth::BluetoothClassDeviceMajor">
10490       <webidl>    [NoInterfaceObject] interface BluetoothClassDeviceMajor {
10491
10492         const octet MISC = 0x00;
10493         const octet COMPUTER = 0x01;
10494         const octet PHONE = 0x02;
10495         const octet NETWORK = 0x03;
10496         const octet AUDIO_VIDEO = 0x04;
10497         const octet PERIPHERAL = 0x05;
10498         const octet IMAGING = 0x06;
10499         const octet WEARABLE = 0x07;
10500         const octet TOY = 0x08;
10501         const octet HEALTH = 0x09;
10502         const octet UNCATEGORIZED = 0x1F;
10503     };</webidl>
10504       <descriptive>
10505           <brief>
10506  This interface holds the identifiers for major device classes of Bluetooth CoD.
10507           </brief>
10508           <version>
10509  1.0
10510           </version>
10511       </descriptive>
10512       <ExtendedAttributeList>
10513         <ExtendedAttribute name="NoInterfaceObject">
10514           <webidl>NoInterfaceObject</webidl>
10515         </ExtendedAttribute>
10516       </ExtendedAttributeList>
10517       <Const name="MISC" value="0x00" id="::Bluetooth::BluetoothClassDeviceMajor::MISC">
10518         <webidl>        const octet MISC = 0x00;</webidl>
10519         <Type type="octet"/>
10520       </Const>
10521       <Const name="COMPUTER" value="0x01" id="::Bluetooth::BluetoothClassDeviceMajor::COMPUTER">
10522         <webidl>        const octet COMPUTER = 0x01;</webidl>
10523         <Type type="octet"/>
10524       </Const>
10525       <Const name="PHONE" value="0x02" id="::Bluetooth::BluetoothClassDeviceMajor::PHONE">
10526         <webidl>        const octet PHONE = 0x02;</webidl>
10527         <Type type="octet"/>
10528       </Const>
10529       <Const name="NETWORK" value="0x03" id="::Bluetooth::BluetoothClassDeviceMajor::NETWORK">
10530         <webidl>        const octet NETWORK = 0x03;</webidl>
10531         <Type type="octet"/>
10532       </Const>
10533       <Const name="AUDIO_VIDEO" value="0x04" id="::Bluetooth::BluetoothClassDeviceMajor::AUDIO_VIDEO">
10534         <webidl>        const octet AUDIO_VIDEO = 0x04;</webidl>
10535         <Type type="octet"/>
10536       </Const>
10537       <Const name="PERIPHERAL" value="0x05" id="::Bluetooth::BluetoothClassDeviceMajor::PERIPHERAL">
10538         <webidl>        const octet PERIPHERAL = 0x05;</webidl>
10539         <Type type="octet"/>
10540       </Const>
10541       <Const name="IMAGING" value="0x06" id="::Bluetooth::BluetoothClassDeviceMajor::IMAGING">
10542         <webidl>        const octet IMAGING = 0x06;</webidl>
10543         <Type type="octet"/>
10544       </Const>
10545       <Const name="WEARABLE" value="0x07" id="::Bluetooth::BluetoothClassDeviceMajor::WEARABLE">
10546         <webidl>        const octet WEARABLE = 0x07;</webidl>
10547         <Type type="octet"/>
10548       </Const>
10549       <Const name="TOY" value="0x08" id="::Bluetooth::BluetoothClassDeviceMajor::TOY">
10550         <webidl>        const octet TOY = 0x08;</webidl>
10551         <Type type="octet"/>
10552       </Const>
10553       <Const name="HEALTH" value="0x09" id="::Bluetooth::BluetoothClassDeviceMajor::HEALTH">
10554         <webidl>        const octet HEALTH = 0x09;</webidl>
10555         <Type type="octet"/>
10556       </Const>
10557       <Const name="UNCATEGORIZED" value="0x1F" id="::Bluetooth::BluetoothClassDeviceMajor::UNCATEGORIZED">
10558         <webidl>        const octet UNCATEGORIZED = 0x1F;</webidl>
10559         <Type type="octet"/>
10560       </Const>
10561     </Interface>
10562     <Interface name="BluetoothClassDeviceMinor" id="::Bluetooth::BluetoothClassDeviceMinor">
10563       <webidl>    [NoInterfaceObject] interface BluetoothClassDeviceMinor {
10564         const octet COMPUTER_UNCATEGORIZED = 0x00;
10565         const octet COMPUTER_DESKTOP = 0x01;
10566         const octet COMPUTER_SERVER = 0x02;
10567         const octet COMPUTER_LAPTOP = 0x03;
10568         const octet COMPUTER_HANDHELD_PC_OR_PDA = 0x04;
10569         const octet COMPUTER_PALM_PC_OR_PDA = 0x05;
10570         const octet COMPUTER_WEARABLE = 0x06;
10571
10572         const octet PHONE_UNCATEGORIZED = 0x00;
10573         const octet PHONE_CELLULAR = 0x01;
10574         const octet PHONE_CORDLESS = 0x02;
10575         const octet PHONE_SMARTPHONE = 0x03;
10576         const octet PHONE_MODEM_OR_GATEWAY = 0x04;
10577         const octet PHONE_ISDN = 0x05;
10578
10579         const octet AV_UNRECOGNIZED = 0x00;
10580         const octet AV_WEARABLE_HEADSET = 0x01;
10581         const octet AV_HANDSFREE = 0x02;
10582         const octet AV_MICROPHONE = 0x04;
10583         const octet AV_LOUDSPEAKER = 0x05;
10584         const octet AV_HEADPHONES = 0x06;
10585         const octet AV_PORTABLE_AUDIO = 0x07;
10586         const octet AV_CAR_AUDIO = 0x08;
10587         const octet AV_SETTOP_BOX = 0x09;
10588         const octet AV_HIFI = 0x0a;
10589         const octet AV_VCR = 0x0b;
10590         const octet AV_VIDEO_CAMERA = 0x0c;
10591         const octet AV_CAMCORDER = 0x0d;
10592         const octet AV_MONITOR = 0x0e;
10593         const octet AV_DISPLAY_AND_LOUDSPEAKER = 0x0f;
10594         const octet AV_VIDEO_CONFERENCING = 0x10;
10595         const octet AV_GAMING_TOY = 0x12;
10596
10597         const octet PERIPHERAL_UNCATEGORIZED = 0;
10598         const octet PERIPHERAL_KEYBOARD = 0x10;
10599         const octet PERIPHERAL_POINTING_DEVICE = 0x20;
10600         const octet PERIPHERAL_KEYBOARD_AND_POINTING_DEVICE = 0x30;
10601         const octet PERIPHERAL_JOYSTICK = 0x01;
10602         const octet PERIPHERAL_GAMEPAD = 0x02;
10603         const octet PERIPHERAL_REMOTE_CONTROL = 0x03;
10604         const octet PERIPHERAL_SENSING_DEVICE = 0x04;
10605         const octet PERIPHERAL_DEGITIZER_TABLET = 0x05;
10606         const octet PERIPHERAL_CARD_READER = 0x06;
10607         const octet PERIPHERAL_DIGITAL_PEN = 0x07;
10608         const octet PERIPHERAL_HANDHELD_SCANNER = 0x08;
10609         const octet PERIPHERAL_HANDHELD_INPUT_DEVICE = 0x09;
10610
10611         const octet IMAGING_UNCATEGORIZED = 0x00;
10612         const octet IMAGING_DISPLAY = 0x04;
10613         const octet IMAGING_CAMERA = 0x08;
10614         const octet IMAGING_SCANNER = 0x10;
10615         const octet IMAGING_PRINTER = 0x20;
10616
10617         const octet WEARABLE_WRITST_WATCH = 0x01;
10618         const octet WEARABLE_PAGER = 0x02;
10619         const octet WEARABLE_JACKET = 0x03;
10620         const octet WEARABLE_HELMET = 0x04;
10621         const octet WEARABLE_GLASSES = 0x05;
10622
10623         const octet TOY_ROBOT = 0x01;
10624         const octet TOY_VEHICLE = 0x02;
10625         const octet TOY_DOLL = 0x03;
10626         const octet TOY_CONTROLLER = 0x04;
10627         const octet TOY_GAME = 0x05;
10628
10629         const octet HEALTH_UNDEFINED = 0x00;
10630         const octet HEALTH_BLOOD_PRESSURE_MONITOR = 0x01;
10631         const octet HEALTH_THERMOMETER = 0x02;
10632         const octet HEALTH_WEIGHING_SCALE = 0x03;
10633         const octet HEALTH_GLUCOSE_METER = 0x04;
10634         const octet HEALTH_PULSE_OXIMETER = 0x05;
10635         const octet HEALTH_PULSE_RATE_MONITOR = 0x06;
10636         const octet HEALTH_DATA_DISPLAY = 0x07;
10637         const octet HEALTH_STEP_COUNTER = 0x08;
10638         const octet HEALTH_BODY_COMPOSITION_ANALYZER = 0x09;
10639         const octet HEALTH_PEAK_FLOW_MONITOR = 0x0a;
10640         const octet HEALTH_MEDICATION_MONITOR = 0x0b;
10641         const octet HEALTH_KNEE_PROSTHESIS = 0x0c;
10642         const octet HEALTH_ANKLE_PROSTHESIS = 0x0d;
10643     };</webidl>
10644       <descriptive>
10645           <brief>
10646  This interface holds the identifiers for minor device classes of Bluetooth CoD.
10647           </brief>
10648           <version>
10649  1.0
10650           </version>
10651       </descriptive>
10652       <ExtendedAttributeList>
10653         <ExtendedAttribute name="NoInterfaceObject">
10654           <webidl>NoInterfaceObject</webidl>
10655         </ExtendedAttribute>
10656       </ExtendedAttributeList>
10657       <Const name="COMPUTER_UNCATEGORIZED" value="0x00" id="::Bluetooth::BluetoothClassDeviceMinor::COMPUTER_UNCATEGORIZED">
10658         <webidl>        const octet COMPUTER_UNCATEGORIZED = 0x00;</webidl>
10659         <Type type="octet"/>
10660       </Const>
10661       <Const name="COMPUTER_DESKTOP" value="0x01" id="::Bluetooth::BluetoothClassDeviceMinor::COMPUTER_DESKTOP">
10662         <webidl>        const octet COMPUTER_DESKTOP = 0x01;</webidl>
10663         <Type type="octet"/>
10664       </Const>
10665       <Const name="COMPUTER_SERVER" value="0x02" id="::Bluetooth::BluetoothClassDeviceMinor::COMPUTER_SERVER">
10666         <webidl>        const octet COMPUTER_SERVER = 0x02;</webidl>
10667         <Type type="octet"/>
10668       </Const>
10669       <Const name="COMPUTER_LAPTOP" value="0x03" id="::Bluetooth::BluetoothClassDeviceMinor::COMPUTER_LAPTOP">
10670         <webidl>        const octet COMPUTER_LAPTOP = 0x03;</webidl>
10671         <Type type="octet"/>
10672       </Const>
10673       <Const name="COMPUTER_HANDHELD_PC_OR_PDA" value="0x04" id="::Bluetooth::BluetoothClassDeviceMinor::COMPUTER_HANDHELD_PC_OR_PDA">
10674         <webidl>        const octet COMPUTER_HANDHELD_PC_OR_PDA = 0x04;</webidl>
10675         <Type type="octet"/>
10676       </Const>
10677       <Const name="COMPUTER_PALM_PC_OR_PDA" value="0x05" id="::Bluetooth::BluetoothClassDeviceMinor::COMPUTER_PALM_PC_OR_PDA">
10678         <webidl>        const octet COMPUTER_PALM_PC_OR_PDA = 0x05;</webidl>
10679         <Type type="octet"/>
10680       </Const>
10681       <Const name="COMPUTER_WEARABLE" value="0x06" id="::Bluetooth::BluetoothClassDeviceMinor::COMPUTER_WEARABLE">
10682         <webidl>        const octet COMPUTER_WEARABLE = 0x06;</webidl>
10683         <Type type="octet"/>
10684       </Const>
10685       <Const name="PHONE_UNCATEGORIZED" value="0x00" id="::Bluetooth::BluetoothClassDeviceMinor::PHONE_UNCATEGORIZED">
10686         <webidl>        const octet PHONE_UNCATEGORIZED = 0x00;</webidl>
10687         <Type type="octet"/>
10688       </Const>
10689       <Const name="PHONE_CELLULAR" value="0x01" id="::Bluetooth::BluetoothClassDeviceMinor::PHONE_CELLULAR">
10690         <webidl>        const octet PHONE_CELLULAR = 0x01;</webidl>
10691         <Type type="octet"/>
10692       </Const>
10693       <Const name="PHONE_CORDLESS" value="0x02" id="::Bluetooth::BluetoothClassDeviceMinor::PHONE_CORDLESS">
10694         <webidl>        const octet PHONE_CORDLESS = 0x02;</webidl>
10695         <Type type="octet"/>
10696       </Const>
10697       <Const name="PHONE_SMARTPHONE" value="0x03" id="::Bluetooth::BluetoothClassDeviceMinor::PHONE_SMARTPHONE">
10698         <webidl>        const octet PHONE_SMARTPHONE = 0x03;</webidl>
10699         <Type type="octet"/>
10700       </Const>
10701       <Const name="PHONE_MODEM_OR_GATEWAY" value="0x04" id="::Bluetooth::BluetoothClassDeviceMinor::PHONE_MODEM_OR_GATEWAY">
10702         <webidl>        const octet PHONE_MODEM_OR_GATEWAY = 0x04;</webidl>
10703         <Type type="octet"/>
10704       </Const>
10705       <Const name="PHONE_ISDN" value="0x05" id="::Bluetooth::BluetoothClassDeviceMinor::PHONE_ISDN">
10706         <webidl>        const octet PHONE_ISDN = 0x05;</webidl>
10707         <Type type="octet"/>
10708       </Const>
10709       <Const name="AV_UNRECOGNIZED" value="0x00" id="::Bluetooth::BluetoothClassDeviceMinor::AV_UNRECOGNIZED">
10710         <webidl>        const octet AV_UNRECOGNIZED = 0x00;</webidl>
10711         <Type type="octet"/>
10712       </Const>
10713       <Const name="AV_WEARABLE_HEADSET" value="0x01" id="::Bluetooth::BluetoothClassDeviceMinor::AV_WEARABLE_HEADSET">
10714         <webidl>        const octet AV_WEARABLE_HEADSET = 0x01;</webidl>
10715         <Type type="octet"/>
10716       </Const>
10717       <Const name="AV_HANDSFREE" value="0x02" id="::Bluetooth::BluetoothClassDeviceMinor::AV_HANDSFREE">
10718         <webidl>        const octet AV_HANDSFREE = 0x02;</webidl>
10719         <Type type="octet"/>
10720       </Const>
10721       <Const name="AV_MICROPHONE" value="0x04" id="::Bluetooth::BluetoothClassDeviceMinor::AV_MICROPHONE">
10722         <webidl>        const octet AV_MICROPHONE = 0x04;</webidl>
10723         <Type type="octet"/>
10724       </Const>
10725       <Const name="AV_LOUDSPEAKER" value="0x05" id="::Bluetooth::BluetoothClassDeviceMinor::AV_LOUDSPEAKER">
10726         <webidl>        const octet AV_LOUDSPEAKER = 0x05;</webidl>
10727         <Type type="octet"/>
10728       </Const>
10729       <Const name="AV_HEADPHONES" value="0x06" id="::Bluetooth::BluetoothClassDeviceMinor::AV_HEADPHONES">
10730         <webidl>        const octet AV_HEADPHONES = 0x06;</webidl>
10731         <Type type="octet"/>
10732       </Const>
10733       <Const name="AV_PORTABLE_AUDIO" value="0x07" id="::Bluetooth::BluetoothClassDeviceMinor::AV_PORTABLE_AUDIO">
10734         <webidl>        const octet AV_PORTABLE_AUDIO = 0x07;</webidl>
10735         <Type type="octet"/>
10736       </Const>
10737       <Const name="AV_CAR_AUDIO" value="0x08" id="::Bluetooth::BluetoothClassDeviceMinor::AV_CAR_AUDIO">
10738         <webidl>        const octet AV_CAR_AUDIO = 0x08;</webidl>
10739         <Type type="octet"/>
10740       </Const>
10741       <Const name="AV_SETTOP_BOX" value="0x09" id="::Bluetooth::BluetoothClassDeviceMinor::AV_SETTOP_BOX">
10742         <webidl>        const octet AV_SETTOP_BOX = 0x09;</webidl>
10743         <Type type="octet"/>
10744       </Const>
10745       <Const name="AV_HIFI" value="0x0a" id="::Bluetooth::BluetoothClassDeviceMinor::AV_HIFI">
10746         <webidl>        const octet AV_HIFI = 0x0a;</webidl>
10747         <Type type="octet"/>
10748       </Const>
10749       <Const name="AV_VCR" value="0x0b" id="::Bluetooth::BluetoothClassDeviceMinor::AV_VCR">
10750         <webidl>        const octet AV_VCR = 0x0b;</webidl>
10751         <Type type="octet"/>
10752       </Const>
10753       <Const name="AV_VIDEO_CAMERA" value="0x0c" id="::Bluetooth::BluetoothClassDeviceMinor::AV_VIDEO_CAMERA">
10754         <webidl>        const octet AV_VIDEO_CAMERA = 0x0c;</webidl>
10755         <Type type="octet"/>
10756       </Const>
10757       <Const name="AV_CAMCORDER" value="0x0d" id="::Bluetooth::BluetoothClassDeviceMinor::AV_CAMCORDER">
10758         <webidl>        const octet AV_CAMCORDER = 0x0d;</webidl>
10759         <Type type="octet"/>
10760       </Const>
10761       <Const name="AV_MONITOR" value="0x0e" id="::Bluetooth::BluetoothClassDeviceMinor::AV_MONITOR">
10762         <webidl>        const octet AV_MONITOR = 0x0e;</webidl>
10763         <Type type="octet"/>
10764       </Const>
10765       <Const name="AV_DISPLAY_AND_LOUDSPEAKER" value="0x0f" id="::Bluetooth::BluetoothClassDeviceMinor::AV_DISPLAY_AND_LOUDSPEAKER">
10766         <webidl>        const octet AV_DISPLAY_AND_LOUDSPEAKER = 0x0f;</webidl>
10767         <Type type="octet"/>
10768       </Const>
10769       <Const name="AV_VIDEO_CONFERENCING" value="0x10" id="::Bluetooth::BluetoothClassDeviceMinor::AV_VIDEO_CONFERENCING">
10770         <webidl>        const octet AV_VIDEO_CONFERENCING = 0x10;</webidl>
10771         <Type type="octet"/>
10772       </Const>
10773       <Const name="AV_GAMING_TOY" value="0x12" id="::Bluetooth::BluetoothClassDeviceMinor::AV_GAMING_TOY">
10774         <webidl>        const octet AV_GAMING_TOY = 0x12;</webidl>
10775         <Type type="octet"/>
10776       </Const>
10777       <Const name="PERIPHERAL_UNCATEGORIZED" value="0" id="::Bluetooth::BluetoothClassDeviceMinor::PERIPHERAL_UNCATEGORIZED">
10778         <webidl>        const octet PERIPHERAL_UNCATEGORIZED = 0;</webidl>
10779         <Type type="octet"/>
10780       </Const>
10781       <Const name="PERIPHERAL_KEYBOARD" value="0x10" id="::Bluetooth::BluetoothClassDeviceMinor::PERIPHERAL_KEYBOARD">
10782         <webidl>        const octet PERIPHERAL_KEYBOARD = 0x10;</webidl>
10783         <Type type="octet"/>
10784       </Const>
10785       <Const name="PERIPHERAL_POINTING_DEVICE" value="0x20" id="::Bluetooth::BluetoothClassDeviceMinor::PERIPHERAL_POINTING_DEVICE">
10786         <webidl>        const octet PERIPHERAL_POINTING_DEVICE = 0x20;</webidl>
10787         <Type type="octet"/>
10788       </Const>
10789       <Const name="PERIPHERAL_KEYBOARD_AND_POINTING_DEVICE" value="0x30" id="::Bluetooth::BluetoothClassDeviceMinor::PERIPHERAL_KEYBOARD_AND_POINTING_DEVICE">
10790         <webidl>        const octet PERIPHERAL_KEYBOARD_AND_POINTING_DEVICE = 0x30;</webidl>
10791         <Type type="octet"/>
10792       </Const>
10793       <Const name="PERIPHERAL_JOYSTICK" value="0x01" id="::Bluetooth::BluetoothClassDeviceMinor::PERIPHERAL_JOYSTICK">
10794         <webidl>        const octet PERIPHERAL_JOYSTICK = 0x01;</webidl>
10795         <Type type="octet"/>
10796       </Const>
10797       <Const name="PERIPHERAL_GAMEPAD" value="0x02" id="::Bluetooth::BluetoothClassDeviceMinor::PERIPHERAL_GAMEPAD">
10798         <webidl>        const octet PERIPHERAL_GAMEPAD = 0x02;</webidl>
10799         <Type type="octet"/>
10800       </Const>
10801       <Const name="PERIPHERAL_REMOTE_CONTROL" value="0x03" id="::Bluetooth::BluetoothClassDeviceMinor::PERIPHERAL_REMOTE_CONTROL">
10802         <webidl>        const octet PERIPHERAL_REMOTE_CONTROL = 0x03;</webidl>
10803         <Type type="octet"/>
10804       </Const>
10805       <Const name="PERIPHERAL_SENSING_DEVICE" value="0x04" id="::Bluetooth::BluetoothClassDeviceMinor::PERIPHERAL_SENSING_DEVICE">
10806         <webidl>        const octet PERIPHERAL_SENSING_DEVICE = 0x04;</webidl>
10807         <Type type="octet"/>
10808       </Const>
10809       <Const name="PERIPHERAL_DEGITIZER_TABLET" value="0x05" id="::Bluetooth::BluetoothClassDeviceMinor::PERIPHERAL_DEGITIZER_TABLET">
10810         <webidl>        const octet PERIPHERAL_DEGITIZER_TABLET = 0x05;</webidl>
10811         <Type type="octet"/>
10812       </Const>
10813       <Const name="PERIPHERAL_CARD_READER" value="0x06" id="::Bluetooth::BluetoothClassDeviceMinor::PERIPHERAL_CARD_READER">
10814         <webidl>        const octet PERIPHERAL_CARD_READER = 0x06;</webidl>
10815         <Type type="octet"/>
10816       </Const>
10817       <Const name="PERIPHERAL_DIGITAL_PEN" value="0x07" id="::Bluetooth::BluetoothClassDeviceMinor::PERIPHERAL_DIGITAL_PEN">
10818         <webidl>        const octet PERIPHERAL_DIGITAL_PEN = 0x07;</webidl>
10819         <Type type="octet"/>
10820       </Const>
10821       <Const name="PERIPHERAL_HANDHELD_SCANNER" value="0x08" id="::Bluetooth::BluetoothClassDeviceMinor::PERIPHERAL_HANDHELD_SCANNER">
10822         <webidl>        const octet PERIPHERAL_HANDHELD_SCANNER = 0x08;</webidl>
10823         <Type type="octet"/>
10824       </Const>
10825       <Const name="PERIPHERAL_HANDHELD_INPUT_DEVICE" value="0x09" id="::Bluetooth::BluetoothClassDeviceMinor::PERIPHERAL_HANDHELD_INPUT_DEVICE">
10826         <webidl>        const octet PERIPHERAL_HANDHELD_INPUT_DEVICE = 0x09;</webidl>
10827         <Type type="octet"/>
10828       </Const>
10829       <Const name="IMAGING_UNCATEGORIZED" value="0x00" id="::Bluetooth::BluetoothClassDeviceMinor::IMAGING_UNCATEGORIZED">
10830         <webidl>        const octet IMAGING_UNCATEGORIZED = 0x00;</webidl>
10831         <Type type="octet"/>
10832       </Const>
10833       <Const name="IMAGING_DISPLAY" value="0x04" id="::Bluetooth::BluetoothClassDeviceMinor::IMAGING_DISPLAY">
10834         <webidl>        const octet IMAGING_DISPLAY = 0x04;</webidl>
10835         <Type type="octet"/>
10836       </Const>
10837       <Const name="IMAGING_CAMERA" value="0x08" id="::Bluetooth::BluetoothClassDeviceMinor::IMAGING_CAMERA">
10838         <webidl>        const octet IMAGING_CAMERA = 0x08;</webidl>
10839         <Type type="octet"/>
10840       </Const>
10841       <Const name="IMAGING_SCANNER" value="0x10" id="::Bluetooth::BluetoothClassDeviceMinor::IMAGING_SCANNER">
10842         <webidl>        const octet IMAGING_SCANNER = 0x10;</webidl>
10843         <Type type="octet"/>
10844       </Const>
10845       <Const name="IMAGING_PRINTER" value="0x20" id="::Bluetooth::BluetoothClassDeviceMinor::IMAGING_PRINTER">
10846         <webidl>        const octet IMAGING_PRINTER = 0x20;</webidl>
10847         <Type type="octet"/>
10848       </Const>
10849       <Const name="WEARABLE_WRITST_WATCH" value="0x01" id="::Bluetooth::BluetoothClassDeviceMinor::WEARABLE_WRITST_WATCH">
10850         <webidl>        const octet WEARABLE_WRITST_WATCH = 0x01;</webidl>
10851         <Type type="octet"/>
10852       </Const>
10853       <Const name="WEARABLE_PAGER" value="0x02" id="::Bluetooth::BluetoothClassDeviceMinor::WEARABLE_PAGER">
10854         <webidl>        const octet WEARABLE_PAGER = 0x02;</webidl>
10855         <Type type="octet"/>
10856       </Const>
10857       <Const name="WEARABLE_JACKET" value="0x03" id="::Bluetooth::BluetoothClassDeviceMinor::WEARABLE_JACKET">
10858         <webidl>        const octet WEARABLE_JACKET = 0x03;</webidl>
10859         <Type type="octet"/>
10860       </Const>
10861       <Const name="WEARABLE_HELMET" value="0x04" id="::Bluetooth::BluetoothClassDeviceMinor::WEARABLE_HELMET">
10862         <webidl>        const octet WEARABLE_HELMET = 0x04;</webidl>
10863         <Type type="octet"/>
10864       </Const>
10865       <Const name="WEARABLE_GLASSES" value="0x05" id="::Bluetooth::BluetoothClassDeviceMinor::WEARABLE_GLASSES">
10866         <webidl>        const octet WEARABLE_GLASSES = 0x05;</webidl>
10867         <Type type="octet"/>
10868       </Const>
10869       <Const name="TOY_ROBOT" value="0x01" id="::Bluetooth::BluetoothClassDeviceMinor::TOY_ROBOT">
10870         <webidl>        const octet TOY_ROBOT = 0x01;</webidl>
10871         <Type type="octet"/>
10872       </Const>
10873       <Const name="TOY_VEHICLE" value="0x02" id="::Bluetooth::BluetoothClassDeviceMinor::TOY_VEHICLE">
10874         <webidl>        const octet TOY_VEHICLE = 0x02;</webidl>
10875         <Type type="octet"/>
10876       </Const>
10877       <Const name="TOY_DOLL" value="0x03" id="::Bluetooth::BluetoothClassDeviceMinor::TOY_DOLL">
10878         <webidl>        const octet TOY_DOLL = 0x03;</webidl>
10879         <Type type="octet"/>
10880       </Const>
10881       <Const name="TOY_CONTROLLER" value="0x04" id="::Bluetooth::BluetoothClassDeviceMinor::TOY_CONTROLLER">
10882         <webidl>        const octet TOY_CONTROLLER = 0x04;</webidl>
10883         <Type type="octet"/>
10884       </Const>
10885       <Const name="TOY_GAME" value="0x05" id="::Bluetooth::BluetoothClassDeviceMinor::TOY_GAME">
10886         <webidl>        const octet TOY_GAME = 0x05;</webidl>
10887         <Type type="octet"/>
10888       </Const>
10889       <Const name="HEALTH_UNDEFINED" value="0x00" id="::Bluetooth::BluetoothClassDeviceMinor::HEALTH_UNDEFINED">
10890         <webidl>        const octet HEALTH_UNDEFINED = 0x00;</webidl>
10891         <Type type="octet"/>
10892       </Const>
10893       <Const name="HEALTH_BLOOD_PRESSURE_MONITOR" value="0x01" id="::Bluetooth::BluetoothClassDeviceMinor::HEALTH_BLOOD_PRESSURE_MONITOR">
10894         <webidl>        const octet HEALTH_BLOOD_PRESSURE_MONITOR = 0x01;</webidl>
10895         <Type type="octet"/>
10896       </Const>
10897       <Const name="HEALTH_THERMOMETER" value="0x02" id="::Bluetooth::BluetoothClassDeviceMinor::HEALTH_THERMOMETER">
10898         <webidl>        const octet HEALTH_THERMOMETER = 0x02;</webidl>
10899         <Type type="octet"/>
10900       </Const>
10901       <Const name="HEALTH_WEIGHING_SCALE" value="0x03" id="::Bluetooth::BluetoothClassDeviceMinor::HEALTH_WEIGHING_SCALE">
10902         <webidl>        const octet HEALTH_WEIGHING_SCALE = 0x03;</webidl>
10903         <Type type="octet"/>
10904       </Const>
10905       <Const name="HEALTH_GLUCOSE_METER" value="0x04" id="::Bluetooth::BluetoothClassDeviceMinor::HEALTH_GLUCOSE_METER">
10906         <webidl>        const octet HEALTH_GLUCOSE_METER = 0x04;</webidl>
10907         <Type type="octet"/>
10908       </Const>
10909       <Const name="HEALTH_PULSE_OXIMETER" value="0x05" id="::Bluetooth::BluetoothClassDeviceMinor::HEALTH_PULSE_OXIMETER">
10910         <webidl>        const octet HEALTH_PULSE_OXIMETER = 0x05;</webidl>
10911         <Type type="octet"/>
10912       </Const>
10913       <Const name="HEALTH_PULSE_RATE_MONITOR" value="0x06" id="::Bluetooth::BluetoothClassDeviceMinor::HEALTH_PULSE_RATE_MONITOR">
10914         <webidl>        const octet HEALTH_PULSE_RATE_MONITOR = 0x06;</webidl>
10915         <Type type="octet"/>
10916       </Const>
10917       <Const name="HEALTH_DATA_DISPLAY" value="0x07" id="::Bluetooth::BluetoothClassDeviceMinor::HEALTH_DATA_DISPLAY">
10918         <webidl>        const octet HEALTH_DATA_DISPLAY = 0x07;</webidl>
10919         <Type type="octet"/>
10920       </Const>
10921       <Const name="HEALTH_STEP_COUNTER" value="0x08" id="::Bluetooth::BluetoothClassDeviceMinor::HEALTH_STEP_COUNTER">
10922         <webidl>        const octet HEALTH_STEP_COUNTER = 0x08;</webidl>
10923         <Type type="octet"/>
10924       </Const>
10925       <Const name="HEALTH_BODY_COMPOSITION_ANALYZER" value="0x09" id="::Bluetooth::BluetoothClassDeviceMinor::HEALTH_BODY_COMPOSITION_ANALYZER">
10926         <webidl>        const octet HEALTH_BODY_COMPOSITION_ANALYZER = 0x09;</webidl>
10927         <Type type="octet"/>
10928       </Const>
10929       <Const name="HEALTH_PEAK_FLOW_MONITOR" value="0x0a" id="::Bluetooth::BluetoothClassDeviceMinor::HEALTH_PEAK_FLOW_MONITOR">
10930         <webidl>        const octet HEALTH_PEAK_FLOW_MONITOR = 0x0a;</webidl>
10931         <Type type="octet"/>
10932       </Const>
10933       <Const name="HEALTH_MEDICATION_MONITOR" value="0x0b" id="::Bluetooth::BluetoothClassDeviceMinor::HEALTH_MEDICATION_MONITOR">
10934         <webidl>        const octet HEALTH_MEDICATION_MONITOR = 0x0b;</webidl>
10935         <Type type="octet"/>
10936       </Const>
10937       <Const name="HEALTH_KNEE_PROSTHESIS" value="0x0c" id="::Bluetooth::BluetoothClassDeviceMinor::HEALTH_KNEE_PROSTHESIS">
10938         <webidl>        const octet HEALTH_KNEE_PROSTHESIS = 0x0c;</webidl>
10939         <Type type="octet"/>
10940       </Const>
10941       <Const name="HEALTH_ANKLE_PROSTHESIS" value="0x0d" id="::Bluetooth::BluetoothClassDeviceMinor::HEALTH_ANKLE_PROSTHESIS">
10942         <webidl>        const octet HEALTH_ANKLE_PROSTHESIS = 0x0d;</webidl>
10943         <Type type="octet"/>
10944       </Const>
10945     </Interface>
10946     <Interface name="BluetoothClassDeviceService" id="::Bluetooth::BluetoothClassDeviceService">
10947       <webidl>    [NoInterfaceObject] interface BluetoothClassDeviceService {
10948         const unsigned short LIMITED_DISCOVERABILITY = 0x0001;
10949         const unsigned short POSITIONING = 0x0008; 
10950         const unsigned short NETWORKING = 0x0010; 
10951         const unsigned short RENDERING = 0x0020; 
10952         const unsigned short CAPTURING = 0x0040;
10953         const unsigned short OBJECT_TRANSFER = 0x0080; 
10954         const unsigned short AUDIO = 0x0100;
10955         const unsigned short TELEPHONY = 0x0200;
10956         const unsigned short INFORMATION = 0x0400;
10957     };</webidl>
10958       <descriptive>
10959           <brief>
10960  This interface holds identifiers for the major service classes of Bluetooth CoD.
10961           </brief>
10962           <version>
10963  1.0
10964           </version>
10965       </descriptive>
10966       <ExtendedAttributeList>
10967         <ExtendedAttribute name="NoInterfaceObject">
10968           <webidl>NoInterfaceObject</webidl>
10969         </ExtendedAttribute>
10970       </ExtendedAttributeList>
10971       <Const name="LIMITED_DISCOVERABILITY" value="0x0001" id="::Bluetooth::BluetoothClassDeviceService::LIMITED_DISCOVERABILITY">
10972         <webidl>        const unsigned short LIMITED_DISCOVERABILITY = 0x0001;</webidl>
10973         <Type type="unsigned short"/>
10974       </Const>
10975       <Const name="POSITIONING" value="0x0008" id="::Bluetooth::BluetoothClassDeviceService::POSITIONING">
10976         <webidl>        const unsigned short POSITIONING = 0x0008;</webidl>
10977         <Type type="unsigned short"/>
10978       </Const>
10979       <Const name="NETWORKING" value="0x0010" id="::Bluetooth::BluetoothClassDeviceService::NETWORKING">
10980         <webidl>        const unsigned short NETWORKING = 0x0010;</webidl>
10981         <Type type="unsigned short"/>
10982       </Const>
10983       <Const name="RENDERING" value="0x0020" id="::Bluetooth::BluetoothClassDeviceService::RENDERING">
10984         <webidl>        const unsigned short RENDERING = 0x0020;</webidl>
10985         <Type type="unsigned short"/>
10986       </Const>
10987       <Const name="CAPTURING" value="0x0040" id="::Bluetooth::BluetoothClassDeviceService::CAPTURING">
10988         <webidl>        const unsigned short CAPTURING = 0x0040;</webidl>
10989         <Type type="unsigned short"/>
10990       </Const>
10991       <Const name="OBJECT_TRANSFER" value="0x0080" id="::Bluetooth::BluetoothClassDeviceService::OBJECT_TRANSFER">
10992         <webidl>        const unsigned short OBJECT_TRANSFER = 0x0080;</webidl>
10993         <Type type="unsigned short"/>
10994       </Const>
10995       <Const name="AUDIO" value="0x0100" id="::Bluetooth::BluetoothClassDeviceService::AUDIO">
10996         <webidl>        const unsigned short AUDIO = 0x0100;</webidl>
10997         <Type type="unsigned short"/>
10998       </Const>
10999       <Const name="TELEPHONY" value="0x0200" id="::Bluetooth::BluetoothClassDeviceService::TELEPHONY">
11000         <webidl>        const unsigned short TELEPHONY = 0x0200;</webidl>
11001         <Type type="unsigned short"/>
11002       </Const>
11003       <Const name="INFORMATION" value="0x0400" id="::Bluetooth::BluetoothClassDeviceService::INFORMATION">
11004         <webidl>        const unsigned short INFORMATION = 0x0400;</webidl>
11005         <Type type="unsigned short"/>
11006       </Const>
11007     </Interface>
11008     <Interface name="BluetoothServiceHandler" id="::Bluetooth::BluetoothServiceHandler">
11009       <webidl>    [NoInterfaceObject] interface BluetoothServiceHandler {
11010         readonly attribute <ref>BluetoothUUID</ref> uuid;
11011         readonly attribute DOMString name;
11012         readonly attribute boolean isConnected;
11013         [TreatNonCallableAsNull] attribute <ref>BluetoothSocketSuccessCallback</ref>? onconnect raises(<ref>WebAPIException</ref>);
11014
11015         void unregister(optional <ref>SuccessCallback</ref>? successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
11016     };</webidl>
11017       <descriptive>
11018           <brief>
11019  This interface provides methods to handle Bluetooth service.
11020           </brief>
11021           <version>
11022  1.0
11023           </version>
11024       </descriptive>
11025       <ExtendedAttributeList>
11026         <ExtendedAttribute name="NoInterfaceObject">
11027           <webidl>NoInterfaceObject</webidl>
11028         </ExtendedAttribute>
11029       </ExtendedAttributeList>
11030       <Attribute readonly="readonly" name="uuid" id="::Bluetooth::BluetoothServiceHandler::uuid">
11031         <webidl>        readonly attribute <ref>BluetoothUUID</ref> uuid;</webidl>
11032         <descriptive>
11033             <brief>
11034  The UUID of the service.
11035             </brief>
11036             <version>
11037  1.0
11038             </version>
11039         </descriptive>
11040         <Type name="BluetoothUUID"/>
11041       </Attribute>
11042       <Attribute readonly="readonly" name="name" id="::Bluetooth::BluetoothServiceHandler::name">
11043         <webidl>        readonly attribute DOMString name;</webidl>
11044         <descriptive>
11045             <brief>
11046  The name of the service.
11047             </brief>
11048             <version>
11049  1.0
11050             </version>
11051         </descriptive>
11052         <Type type="DOMString"/>
11053       </Attribute>
11054       <Attribute readonly="readonly" name="isConnected" id="::Bluetooth::BluetoothServiceHandler::isConnected">
11055         <webidl>        readonly attribute boolean isConnected;</webidl>
11056         <descriptive>
11057             <brief>
11058  An attribute to check whether any remote devices is using this service or not.
11059             </brief>
11060             <version>
11061  1.0
11062             </version>
11063         </descriptive>
11064         <Type type="boolean"/>
11065       </Attribute>
11066       <Attribute name="onconnect" id="::Bluetooth::BluetoothServiceHandler::onconnect">
11067         <webidl>        [TreatNonCallableAsNull] attribute <ref>BluetoothSocketSuccessCallback</ref>? onconnect raises(<ref>WebAPIException</ref>);</webidl>
11068         <descriptive>
11069             <brief>
11070  The success callback to be invoked when a remote device is connected to this service.
11071 By default, this attribute is set to null.
11072             </brief>
11073             <version>
11074  1.0
11075             </version>
11076         </descriptive>
11077         <ExtendedAttributeList>
11078           <ExtendedAttribute name="TreatNonCallableAsNull">
11079             <webidl>TreatNonCallableAsNull</webidl>
11080           </ExtendedAttribute>
11081         </ExtendedAttributeList>
11082         <Type name="BluetoothSocketSuccessCallback" nullable="nullable"/>
11083         <Raises>
11084           <RaiseException name="WebAPIException">
11085             <descriptive>
11086                 <description><p>
11087  with error type TypeMismatchError, if any input attribute is not compatible with the expected type for this attribute.
11088                 </p></description>
11089             </descriptive>
11090           </RaiseException>
11091         </Raises>
11092       </Attribute>
11093       <Operation name="unregister" id="::Bluetooth::BluetoothServiceHandler::unregister">
11094         <webidl>        void unregister(optional <ref>SuccessCallback</ref>? successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
11095         <descriptive>
11096             <brief>
11097  Unregisters a service record from the Bluetooth services record database and stops listening for new connections to this service.
11098             </brief>
11099            <description>
11100             <p>
11101 The ErrorCallback is launched with these error types:
11102             </p>
11103             <ul>
11104               <li>
11105  UnknownError - If any other error occurs.              </li>
11106             </ul>
11107            </description>
11108             <version>
11109  1.0
11110             </version>
11111             <privilegelevel>
11112  public
11113             </privilegelevel>
11114             <privilege>
11115  http://tizen.org/privilege/bluetooth.spp
11116             </privilege>
11117             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
11118  var chatServiceHandler = null;
11119
11120  function chatServiceSuccessCb(handler) {
11121     console.log(&quot;Chat service registration was successful!&quot;);
11122
11123     chatServiceHandler = handler;
11124     handler.onconnect = function(socket) {
11125        console.log(&quot;Client is connected: &quot; + socket.peer.name + &quot;,&quot; + socket.peer.address);
11126        socket.onmessage = function() {
11127            var data = socket.readData();
11128            // Handle message code goes here
11129            //....
11130        };
11131
11132        // Expected close
11133        socket.onclose = function() {
11134            console.log('The socket is closed.');
11135        };
11136     };
11137  }
11138
11139  function publishChatService()
11140  {
11141     var CHAT_SERVICE_UUID = &quot;5BCE9431-6C75-32AB-AFE0-2EC108A30860&quot;;
11142     adapter.registerRFCOMMServiceByUUID(CHAT_SERVICE_UUID, &quot;Chat service&quot;, chatServiceSuccessCb,
11143       // Error handler
11144       function(e) {
11145            console.log( &quot;Could not register service record, Error: &quot; + e.message);
11146       });
11147  }
11148
11149  function unRegisterChatService()
11150  {
11151       if (chatServiceHandler != null) {
11152            chatServiceHandler.unregister(function() {
11153                chatServiceHandler = null;
11154                console.log(&quot;Chat service is unregistered.&quot;);
11155            },
11156            function(e) {
11157                console.log (&quot;Error: &quot; + e.message);
11158            });
11159       }
11160  }
11161  </Code>
11162         </descriptive>
11163         <Type type="void"/>
11164         <ArgumentList>
11165           <Argument optional="optional" name="successCallback">
11166             <descriptive>
11167                 <description><p>
11168  The method to be invoked when the record is removed successfully from the service records database.
11169                 </p></description>
11170             </descriptive>
11171             <Type name="SuccessCallback" nullable="nullable"/>
11172           </Argument>
11173           <Argument optional="optional" name="errorCallback">
11174             <descriptive>
11175                 <description><p>
11176  The method to be invoked in case of failure (to unregister).
11177                 </p></description>
11178             </descriptive>
11179             <Type name="ErrorCallback" nullable="nullable"/>
11180           </Argument>
11181         </ArgumentList>
11182         <Raises>
11183           <RaiseException name="WebAPIException">
11184             <descriptive>
11185                 <description><p>
11186  with error type TypeMismatchError, if the input parameter is not compatible with the expected type for that parameter.
11187                 </p></description>
11188                 <description><p>
11189  with error type SecurityError, if the application does not have the privilege to call this method.
11190                 </p></description>
11191                 <description><p>
11192  with error type NotSupportedError, if this feature is not supported.
11193                 </p></description>
11194             </descriptive>
11195           </RaiseException>
11196         </Raises>
11197       </Operation>
11198     </Interface>
11199     <Interface name="BluetoothProfileHandler" id="::Bluetooth::BluetoothProfileHandler">
11200       <webidl>    [NoInterfaceObject] interface BluetoothProfileHandler {
11201         
11202         readonly attribute <ref>BluetoothProfileType</ref> profileType;
11203                 
11204     };</webidl>
11205       <descriptive>
11206           <brief>
11207  This interface represents the Bluetooth profile handler.
11208           </brief>
11209           <version>
11210  2.2
11211           </version>
11212       </descriptive>
11213       <ExtendedAttributeList>
11214         <ExtendedAttribute name="NoInterfaceObject">
11215           <webidl>NoInterfaceObject</webidl>
11216         </ExtendedAttribute>
11217       </ExtendedAttributeList>
11218       <Attribute readonly="readonly" name="profileType" id="::Bluetooth::BluetoothProfileHandler::profileType">
11219         <webidl>        readonly attribute <ref>BluetoothProfileType</ref> profileType;</webidl>
11220         <descriptive>
11221             <brief>
11222  The type of Bluetooth profile.
11223             </brief>
11224             <version>
11225  2.2
11226             </version>
11227         </descriptive>
11228         <Type name="BluetoothProfileType"/>
11229       </Attribute>
11230     </Interface>
11231     <Interface name="BluetoothHealthProfileHandler" id="::Bluetooth::BluetoothHealthProfileHandler">
11232       <webidl>    [NoInterfaceObject] interface BluetoothHealthProfileHandler : <ref>BluetoothProfileHandler</ref> {
11233         
11234         void registerSinkApplication(unsigned short dataType, DOMString name, <ref>BluetoothHealthApplicationSuccessCallback</ref> successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
11235
11236         void connectToSource(<ref>BluetoothDevice</ref> peer, <ref>BluetoothHealthApplication</ref> application, <ref>BluetoothHealthChannelSuccessCallback</ref> successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
11237
11238         };</webidl>
11239       <descriptive>
11240           <brief>
11241  This interface represents the handler of Bluetooth health device profile.
11242 The BluetoothHealthProfileHandler object is created by <em>BluetoothAdapter.getBluetoothProfileHandler()</em>.        
11243           </brief>
11244           <version>
11245  2.2
11246           </version>
11247       </descriptive>
11248       <ExtendedAttributeList>
11249         <ExtendedAttribute name="NoInterfaceObject">
11250           <webidl>NoInterfaceObject</webidl>
11251         </ExtendedAttribute>
11252       </ExtendedAttributeList>
11253       <InterfaceInheritance>
11254         <Name name="BluetoothProfileHandler"/>
11255       </InterfaceInheritance>
11256       <Operation name="registerSinkApplication" id="::Bluetooth::BluetoothHealthProfileHandler::registerSinkApplication">
11257         <webidl>        void registerSinkApplication(unsigned short dataType, DOMString name, <ref>BluetoothHealthApplicationSuccessCallback</ref> successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
11258         <descriptive>
11259             <brief>
11260  Registers an application for the Sink role.
11261             </brief>
11262            <description>
11263             <p>
11264 The ErrorCallback is launched with these error types:
11265             </p>
11266             <ul>
11267               <li>
11268  ServiceNotAvailableError - If a Bluetooth device is turned off.              </li>
11269               <li>
11270  UnknownError - If any other error occurs.              </li>
11271             </ul>
11272            </description>
11273             <version>
11274  2.2
11275             </version>
11276             <privilegelevel>
11277  public
11278             </privilegelevel>
11279             <privilege>
11280  http://tizen.org/privilege/bluetooth.health
11281             </privilege>
11282             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
11283  var healthProfileHandler = adapter.getBluetoothProfileHandler(&quot;HEALTH&quot;);
11284
11285  function healthRegisterSuccess(app) {
11286      console.log(&quot;Registered application: &quot; + app.name);
11287  }
11288
11289  function healthRegisterError(e) {
11290      console.log(&quot;Failed to register application: &quot; + e.message);
11291  };
11292
11293  healthProfileHandler.registerSinkApplication(4100, &quot;testSinkApp&quot;, healthRegisterSuccess, healthRegisterError);
11294  </Code>
11295         </descriptive>
11296         <Type type="void"/>
11297         <ArgumentList>
11298           <Argument name="dataType">
11299             <descriptive>
11300                 <description><p>
11301  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. 
11302                 </p></description>
11303             </descriptive>
11304             <Type type="unsigned short"/>
11305           </Argument>
11306           <Argument name="name">
11307             <descriptive>
11308                 <description><p>
11309  The friendly name associated with sink application.
11310                 </p></description>
11311             </descriptive>
11312             <Type type="DOMString"/>
11313           </Argument>
11314           <Argument name="successCallback">
11315             <descriptive>
11316                 <description><p>
11317  The method to invoke when a sink application is registered successfully.
11318                 </p></description>
11319             </descriptive>
11320             <Type name="BluetoothHealthApplicationSuccessCallback"/>
11321           </Argument>
11322           <Argument optional="optional" name="errorCallback">
11323             <descriptive>
11324                 <description><p>
11325  The method to invoke when an error occurs.
11326                 </p></description>
11327             </descriptive>
11328             <Type name="ErrorCallback" nullable="nullable"/>
11329           </Argument>
11330         </ArgumentList>
11331         <Raises>
11332           <RaiseException name="WebAPIException">
11333             <descriptive>
11334                 <description><p>
11335  with error type SecurityError, if the application does not have the privilege to call this method.
11336                 </p></description>
11337                 <description><p>
11338  with error type TypeMismatchError, if any of the input parameter is not compatible with the expected type for that parameter.
11339                 </p></description>
11340                 <description><p>
11341  with error type NotSupportedError, if this feature is not supported.
11342                 </p></description>
11343             </descriptive>
11344           </RaiseException>
11345         </Raises>
11346       </Operation>
11347       <Operation name="connectToSource" id="::Bluetooth::BluetoothHealthProfileHandler::connectToSource">
11348         <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>
11349         <descriptive>
11350             <brief>
11351  Connect to the health device which acts as the Source role.
11352             </brief>
11353            <description>
11354             <p>
11355 The ErrorCallback is launched with these error types:
11356             </p>
11357             <ul>
11358               <li>
11359  ServiceNotAvailableError - If a Bluetooth device is turned off.              </li>
11360               <li>
11361  InvalidValuesError - If any of the input parameters contain an invalid value.              </li>
11362               <li>
11363  UnknownError - If any other error occurs.              </li>
11364             </ul>
11365            </description>
11366             <version>
11367  2.2
11368             </version>
11369             <privilegelevel>
11370  public
11371             </privilegelevel>
11372             <privilege>
11373  http://tizen.org/privilege/bluetooth.health
11374             </privilege>
11375             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
11376  var healthProfileHandler = adapter.getBluetoothProfileHandler(&quot;HEALTH&quot;);
11377  var registerHealthApp = null;
11378
11379  function healthConnectSuccess(channel) {
11380      console.log(&quot;Health device is connected&quot;);
11381  }
11382  
11383  function healthConnectError(e) {
11384      console.log(&quot;Failed to connect to source: &quot; + e.message);
11385  };
11386  
11387  function gotDeviceInfo(device) {
11388      healthProfileHandler.connectToSource(device, registerHealthApp, healthConnectSuccess, healthConnectError);
11389  }
11390  
11391  function healthRegisterSuccess(app) {
11392      console.log(&quot;Registered application: &quot; + app.name);
11393      registerHealthApp = app;
11394      var peer = adapter.getDevice(&quot;35:F4:59:D1:7A:03&quot;, gotDeviceInfo);
11395  }
11396
11397  function healthRegisterError(e) {
11398      console.log(&quot;Failed to register application: &quot; + e.message);
11399  };
11400
11401  healthProfileHandler.registerSinkApplication(4100, &quot;testSinkApp&quot;, healthRegisterSuccess, healthRegisterError);
11402  </Code>
11403         </descriptive>
11404         <Type type="void"/>
11405         <ArgumentList>
11406           <Argument name="peer">
11407             <descriptive>
11408                 <description><p>
11409  The remote device which acts as the Source role. 
11410                 </p></description>
11411             </descriptive>
11412             <Type name="BluetoothDevice"/>
11413           </Argument>
11414           <Argument name="application">
11415             <descriptive>
11416                 <description><p>
11417  The registered application for the Sink role.
11418                 </p></description>
11419             </descriptive>
11420             <Type name="BluetoothHealthApplication"/>
11421           </Argument>
11422           <Argument name="successCallback">
11423             <descriptive>
11424                 <description><p>
11425  The method to invoke when a connection is established successfully.
11426                 </p></description>
11427             </descriptive>
11428             <Type name="BluetoothHealthChannelSuccessCallback"/>
11429           </Argument>
11430           <Argument optional="optional" name="errorCallback">
11431             <descriptive>
11432                 <description><p>
11433  The method to invoke when an error occurs.
11434                 </p></description>
11435             </descriptive>
11436             <Type name="ErrorCallback" nullable="nullable"/>
11437           </Argument>
11438         </ArgumentList>
11439         <Raises>
11440           <RaiseException name="WebAPIException">
11441             <descriptive>
11442                 <description><p>
11443  with error type SecurityError, if the application does not have the privilege to call this method.
11444                 </p></description>
11445                 <description><p>
11446  with error type TypeMismatchError, if any of the input parameter is not compatible with the expected type for that parameter.
11447                 </p></description>
11448                 <description><p>
11449  with error type NotSupportedError, if this feature is not supported.
11450                 </p></description>
11451             </descriptive>
11452           </RaiseException>
11453         </Raises>
11454       </Operation>
11455     </Interface>
11456     <Interface name="BluetoothHealthApplication" id="::Bluetooth::BluetoothHealthApplication">
11457       <webidl>    [NoInterfaceObject] interface BluetoothHealthApplication {
11458
11459         readonly attribute unsigned short dataType;
11460                 
11461         readonly attribute DOMString name;
11462
11463         [TreatNonCallableAsNull] attribute <ref>BluetoothHealthChannelSuccessCallback</ref>? onconnect raises(<ref>WebAPIException</ref>);
11464                 
11465         void unregister(optional <ref>SuccessCallback</ref>? successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
11466                 
11467     };</webidl>
11468       <descriptive>
11469           <brief>
11470  This interface represents the Bluetooth health application.
11471           </brief>
11472           <version>
11473  2.2
11474           </version>
11475       </descriptive>
11476       <ExtendedAttributeList>
11477         <ExtendedAttribute name="NoInterfaceObject">
11478           <webidl>NoInterfaceObject</webidl>
11479         </ExtendedAttribute>
11480       </ExtendedAttributeList>
11481       <Attribute readonly="readonly" name="dataType" id="::Bluetooth::BluetoothHealthApplication::dataType">
11482         <webidl>        readonly attribute unsigned short dataType;</webidl>
11483         <descriptive>
11484             <brief>
11485  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.
11486             </brief>
11487             <version>
11488  2.2
11489             </version>
11490         </descriptive>
11491         <Type type="unsigned short"/>
11492       </Attribute>
11493       <Attribute readonly="readonly" name="name" id="::Bluetooth::BluetoothHealthApplication::name">
11494         <webidl>        readonly attribute DOMString name;</webidl>
11495         <descriptive>
11496             <brief>
11497  The friendly name associated with sink application.
11498             </brief>
11499             <version>
11500  2.2
11501             </version>
11502         </descriptive>
11503         <Type type="DOMString"/>
11504       </Attribute>
11505       <Attribute name="onconnect" id="::Bluetooth::BluetoothHealthApplication::onconnect">
11506         <webidl>        [TreatNonCallableAsNull] attribute <ref>BluetoothHealthChannelSuccessCallback</ref>? onconnect raises(<ref>WebAPIException</ref>);</webidl>
11507         <descriptive>
11508             <brief>
11509  The callback invoked when a health device is connected through this application.
11510 By default, this attribute is set to null.
11511             </brief>
11512             <version>
11513  2.2
11514             </version>
11515         </descriptive>
11516         <ExtendedAttributeList>
11517           <ExtendedAttribute name="TreatNonCallableAsNull">
11518             <webidl>TreatNonCallableAsNull</webidl>
11519           </ExtendedAttribute>
11520         </ExtendedAttributeList>
11521         <Type name="BluetoothHealthChannelSuccessCallback" nullable="nullable"/>
11522         <Raises>
11523           <RaiseException name="WebAPIException">
11524             <descriptive>
11525                 <description><p>
11526  with error type TypeMismatchError, if an input attribute is not compatible with the expected type for this attribute.
11527                 </p></description>
11528             </descriptive>
11529           </RaiseException>
11530         </Raises>
11531       </Attribute>
11532       <Operation name="unregister" id="::Bluetooth::BluetoothHealthApplication::unregister">
11533         <webidl>        void unregister(optional <ref>SuccessCallback</ref>? successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
11534         <descriptive>
11535             <brief>
11536  Unregisters this application.
11537             </brief>
11538            <description>
11539             <p>
11540 The ErrorCallback is launched with these error types:
11541             </p>
11542             <ul>
11543               <li>
11544  ServiceNotAvailableError - If a Bluetooth device is turned off.              </li>
11545               <li>
11546  UnknownError - If any other error occurs.              </li>
11547             </ul>
11548            </description>
11549             <version>
11550  2.2
11551             </version>
11552             <privilegelevel>
11553  public
11554             </privilegelevel>
11555             <privilege>
11556  http://tizen.org/privilege/bluetooth.health
11557             </privilege>
11558             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
11559  var healthProfileHandler = adapter.getBluetoothProfileHandler(&quot;HEALTH&quot;);
11560  var healthApp = null;
11561
11562  function healthRegisterSuccess(app) {
11563      console.log(&quot;Registered application: &quot; + app.name);
11564      healthApp = app;
11565      healthApp.onconnect = function(channel) {
11566          console.log(&quot;Connected!!&quot;);
11567      };
11568  }
11569
11570  function healthRegisterError(e) {
11571      console.log(&quot;Failed to register application: &quot; + e.message);
11572  };
11573
11574  function startSink() {
11575      try {
11576          healthProfileHandler.registerSinkApplication(4100, &quot;testSinkApp&quot;, healthRegisterSuccess, healthRegisterError);
11577      } catch(e) {
11578          console.log(&quot;Error: &quot; + e.message);
11579      }
11580  }
11581
11582  function stopSink() {
11583      try {
11584          if(healthApp != null) {
11585              healthApp.unregister(function() {
11586                  healthApp = null;
11587                  console.log(&quot;Health application is unregistered.&quot;);
11588              },
11589              function(e) {
11590                  console.log (&quot;Error: &quot; + e.message);
11591              });
11592          }
11593      } catch(err) {
11594          console.log(&quot;Error: &quot; + err.message);
11595      }
11596  }
11597  </Code>
11598         </descriptive>
11599         <Type type="void"/>
11600         <ArgumentList>
11601           <Argument optional="optional" name="successCallback">
11602             <descriptive>
11603                 <description><p>
11604  The method to invoke when a sink application is registered successfully.
11605                 </p></description>
11606             </descriptive>
11607             <Type name="SuccessCallback" nullable="nullable"/>
11608           </Argument>
11609           <Argument optional="optional" name="errorCallback">
11610             <descriptive>
11611                 <description><p>
11612  The method to invoke when an error occurs.
11613                 </p></description>
11614             </descriptive>
11615             <Type name="ErrorCallback" nullable="nullable"/>
11616           </Argument>
11617         </ArgumentList>
11618         <Raises>
11619           <RaiseException name="WebAPIException">
11620             <descriptive>
11621                 <description><p>
11622  with error type SecurityError, if the application does not have the privilege to call this method.
11623                 </p></description>
11624                 <description><p>
11625  with error type TypeMismatchError, if any of the input parameter is not compatible with the expected type for that parameter.
11626                 </p></description>
11627                 <description><p>
11628  with error type NotSupportedError, if this feature is not supported.
11629                 </p></description>
11630             </descriptive>
11631           </RaiseException>
11632         </Raises>
11633       </Operation>
11634     </Interface>
11635     <Interface name="BluetoothHealthChannel" id="::Bluetooth::BluetoothHealthChannel">
11636       <webidl>    [NoInterfaceObject] interface BluetoothHealthChannel {
11637
11638         readonly attribute <ref>BluetoothDevice</ref> peer;
11639                 
11640         readonly attribute <ref>BluetoothHealthChannelType</ref> channelType;
11641
11642         readonly attribute <ref>BluetoothHealthApplication</ref> application;
11643                 
11644         readonly attribute boolean isConnected;
11645
11646         void close() raises(<ref>WebAPIException</ref>);
11647
11648         unsigned long sendData(byte[] data) raises(<ref>WebAPIException</ref>);
11649
11650         void setListener(<ref>BluetoothHealthChannelChangeCallback</ref> listener) raises(<ref>WebAPIException</ref>); 
11651  
11652         void unsetListener() raises(<ref>WebAPIException</ref>);
11653                 
11654     };</webidl>
11655       <descriptive>
11656           <brief>
11657  This interface represents the Bluetooth health channel.
11658           </brief>
11659           <version>
11660  2.2
11661           </version>
11662       </descriptive>
11663       <ExtendedAttributeList>
11664         <ExtendedAttribute name="NoInterfaceObject">
11665           <webidl>NoInterfaceObject</webidl>
11666         </ExtendedAttribute>
11667       </ExtendedAttributeList>
11668       <Attribute readonly="readonly" name="peer" id="::Bluetooth::BluetoothHealthChannel::peer">
11669         <webidl>        readonly attribute <ref>BluetoothDevice</ref> peer;</webidl>
11670         <descriptive>
11671             <brief>
11672  The remote device to which this channel is connected.
11673             </brief>
11674             <version>
11675  2.2
11676             </version>
11677         </descriptive>
11678         <Type name="BluetoothDevice"/>
11679       </Attribute>
11680       <Attribute readonly="readonly" name="channelType" id="::Bluetooth::BluetoothHealthChannel::channelType">
11681         <webidl>        readonly attribute <ref>BluetoothHealthChannelType</ref> channelType;</webidl>
11682         <descriptive>
11683             <brief>
11684  The type of of this channel.
11685             </brief>
11686             <version>
11687  2.2
11688             </version>
11689         </descriptive>
11690         <Type name="BluetoothHealthChannelType"/>
11691       </Attribute>
11692       <Attribute readonly="readonly" name="application" id="::Bluetooth::BluetoothHealthChannel::application">
11693         <webidl>        readonly attribute <ref>BluetoothHealthApplication</ref> application;</webidl>
11694         <descriptive>
11695             <brief>
11696  The health application which is used to communicate with the remote device.
11697             </brief>
11698             <version>
11699  2.2
11700             </version>
11701         </descriptive>
11702         <Type name="BluetoothHealthApplication"/>
11703       </Attribute>
11704       <Attribute readonly="readonly" name="isConnected" id="::Bluetooth::BluetoothHealthChannel::isConnected">
11705         <webidl>        readonly attribute boolean isConnected;</webidl>
11706         <descriptive>
11707             <brief>
11708  An attrbitue to check whether any remote device is connected or not.
11709             </brief>
11710             <version>
11711  2.2
11712             </version>
11713         </descriptive>
11714         <Type type="boolean"/>
11715       </Attribute>
11716       <Operation name="close" id="::Bluetooth::BluetoothHealthChannel::close">
11717         <webidl>        void close() raises(<ref>WebAPIException</ref>);</webidl>
11718         <descriptive>
11719             <brief>
11720  Close the connected channel.
11721 <em>BluetoothHealthChannel.isConnected</em> is changed to <var>false</var> and <em>BluetoothHealthChannelChangeCallback.onclose</em> is invoked when this channel is closed successfully.
11722             </brief>
11723             <version>
11724  2.2
11725             </version>
11726             <privilegelevel>
11727  public
11728             </privilegelevel>
11729             <privilege>
11730  http://tizen.org/privilege/bluetooth.health
11731             </privilege>
11732             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
11733  var healthProfileHandler = adapter.getBluetoothProfileHandler(&quot;HEALTH&quot;);
11734  
11735  function healthRegisterSuccess(app) {
11736      console.log(&quot;Registered application: &quot; + app.name);
11737      app.onconnect = function(channel) {;
11738          console.log(&quot;Health device is connected&quot;);
11739          channel.close();
11740      }
11741  }
11742
11743  function healthRegisterError(e) {
11744      console.log(&quot;Failed to register application: &quot; + e.message);
11745  };
11746
11747  healthProfileHandler.registerSinkApplication(4100, &quot;testSinkApp&quot;, healthRegisterSuccess, healthRegisterError);
11748  </Code>
11749         </descriptive>
11750         <Type type="void"/>
11751         <ArgumentList/>
11752         <Raises>
11753           <RaiseException name="WebAPIException">
11754             <descriptive>
11755                 <description><p>
11756  with error type SecurityError, if the application does not have the privilege to call this method.
11757                 </p></description>
11758                 <description><p>
11759  with error type ServiceNotAvailableError - If a Bluetooth device is turned off.
11760                 </p></description>
11761                 <description><p>
11762  with error type UnknownError, if any other error occurs.
11763                 </p></description>
11764                 <description><p>
11765  with error type NotSupportedError, if this feature is not supported.
11766                 </p></description>
11767             </descriptive>
11768           </RaiseException>
11769         </Raises>
11770       </Operation>
11771       <Operation name="sendData" id="::Bluetooth::BluetoothHealthChannel::sendData">
11772         <webidl>        unsigned long sendData(byte[] data) raises(<ref>WebAPIException</ref>);</webidl>
11773         <descriptive>
11774             <brief>
11775  Send data and returns the number of bytes actually written.
11776             </brief>
11777             <version>
11778  2.2
11779             </version>
11780             <privilegelevel>
11781  public
11782             </privilegelevel>
11783             <privilege>
11784  http://tizen.org/privilege/bluetooth.health
11785             </privilege>
11786             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
11787  var healthProfileHandler = adapter.getBluetoothProfileHandler(&quot;HEALTH&quot;);
11788
11789  function healthRegisterSuccess(app) {
11790      console.log(&quot;Registered application: &quot; + app.name);
11791      app.onconnect = function(channel) {
11792          console.log(&quot;Health device is connected&quot;);
11793          channel.sendData(dataToSend);
11794      }
11795  }
11796
11797  function healthRegisterError(e) {
11798      console.log(&quot;Failed to register application: &quot; + e.message);
11799  };
11800
11801  healthProfileHandler.registerSinkApplication(4100, &quot;testSinkApp&quot;, healthRegisterSuccess, healthRegisterError);
11802  </Code>
11803         </descriptive>
11804         <Type type="unsigned long">
11805           <descriptive>
11806               <description><p>
11807  unsigned long The number of bytes actually sent.
11808               </p></description>
11809           </descriptive>
11810         </Type>
11811         <ArgumentList>
11812           <Argument name="data">
11813             <descriptive>
11814                 <description><p>
11815  The data to send.
11816                 </p></description>
11817             </descriptive>
11818             <Type type="array">
11819               <Type type="byte"/>
11820             </Type>
11821           </Argument>
11822         </ArgumentList>
11823         <Raises>
11824           <RaiseException name="WebAPIException">
11825             <descriptive>
11826                 <description><p>
11827  with error type SecurityError, if the application does not have the privilege to call this method.
11828                 </p></description>
11829                 <description><p>
11830  with error type ServiceNotAvailableError - If a Bluetooth device is turned off.
11831                 </p></description>
11832                 <description><p>
11833  with error type TypeMismatchError, if any of the input parameter is not compatible with the expected type for that parameter.
11834                 </p></description>
11835                 <description><p>
11836  with error type UnknownError, if any other error occurs.
11837                 </p></description>
11838                 <description><p>
11839  with error type NotSupportedError, if this feature is not supported.
11840                 </p></description>
11841             </descriptive>
11842           </RaiseException>
11843         </Raises>
11844       </Operation>
11845       <Operation name="setListener" id="::Bluetooth::BluetoothHealthChannel::setListener">
11846         <webidl>        void setListener(<ref>BluetoothHealthChannelChangeCallback</ref> listener) raises(<ref>WebAPIException</ref>);</webidl>
11847         <descriptive>
11848             <brief>
11849  Sets the listener to receive notifications.
11850             </brief>
11851             <version>
11852  2.2
11853             </version>
11854             <privilegelevel>
11855  public
11856             </privilegelevel>
11857             <privilege>
11858  http://tizen.org/privilege/bluetooth.health
11859             </privilege>
11860             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
11861  var healthProfileHandler = adapter.getBluetoothProfileHandler(&quot;HEALTH&quot;);
11862
11863  var channelCallback = {
11864      onmessage: function(data) {
11865          console.log(&quot;data is received&quot;)
11866      },
11867      onclose: function() {
11868          console.log(&quot;channel is closed&quot;);
11869      }
11870  };
11871
11872  function healthRegisterSuccess(app) {
11873      console.log(&quot;Registered application: &quot; + app.name);
11874      app.onconnect = function(channel) {;
11875          console.log(&quot;Health device is connected&quot;);
11876          channel.setListener(channelCallback);
11877      }
11878  }
11879
11880  function healthRegisterError(e) {
11881      console.log(&quot;Failed to register application: &quot; + e.message);
11882  };
11883
11884  healthProfileHandler.registerSinkApplication(4100, &quot;testSinkApp&quot;, healthRegisterSuccess, healthRegisterError);
11885  </Code>
11886         </descriptive>
11887         <Type type="void"/>
11888         <ArgumentList>
11889           <Argument name="listener">
11890             <descriptive>
11891                 <description><p>
11892  The event listener of Bluetooth health channel.
11893                 </p></description>
11894             </descriptive>
11895             <Type name="BluetoothHealthChannelChangeCallback"/>
11896           </Argument>
11897         </ArgumentList>
11898         <Raises>
11899           <RaiseException name="WebAPIException">
11900             <descriptive>
11901                 <description><p>
11902  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
11903                 </p></description>
11904                 <description><p>
11905  with error type SecurityError, if the application does not have the privilege to call this method.
11906                 </p></description>
11907                 <description><p>
11908  with error type UnknownError, if any other error occurs.
11909                 </p></description>
11910             </descriptive>
11911           </RaiseException>
11912         </Raises>
11913       </Operation>
11914       <Operation name="unsetListener" id="::Bluetooth::BluetoothHealthChannel::unsetListener">
11915         <webidl>        void unsetListener() raises(<ref>WebAPIException</ref>);</webidl>
11916         <descriptive>
11917             <brief>
11918  Unsets the listener, so stop receiving notifications.
11919             </brief>
11920             <version>
11921  2.2
11922             </version>
11923             <privilegelevel>
11924  public
11925             </privilegelevel>
11926             <privilege>
11927  http://tizen.org/privilege/bluetooth.health
11928             </privilege>
11929             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
11930  var healthProfileHandler = adapter.getBluetoothProfileHandler(&quot;HEALTH&quot;);
11931  var connectedChannel = null;
11932
11933  var channelCallback = {
11934      onmessage: function(data) {
11935          console.log(&quot;data is received&quot;)
11936      },
11937      onclose: function() {
11938          console.log(&quot;channel is closed&quot;);
11939          connectedChannel.unsetListener();
11940      }
11941  };
11942
11943  function healthRegisterSuccess(app) {
11944      console.log(&quot;Registered application: &quot; + app.name);
11945      app.onconnect = function(channel) {;
11946          console.log(&quot;Health device is connected&quot;);
11947          connectedChannel = channel;
11948          connectedChannel.setListener(channelCallback);
11949      }
11950  }
11951
11952  function healthRegisterError(e) {
11953      console.log(&quot;Failed to register application: &quot; + e.message);
11954  };
11955
11956  healthProfileHandler.registerSinkApplication(4100, &quot;testSinkApp&quot;, healthRegisterSuccess, healthRegisterError);
11957  </Code>
11958         </descriptive>
11959         <Type type="void"/>
11960         <ArgumentList/>
11961         <Raises>
11962           <RaiseException name="WebAPIException">
11963             <descriptive>
11964                 <description><p>
11965  with error type SecurityError, if the application does not have the privilege to call this method.
11966                 </p></description>
11967                 <description><p>
11968  with error type UnknownError, if any other error occurs.
11969                 </p></description>
11970             </descriptive>
11971           </RaiseException>
11972         </Raises>
11973       </Operation>
11974     </Interface>
11975     <Interface name="BluetoothAdapterChangeCallback" id="::Bluetooth::BluetoothAdapterChangeCallback">
11976       <webidl>    [Callback, NoInterfaceObject] interface BluetoothAdapterChangeCallback {
11977         void onstatechanged(boolean powered);
11978         void onnamechanged(DOMString name);
11979         void onvisibilitychanged(boolean visible);
11980     };</webidl>
11981       <descriptive>
11982           <brief>
11983  This interface specifies a set of methods to be invoked when the changes of Bluetooth adapter occur.
11984           </brief>
11985           <version>
11986  2.2
11987           </version>
11988       </descriptive>
11989       <ExtendedAttributeList>
11990         <ExtendedAttribute name="Callback">
11991           <webidl>Callback</webidl>
11992         </ExtendedAttribute>
11993         <ExtendedAttribute name="NoInterfaceObject">
11994           <webidl> NoInterfaceObject</webidl>
11995         </ExtendedAttribute>
11996       </ExtendedAttributeList>
11997       <Operation name="onstatechanged" id="::Bluetooth::BluetoothAdapterChangeCallback::onstatechanged">
11998         <webidl>        void onstatechanged(boolean powered);</webidl>
11999         <descriptive>
12000             <brief>
12001  The method to be invoked when the power state is changed.
12002             </brief>
12003             <version>
12004  2.2
12005             </version>
12006         </descriptive>
12007         <Type type="void"/>
12008         <ArgumentList>
12009           <Argument name="powered">
12010             <descriptive>
12011                 <description><p>
12012  The power state of local Bluetooth: <var>true</var> means power-on, <var>false</var> means power-off.
12013                 </p></description>
12014             </descriptive>
12015             <Type type="boolean"/>
12016           </Argument>
12017         </ArgumentList>
12018       </Operation>
12019       <Operation name="onnamechanged" id="::Bluetooth::BluetoothAdapterChangeCallback::onnamechanged">
12020         <webidl>        void onnamechanged(DOMString name);</webidl>
12021         <descriptive>
12022             <brief>
12023  The method to be invoked when the name is changed.
12024             </brief>
12025             <version>
12026  2.2
12027             </version>
12028         </descriptive>
12029         <Type type="void"/>
12030         <ArgumentList>
12031           <Argument name="name">
12032             <descriptive>
12033                 <description><p>
12034  The name of local Bluetooth.
12035                 </p></description>
12036             </descriptive>
12037             <Type type="DOMString"/>
12038           </Argument>
12039         </ArgumentList>
12040       </Operation>
12041       <Operation name="onvisibilitychanged" id="::Bluetooth::BluetoothAdapterChangeCallback::onvisibilitychanged">
12042         <webidl>        void onvisibilitychanged(boolean visible);</webidl>
12043         <descriptive>
12044             <brief>
12045  The method to be invoked when the visibility is changed.
12046             </brief>
12047             <version>
12048  2.2
12049             </version>
12050         </descriptive>
12051         <Type type="void"/>
12052         <ArgumentList>
12053           <Argument name="visible">
12054             <descriptive>
12055                 <description><p>
12056  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.
12057                 </p></description>
12058             </descriptive>
12059             <Type type="boolean"/>
12060           </Argument>
12061         </ArgumentList>
12062       </Operation>
12063     </Interface>
12064     <Interface name="BluetoothDeviceSuccessCallback" id="::Bluetooth::BluetoothDeviceSuccessCallback">
12065       <webidl>    [Callback=FunctionOnly, NoInterfaceObject] interface BluetoothDeviceSuccessCallback {
12066         void onsuccess(<ref>BluetoothDevice</ref> device);
12067     };</webidl>
12068       <descriptive>
12069           <brief>
12070  This interface implements the success callback <em>BluetoothAdapter.getDevice() </em>and <em>BluetoothAdapter.createBonding()</em>.
12071           </brief>
12072           <version>
12073  1.0
12074           </version>
12075       </descriptive>
12076       <ExtendedAttributeList>
12077         <ExtendedAttribute name="Callback" value="FunctionOnly">
12078           <webidl>Callback</webidl>
12079         </ExtendedAttribute>
12080         <ExtendedAttribute name="NoInterfaceObject">
12081           <webidl> NoInterfaceObject</webidl>
12082         </ExtendedAttribute>
12083       </ExtendedAttributeList>
12084       <Operation name="onsuccess" id="::Bluetooth::BluetoothDeviceSuccessCallback::onsuccess">
12085         <webidl>        void onsuccess(<ref>BluetoothDevice</ref> device);</webidl>
12086         <descriptive>
12087             <brief>
12088  The method to be invoked on success.
12089             </brief>
12090             <version>
12091  1.0
12092             </version>
12093         </descriptive>
12094         <Type type="void"/>
12095         <ArgumentList>
12096           <Argument name="device">
12097             <descriptive>
12098                 <description><p>
12099  The BluetoothDevice object.
12100                 </p></description>
12101             </descriptive>
12102             <Type name="BluetoothDevice"/>
12103           </Argument>
12104         </ArgumentList>
12105       </Operation>
12106     </Interface>
12107     <Interface name="BluetoothDeviceArraySuccessCallback" id="::Bluetooth::BluetoothDeviceArraySuccessCallback">
12108       <webidl>    [Callback=FunctionOnly, NoInterfaceObject] interface BluetoothDeviceArraySuccessCallback {
12109         void onsuccess(<ref>BluetoothDevice</ref>[] devices);
12110     };</webidl>
12111       <descriptive>
12112           <brief>
12113  The success callback for <em>BluetoothAdapter.getKnownDevices()</em>.
12114           </brief>
12115           <version>
12116  1.0
12117           </version>
12118       </descriptive>
12119       <ExtendedAttributeList>
12120         <ExtendedAttribute name="Callback" value="FunctionOnly">
12121           <webidl>Callback</webidl>
12122         </ExtendedAttribute>
12123         <ExtendedAttribute name="NoInterfaceObject">
12124           <webidl> NoInterfaceObject</webidl>
12125         </ExtendedAttribute>
12126       </ExtendedAttributeList>
12127       <Operation name="onsuccess" id="::Bluetooth::BluetoothDeviceArraySuccessCallback::onsuccess">
12128         <webidl>        void onsuccess(<ref>BluetoothDevice</ref>[] devices);</webidl>
12129         <descriptive>
12130             <brief>
12131  The method to be invoked when device information is ready.
12132             </brief>
12133             <version>
12134  1.0
12135             </version>
12136         </descriptive>
12137         <Type type="void"/>
12138         <ArgumentList>
12139           <Argument name="devices">
12140             <descriptive>
12141                 <description><p>
12142  List of devices known to local Bluetooth adapter. Each element is a BluetoothDevice.
12143                 </p></description>
12144             </descriptive>
12145             <Type type="array">
12146               <Type name="BluetoothDevice"/>
12147             </Type>
12148           </Argument>
12149         </ArgumentList>
12150       </Operation>
12151     </Interface>
12152     <Interface name="BluetoothDiscoverDevicesSuccessCallback" id="::Bluetooth::BluetoothDiscoverDevicesSuccessCallback">
12153       <webidl>    [Callback, NoInterfaceObject] interface BluetoothDiscoverDevicesSuccessCallback {
12154         void onstarted();
12155         void ondevicefound(<ref>BluetoothDevice</ref> device);
12156         void ondevicedisappeared(<ref>BluetoothAddress</ref> address);
12157         void onfinished(<ref>BluetoothDevice</ref>[] foundDevices);
12158     };</webidl>
12159       <descriptive>
12160           <brief>
12161  The success callback for <em>BluetoothAdapter.discoverDevices()</em>.
12162           </brief>
12163           <version>
12164  1.0
12165           </version>
12166       </descriptive>
12167       <ExtendedAttributeList>
12168         <ExtendedAttribute name="Callback">
12169           <webidl>Callback</webidl>
12170         </ExtendedAttribute>
12171         <ExtendedAttribute name="NoInterfaceObject">
12172           <webidl> NoInterfaceObject</webidl>
12173         </ExtendedAttribute>
12174       </ExtendedAttributeList>
12175       <Operation name="onstarted" id="::Bluetooth::BluetoothDiscoverDevicesSuccessCallback::onstarted">
12176         <webidl>        void onstarted();</webidl>
12177         <descriptive>
12178             <brief>
12179  The method to be invoked at the beginning of a device discovery process for finding the nearby Bluetooth device.
12180             </brief>
12181             <version>
12182  1.0
12183             </version>
12184         </descriptive>
12185         <Type type="void"/>
12186         <ArgumentList/>
12187       </Operation>
12188       <Operation name="ondevicefound" id="::Bluetooth::BluetoothDiscoverDevicesSuccessCallback::ondevicefound">
12189         <webidl>        void ondevicefound(<ref>BluetoothDevice</ref> device);</webidl>
12190         <descriptive>
12191             <brief>
12192  The method to be invoked when a new device is discovered in the process of inquiry/discovery.
12193             </brief>
12194             <version>
12195  1.0
12196             </version>
12197         </descriptive>
12198         <Type type="void"/>
12199         <ArgumentList>
12200           <Argument name="device">
12201             <descriptive>
12202                 <description><p>
12203  The found device.
12204                 </p></description>
12205             </descriptive>
12206             <Type name="BluetoothDevice"/>
12207           </Argument>
12208         </ArgumentList>
12209       </Operation>
12210       <Operation name="ondevicedisappeared" id="::Bluetooth::BluetoothDiscoverDevicesSuccessCallback::ondevicedisappeared">
12211         <webidl>        void ondevicedisappeared(<ref>BluetoothAddress</ref> address);</webidl>
12212         <descriptive>
12213             <brief>
12214  The method to be invoked when a device is lost from proximity.
12215 After that, this device is no longer visible.
12216             </brief>
12217             <version>
12218  1.0
12219             </version>
12220         </descriptive>
12221         <Type type="void"/>
12222         <ArgumentList>
12223           <Argument name="address">
12224             <descriptive>
12225                 <description><p>
12226  The address of the device that is no longer in range or visible.
12227                 </p></description>
12228             </descriptive>
12229             <Type name="BluetoothAddress"/>
12230           </Argument>
12231         </ArgumentList>
12232       </Operation>
12233       <Operation name="onfinished" id="::Bluetooth::BluetoothDiscoverDevicesSuccessCallback::onfinished">
12234         <webidl>        void onfinished(<ref>BluetoothDevice</ref>[] foundDevices);</webidl>
12235         <descriptive>
12236             <brief>
12237  The method to be invoked when the device discovery process has finished.
12238             </brief>
12239             <version>
12240  1.0
12241             </version>
12242         </descriptive>
12243         <Type type="void"/>
12244         <ArgumentList>
12245           <Argument name="foundDevices">
12246             <descriptive>
12247                 <description><p>
12248  The array of devices found in this discovery session.                         </p></description>
12249             </descriptive>
12250             <Type type="array">
12251               <Type name="BluetoothDevice"/>
12252             </Type>
12253           </Argument>
12254         </ArgumentList>
12255       </Operation>
12256     </Interface>
12257     <Interface name="BluetoothSocketSuccessCallback" id="::Bluetooth::BluetoothSocketSuccessCallback">
12258       <webidl>    [Callback=FunctionOnly, NoInterfaceObject] interface BluetoothSocketSuccessCallback {
12259         void onsuccess(<ref>BluetoothSocket</ref> socket);
12260     };</webidl>
12261       <descriptive>
12262           <brief>
12263  The success method for <em>BluetoothDevice.connectToServiceByUUID()</em>.
12264           </brief>
12265           <version>
12266  1.0
12267           </version>
12268       </descriptive>
12269       <ExtendedAttributeList>
12270         <ExtendedAttribute name="Callback" value="FunctionOnly">
12271           <webidl>Callback</webidl>
12272         </ExtendedAttribute>
12273         <ExtendedAttribute name="NoInterfaceObject">
12274           <webidl> NoInterfaceObject</webidl>
12275         </ExtendedAttribute>
12276       </ExtendedAttributeList>
12277       <Operation name="onsuccess" id="::Bluetooth::BluetoothSocketSuccessCallback::onsuccess">
12278         <webidl>        void onsuccess(<ref>BluetoothSocket</ref> socket);</webidl>
12279         <descriptive>
12280             <brief>
12281  The method to be invoked when the connection to a service is ready.
12282             </brief>
12283             <version>
12284  1.0
12285             </version>
12286         </descriptive>
12287         <Type type="void"/>
12288         <ArgumentList>
12289           <Argument name="socket">
12290             <descriptive>
12291                 <description><p>
12292  The socket to connect to the specified service on a remote device.
12293                 </p></description>
12294             </descriptive>
12295             <Type name="BluetoothSocket"/>
12296           </Argument>
12297         </ArgumentList>
12298       </Operation>
12299     </Interface>
12300     <Interface name="BluetoothServiceSuccessCallback" id="::Bluetooth::BluetoothServiceSuccessCallback">
12301       <webidl>    [Callback=FunctionOnly, NoInterfaceObject] interface BluetoothServiceSuccessCallback {
12302         void onsuccess(<ref>BluetoothServiceHandler</ref> handler);
12303     };</webidl>
12304       <descriptive>
12305           <brief>
12306  This interface implements the success callback for <em>BluetoothAdapter.registerRFCOMMServiceByUUID()</em>.
12307           </brief>
12308           <version>
12309  1.0
12310           </version>
12311       </descriptive>
12312       <ExtendedAttributeList>
12313         <ExtendedAttribute name="Callback" value="FunctionOnly">
12314           <webidl>Callback</webidl>
12315         </ExtendedAttribute>
12316         <ExtendedAttribute name="NoInterfaceObject">
12317           <webidl> NoInterfaceObject</webidl>
12318         </ExtendedAttribute>
12319       </ExtendedAttributeList>
12320       <Operation name="onsuccess" id="::Bluetooth::BluetoothServiceSuccessCallback::onsuccess">
12321         <webidl>        void onsuccess(<ref>BluetoothServiceHandler</ref> handler);</webidl>
12322         <descriptive>
12323             <brief>
12324  The method to be invoked when registering a service with the local device is successful.
12325             </brief>
12326             <version>
12327  1.0
12328             </version>
12329         </descriptive>
12330         <Type type="void"/>
12331         <ArgumentList>
12332           <Argument name="handler">
12333             <descriptive>
12334                 <description><p>
12335  Bluetooth service handler.
12336                 </p></description>
12337             </descriptive>
12338             <Type name="BluetoothServiceHandler"/>
12339           </Argument>
12340         </ArgumentList>
12341       </Operation>
12342     </Interface>
12343     <Interface name="BluetoothHealthApplicationSuccessCallback" id="::Bluetooth::BluetoothHealthApplicationSuccessCallback">
12344       <webidl>    [Callback=FunctionOnly, NoInterfaceObject] interface BluetoothHealthApplicationSuccessCallback {
12345         void onsuccess(<ref>BluetoothHealthApplication</ref> application);
12346     };</webidl>
12347       <descriptive>
12348           <brief>
12349  The success method for <em>BluetoothHealthProfileHandler.registerSinkApplication()</em>.
12350           </brief>
12351           <version>
12352  2.2
12353           </version>
12354       </descriptive>
12355       <ExtendedAttributeList>
12356         <ExtendedAttribute name="Callback" value="FunctionOnly">
12357           <webidl>Callback</webidl>
12358         </ExtendedAttribute>
12359         <ExtendedAttribute name="NoInterfaceObject">
12360           <webidl> NoInterfaceObject</webidl>
12361         </ExtendedAttribute>
12362       </ExtendedAttributeList>
12363       <Operation name="onsuccess" id="::Bluetooth::BluetoothHealthApplicationSuccessCallback::onsuccess">
12364         <webidl>        void onsuccess(<ref>BluetoothHealthApplication</ref> application);</webidl>
12365         <descriptive>
12366             <brief>
12367  The method to be invoked when the application is registered successfully.
12368             </brief>
12369             <version>
12370  2.2
12371             </version>
12372         </descriptive>
12373         <Type type="void"/>
12374         <ArgumentList>
12375           <Argument name="application">
12376             <descriptive>
12377                 <description><p>
12378  The registered health application.
12379                 </p></description>
12380             </descriptive>
12381             <Type name="BluetoothHealthApplication"/>
12382           </Argument>
12383         </ArgumentList>
12384       </Operation>
12385     </Interface>
12386     <Interface name="BluetoothHealthChannelSuccessCallback" id="::Bluetooth::BluetoothHealthChannelSuccessCallback">
12387       <webidl>    [Callback=FunctionOnly, NoInterfaceObject] interface BluetoothHealthChannelSuccessCallback {
12388         void onsuccess(<ref>BluetoothHealthChannel</ref> channel);
12389     };</webidl>
12390       <descriptive>
12391           <brief>
12392  The success method for <em>BluetoothHealthProfileHandler.connectToSource()</em> and the event callback for <em>BluetoothHealthApplication.onconnect</em>.
12393           </brief>
12394           <version>
12395  2.2
12396           </version>
12397       </descriptive>
12398       <ExtendedAttributeList>
12399         <ExtendedAttribute name="Callback" value="FunctionOnly">
12400           <webidl>Callback</webidl>
12401         </ExtendedAttribute>
12402         <ExtendedAttribute name="NoInterfaceObject">
12403           <webidl> NoInterfaceObject</webidl>
12404         </ExtendedAttribute>
12405       </ExtendedAttributeList>
12406       <Operation name="onsuccess" id="::Bluetooth::BluetoothHealthChannelSuccessCallback::onsuccess">
12407         <webidl>        void onsuccess(<ref>BluetoothHealthChannel</ref> channel);</webidl>
12408         <descriptive>
12409             <brief>
12410  The method to be invoked when a connection is established.
12411             </brief>
12412             <version>
12413  2.2
12414             </version>
12415         </descriptive>
12416         <Type type="void"/>
12417         <ArgumentList>
12418           <Argument name="channel">
12419             <descriptive>
12420                 <description><p>
12421  The connected health channel.
12422                 </p></description>
12423             </descriptive>
12424             <Type name="BluetoothHealthChannel"/>
12425           </Argument>
12426         </ArgumentList>
12427       </Operation>
12428     </Interface>
12429     <Interface name="BluetoothHealthChannelChangeCallback" id="::Bluetooth::BluetoothHealthChannelChangeCallback">
12430       <webidl>    [Callback, NoInterfaceObject] interface BluetoothHealthChannelChangeCallback {
12431         void onmessage(byte[] data);
12432                 
12433         void onclose(); 
12434     };</webidl>
12435       <descriptive>
12436           <brief>
12437  This interface specifies a set of methods to be invoked when the changes of heath channel occur.
12438           </brief>
12439           <version>
12440  2.2
12441           </version>
12442       </descriptive>
12443       <ExtendedAttributeList>
12444         <ExtendedAttribute name="Callback">
12445           <webidl>Callback</webidl>
12446         </ExtendedAttribute>
12447         <ExtendedAttribute name="NoInterfaceObject">
12448           <webidl> NoInterfaceObject</webidl>
12449         </ExtendedAttribute>
12450       </ExtendedAttributeList>
12451       <Operation name="onmessage" id="::Bluetooth::BluetoothHealthChannelChangeCallback::onmessage">
12452         <webidl>        void onmessage(byte[] data);</webidl>
12453         <descriptive>
12454             <brief>
12455  The method to be invoked when the message is received.
12456             </brief>
12457             <version>
12458  2.2
12459             </version>
12460         </descriptive>
12461         <Type type="void"/>
12462         <ArgumentList>
12463           <Argument name="data">
12464             <descriptive>
12465                 <description><p>
12466  The received data.
12467                 </p></description>
12468             </descriptive>
12469             <Type type="array">
12470               <Type type="byte"/>
12471             </Type>
12472           </Argument>
12473         </ArgumentList>
12474       </Operation>
12475       <Operation name="onclose" id="::Bluetooth::BluetoothHealthChannelChangeCallback::onclose">
12476         <webidl>        void onclose();</webidl>
12477         <descriptive>
12478             <brief>
12479  The method to be invoked when the health channel is closed.
12480             </brief>
12481             <version>
12482  2.2
12483             </version>
12484         </descriptive>
12485         <Type type="void"/>
12486         <ArgumentList/>
12487       </Operation>
12488     </Interface>
12489   </Module>
12490   <Module name="Bookmark" id="::Bookmark">
12491     <webidl>module Bookmark {&#13;
12492 &#13;
12493   typedef (<ref>BookmarkItem</ref> or <ref>BookmarkFolder</ref>) Bookmark;&#13;
12494 &#13;
12495 &#13;
12496   [NoInterfaceObject] interface BookmarkManagerObject {&#13;
12497     readonly attribute <ref>BookmarkManager</ref> bookmark;&#13;
12498   };&#13;
12499   <ref>Tizen</ref> implements <ref>BookmarkManagerObject</ref>;&#13;
12500 &#13;
12501 &#13;
12502   [NoInterfaceObject] interface BookmarkManager {&#13;
12503 &#13;
12504     <ref>Bookmark</ref>[] get(optional <ref>BookmarkFolder</ref>? parentFolder, optional boolean? recursive) raises(<ref>WebAPIException</ref>);&#13;
12505 &#13;
12506     void add(<ref>Bookmark</ref> bookmark, optional <ref>BookmarkFolder</ref>? parentFolder) raises(<ref>WebAPIException</ref>);&#13;
12507 &#13;
12508     void remove(optional <ref>Bookmark</ref>? bookmark) raises(<ref>WebAPIException</ref>);&#13;
12509 &#13;
12510   };&#13;
12511 &#13;
12512 &#13;
12513   [Constructor(DOMString title, DOMString url)]&#13;
12514 &#13;
12515   interface BookmarkItem {&#13;
12516 &#13;
12517     readonly attribute <ref>BookmarkFolder</ref>? parent;&#13;
12518 &#13;
12519     readonly attribute DOMString title;&#13;
12520 &#13;
12521     readonly attribute DOMString url;&#13;
12522 &#13;
12523   };&#13;
12524 &#13;
12525   [Constructor(DOMString title)]&#13;
12526 &#13;
12527   interface BookmarkFolder {&#13;
12528 &#13;
12529     readonly attribute <ref>BookmarkFolder</ref>? parent;&#13;
12530 &#13;
12531     readonly attribute DOMString title;&#13;
12532 &#13;
12533   };&#13;
12534 };</webidl>
12535     <descriptive>
12536         <brief>
12537  This API provides interfaces and methods for accessing Bookmark.
12538 This API provides functionality to get, add, and remove bookmarks.
12539         </brief>
12540        <description>
12541         <p>
12542 For more information on the Bookmark features, see <a href="../../org.tizen.web.appprogramming/html/guide/social_guide/bookmark.htm">Bookmark Guide</a>. 
12543         </p>
12544        </description>
12545         <version>
12546  2.1
12547         </version>
12548     </descriptive>
12549     <Typedef name="Bookmark" id="::Bookmark::Bookmark">
12550       <webidl>  typedef (<ref>BookmarkItem</ref> or <ref>BookmarkFolder</ref>) Bookmark;</webidl>
12551       <descriptive>
12552           <brief>
12553  A bookmark, which could be either a <em>BookmarkItem </em>or a <em>BookmarkFolder</em>.
12554           </brief>
12555           <version>
12556  2.1
12557           </version>
12558       </descriptive>
12559       <Type type="union">
12560         <Type name="BookmarkItem"/>
12561         <Type name="BookmarkFolder"/>
12562       </Type>
12563     </Typedef>
12564     <Interface name="BookmarkManagerObject" id="::Bookmark::BookmarkManagerObject">
12565       <webidl>  [NoInterfaceObject] interface BookmarkManagerObject {&#13;
12566     readonly attribute <ref>BookmarkManager</ref> bookmark;&#13;
12567   };</webidl>
12568       <descriptive>
12569           <brief>
12570  Defines what is instantiated by the Tizen object from the Tizen Platform.
12571           </brief>
12572          <description>
12573           <p>
12574 There will be a <em>tizen.bookmark </em>object that allows to access the functionality of the Bookmark API.
12575           </p>
12576          </description>
12577           <version>
12578  2.1
12579           </version>
12580       </descriptive>
12581       <ExtendedAttributeList>
12582         <ExtendedAttribute name="NoInterfaceObject">
12583           <webidl>NoInterfaceObject</webidl>
12584         </ExtendedAttribute>
12585       </ExtendedAttributeList>
12586       <Attribute readonly="readonly" name="bookmark" id="::Bookmark::BookmarkManagerObject::bookmark">
12587         <webidl>    readonly attribute <ref>BookmarkManager</ref> bookmark;</webidl>
12588         <Type name="BookmarkManager"/>
12589       </Attribute>
12590     </Interface>
12591     <Implements name1="Tizen" name2="BookmarkManagerObject">
12592       <webidl>  <ref>Tizen</ref> implements <ref>BookmarkManagerObject</ref>;</webidl>
12593     </Implements>
12594     <Interface name="BookmarkManager" id="::Bookmark::BookmarkManager">
12595       <webidl>  [NoInterfaceObject] interface BookmarkManager {&#13;
12596 &#13;
12597     <ref>Bookmark</ref>[] get(optional <ref>BookmarkFolder</ref>? parentFolder, optional boolean? recursive) raises(<ref>WebAPIException</ref>);&#13;
12598 &#13;
12599     void add(<ref>Bookmark</ref> bookmark, optional <ref>BookmarkFolder</ref>? parentFolder) raises(<ref>WebAPIException</ref>);&#13;
12600 &#13;
12601     void remove(optional <ref>Bookmark</ref>? bookmark) raises(<ref>WebAPIException</ref>);&#13;
12602 &#13;
12603   };</webidl>
12604       <descriptive>
12605           <brief>
12606  This interface provides access to the bookmark folder and bookmark item.
12607           </brief>
12608          <description>
12609           <p>
12610 It provides access to the API functionalities through the <em>tizen.bookmark </em>interface.
12611           </p>
12612          </description>
12613           <version>
12614  2.1
12615           </version>
12616       </descriptive>
12617       <ExtendedAttributeList>
12618         <ExtendedAttribute name="NoInterfaceObject">
12619           <webidl>NoInterfaceObject</webidl>
12620         </ExtendedAttribute>
12621       </ExtendedAttributeList>
12622       <Operation name="get" id="::Bookmark::BookmarkManager::get">
12623         <webidl>    <ref>Bookmark</ref>[] get(optional <ref>BookmarkFolder</ref>? parentFolder, optional boolean? recursive) raises(<ref>WebAPIException</ref>);</webidl>
12624         <descriptive>
12625             <brief>
12626  Gets all bookmark items and bookmark folders.
12627             </brief>
12628            <description>
12629             <p>
12630 If no parentFolder is passed, or the parentFolder contains <var>null</var>, it is considered as the default bookmark folder(The root bookmark folder).
12631 In this case, the return will contain bookmarks under the root bookmark folder.
12632             </p>
12633            </description>
12634             <version>
12635  2.1
12636             </version>
12637             <privilege>
12638  http://tizen.org/privilege/bookmark.read
12639             </privilege>
12640             <privilegelevel>
12641  platform
12642             </privilegelevel>
12643             <Code> try {
12644   // retrieve bookmarks from the root bookmark folder recursively
12645   var allBookmarks = tizen.bookmark.get(null, true);
12646  } catch (err) {
12647   console.log (err.name +&quot;: &quot; + err.message);
12648  }
12649  </Code>
12650         </descriptive>
12651         <Type type="array">
12652           <descriptive>
12653               <description><p>
12654  Bookmark[] Array of Bookmarks.
12655               </p></description>
12656           </descriptive>
12657           <Type name="Bookmark"/>
12658         </Type>
12659         <ArgumentList>
12660           <Argument optional="optional" name="parentFolder">
12661             <descriptive>
12662                 <description><p>
12663  The parent bookmark folder to retrieve the result bookmarks.
12664                 </p></description>
12665             </descriptive>
12666             <Type name="BookmarkFolder" nullable="nullable"/>
12667           </Argument>
12668           <Argument optional="optional" name="recursive">
12669             <descriptive>
12670                 <description><p>
12671  The flag indicating whether sub-bookmarks are also retrieved recursively or not<br/> (The default value is <em>false</em>).
12672                 </p></description>
12673             </descriptive>
12674             <Type type="boolean" nullable="nullable"/>
12675           </Argument>
12676         </ArgumentList>
12677         <Raises>
12678           <RaiseException name="WebAPIException">
12679             <descriptive>
12680                 <description><p>
12681  with error type NotFoundError, if the parentFolder parameter isn't found in bookmark database.
12682                 </p></description>
12683                 <description><p>
12684  with error type TypeMismatchError, if an input parameter is not compatible with the expected type for that parameter.
12685                 </p></description>
12686                 <description><p>
12687  with error type SecurityError, if the application does not have the privilege to call this method.
12688                 </p></description>
12689                 <description><p>
12690  with error type UnknownError, if any other error occurs.
12691                 </p></description>
12692             </descriptive>
12693           </RaiseException>
12694         </Raises>
12695       </Operation>
12696       <Operation name="add" id="::Bookmark::BookmarkManager::add">
12697         <webidl>    void add(<ref>Bookmark</ref> bookmark, optional <ref>BookmarkFolder</ref>? parentFolder) raises(<ref>WebAPIException</ref>);</webidl>
12698         <descriptive>
12699             <brief>
12700  Adds a bookmark item or a bookmark folder.
12701             </brief>
12702            <description>
12703             <p>
12704 If no parentFolder is passed, or the parentFolder contains <var>null</var>, it is considered as the default bookmark folder(The root bookmark folder).
12705 In this case, the bookmark is added under the root bookmark folder.
12706             </p>
12707            </description>
12708             <version>
12709  2.1
12710             </version>
12711             <privilege>
12712  http://tizen.org/privilege/bookmark.write
12713             </privilege>
12714             <privilegelevel>
12715  platform
12716             </privilegelevel>
12717             <Code> try {
12718  // add a bookmark item to root bookmark folder.
12719   tizen.bookmark.add(new tizen.BookmarkItem(&quot;tizen&quot;, &quot;https://www.tizen.org&quot;));
12720  } catch (err) {
12721   console.log (err.name +&quot;: &quot; + err.message);
12722  }
12723  </Code>
12724         </descriptive>
12725         <Type type="void"/>
12726         <ArgumentList>
12727           <Argument name="bookmark">
12728             <descriptive>
12729                 <description><p>
12730  The bookmark to be added.
12731                 </p></description>
12732             </descriptive>
12733             <Type name="Bookmark"/>
12734           </Argument>
12735           <Argument optional="optional" name="parentFolder">
12736             <descriptive>
12737                 <description><p>
12738  The parent folder of a bookmark to be added.
12739                 </p></description>
12740             </descriptive>
12741             <Type name="BookmarkFolder" nullable="nullable"/>
12742           </Argument>
12743         </ArgumentList>
12744         <Raises>
12745           <RaiseException name="WebAPIException">
12746             <descriptive>
12747                 <description><p>
12748  with error type NotFoundError, if a parentFolder parameter isn't found in bookmark database.
12749                 </p></description>
12750                 <description><p>
12751  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.
12752                 </p></description>
12753                 <description><p>
12754  with error type TypeMismatchError, if an input parameter is not compatible with the expected type for that parameter.
12755                 </p></description>
12756                 <description><p>
12757  with error type SecurityError, if the application does not have the privilege to call this method.
12758                 </p></description>
12759                 <description><p>
12760  with error type UnknownError, if any other error occurs.
12761                 </p></description>
12762             </descriptive>
12763           </RaiseException>
12764         </Raises>
12765       </Operation>
12766       <Operation name="remove" id="::Bookmark::BookmarkManager::remove">
12767         <webidl>    void remove(optional <ref>Bookmark</ref>? bookmark) raises(<ref>WebAPIException</ref>);</webidl>
12768         <descriptive>
12769             <brief>
12770  Removes a bookmark item or a bookmark folder.
12771             </brief>
12772            <description>
12773             <p>
12774 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).
12775 In this case, all the bookmarks will be removed.
12776             </p>
12777            </description>
12778             <version>
12779  2.1
12780             </version>
12781             <privilege>
12782  http://tizen.org/privilege/bookmark.write
12783             </privilege>
12784             <privilegelevel>
12785  platform
12786             </privilegelevel>
12787             <Code> try {
12788  // remove all the bookmark folders and items
12789   tizen.bookmark.remove();
12790  } catch (err) {
12791   console.log (err.name +&quot;: &quot; + err.message);
12792  }
12793  </Code>
12794         </descriptive>
12795         <Type type="void"/>
12796         <ArgumentList>
12797           <Argument optional="optional" name="bookmark">
12798             <descriptive>
12799                 <description><p>
12800  The bookmark to be removed.
12801                 </p></description>
12802             </descriptive>
12803             <Type name="Bookmark" nullable="nullable"/>
12804           </Argument>
12805         </ArgumentList>
12806         <Raises>
12807           <RaiseException name="WebAPIException">
12808             <descriptive>
12809                 <description><p>
12810  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
12811                 </p></description>
12812                 <description><p>
12813  with error type SecurityError, if the application does not have the privilege to call this method.
12814                 </p></description>
12815                 <description><p>
12816  with error type UnknownError, if any other error occurs.
12817                 </p></description>
12818             </descriptive>
12819           </RaiseException>
12820         </Raises>
12821       </Operation>
12822     </Interface>
12823     <Interface name="BookmarkItem" id="::Bookmark::BookmarkItem">
12824       <webidl>  [Constructor(DOMString title, DOMString url)]&#13;
12825 &#13;
12826   interface BookmarkItem {&#13;
12827 &#13;
12828     readonly attribute <ref>BookmarkFolder</ref>? parent;&#13;
12829 &#13;
12830     readonly attribute DOMString title;&#13;
12831 &#13;
12832     readonly attribute DOMString url;&#13;
12833 &#13;
12834   };</webidl>
12835       <descriptive>
12836           <brief>
12837  This interface implements the <em>BookmarkItem </em>object.
12838           </brief>
12839           <version>
12840  2.1
12841           </version>
12842       </descriptive>
12843       <ExtendedAttributeList>
12844         <ExtendedAttribute name="Constructor">
12845           <webidl>Constructor(DOMString title, DOMString url)</webidl>
12846           <descriptive>
12847               <Code> try {
12848  // create a bookmark item
12849   var tizen = new tizen.BookmarkItem(&quot;tizen&quot;, &quot;https://www.tizen.org&quot;);
12850  } catch (err) {
12851   console.log (err.name +&quot;: &quot; + err.message);
12852  }
12853  </Code>
12854           </descriptive>
12855           <ArgumentList>
12856             <Argument name="title">
12857               <Type type="DOMString"/>
12858             </Argument>
12859             <Argument name="url">
12860               <Type type="DOMString"/>
12861             </Argument>
12862           </ArgumentList>
12863         </ExtendedAttribute>
12864       </ExtendedAttributeList>
12865       <Attribute readonly="readonly" name="parent" id="::Bookmark::BookmarkItem::parent">
12866         <webidl>    readonly attribute <ref>BookmarkFolder</ref>? parent;</webidl>
12867         <descriptive>
12868             <brief>
12869  The parent bookmark folder.
12870             </brief>
12871            <description>
12872             <p>
12873 This attribute is meaningful when this object is successfully added or retrieved.
12874 If this BookmarkItem is not added yet, its value is set to undefined.
12875             </p>
12876             <p>
12877 If the parent bookmark folder indicates the root bookmark folder, the value will be <var>null</var>.
12878             </p>
12879            </description>
12880             <version>
12881  2.1
12882             </version>
12883         </descriptive>
12884         <Type name="BookmarkFolder" nullable="nullable"/>
12885       </Attribute>
12886       <Attribute readonly="readonly" name="title" id="::Bookmark::BookmarkItem::title">
12887         <webidl>    readonly attribute DOMString title;</webidl>
12888         <descriptive>
12889             <brief>
12890  The title of the bookmark.
12891             </brief>
12892             <version>
12893  2.1
12894             </version>
12895         </descriptive>
12896         <Type type="DOMString"/>
12897       </Attribute>
12898       <Attribute readonly="readonly" name="url" id="::Bookmark::BookmarkItem::url">
12899         <webidl>    readonly attribute DOMString url;</webidl>
12900         <descriptive>
12901             <brief>
12902  The uri of the bookmark.
12903             </brief>
12904             <version>
12905  2.1
12906             </version>
12907         </descriptive>
12908         <Type type="DOMString"/>
12909       </Attribute>
12910     </Interface>
12911     <Interface name="BookmarkFolder" id="::Bookmark::BookmarkFolder">
12912       <webidl>  [Constructor(DOMString title)]&#13;
12913 &#13;
12914   interface BookmarkFolder {&#13;
12915 &#13;
12916     readonly attribute <ref>BookmarkFolder</ref>? parent;&#13;
12917 &#13;
12918     readonly attribute DOMString title;&#13;
12919 &#13;
12920   };</webidl>
12921       <descriptive>
12922           <brief>
12923  This interface implements the <em>BookmarkFolder </em>object.
12924           </brief>
12925           <version>
12926  2.1
12927           </version>
12928       </descriptive>
12929       <ExtendedAttributeList>
12930         <ExtendedAttribute name="Constructor">
12931           <webidl>Constructor(DOMString title)</webidl>
12932           <descriptive>
12933               <Code> try {
12934  // create a bookmark folder
12935   var folder = new tizen.BookmarkFolder(&quot;folder&quot;);
12936  } catch (err) {
12937   console.log (err.name +&quot;: &quot; + err.message);
12938  }
12939  </Code>
12940           </descriptive>
12941           <ArgumentList>
12942             <Argument name="title">
12943               <Type type="DOMString"/>
12944             </Argument>
12945           </ArgumentList>
12946         </ExtendedAttribute>
12947       </ExtendedAttributeList>
12948       <Attribute readonly="readonly" name="parent" id="::Bookmark::BookmarkFolder::parent">
12949         <webidl>    readonly attribute <ref>BookmarkFolder</ref>? parent;</webidl>
12950         <descriptive>
12951             <brief>
12952  The parent bookmark folder.
12953             </brief>
12954            <description>
12955             <p>
12956 This attribute is meaningful when this object is successfully added or retrieved.
12957 If this BookmarkFolder is not added yet, its value is set to undefined.
12958             </p>
12959             <p>
12960 If the parent bookmark folder indicates the root bookmark folder, the value will be <var>null</var>.
12961             </p>
12962            </description>
12963             <version>
12964  2.1
12965             </version>
12966         </descriptive>
12967         <Type name="BookmarkFolder" nullable="nullable"/>
12968       </Attribute>
12969       <Attribute readonly="readonly" name="title" id="::Bookmark::BookmarkFolder::title">
12970         <webidl>    readonly attribute DOMString title;</webidl>
12971         <descriptive>
12972             <brief>
12973  The title of the bookmark folder.
12974             </brief>
12975             <version>
12976  2.1
12977             </version>
12978         </descriptive>
12979         <Type type="DOMString"/>
12980       </Attribute>
12981     </Interface>
12982   </Module>
12983   <Module name="Calendar" id="::Calendar">
12984     <webidl>module Calendar {
12985   typedef DOMString CalendarId;
12986   
12987   typedef DOMString CalendarTaskId;
12988   
12989   typedef (<ref>CalendarEventId</ref> or <ref>CalendarTaskId</ref>) CalendarItemId;
12990   
12991   enum CalendarType { &quot;EVENT&quot;, &quot;TASK&quot; };
12992   
12993   enum CalendarTextFormat { &quot;ICALENDAR_20&quot;, &quot;VCALENDAR_10&quot; };
12994   
12995   enum AlarmMethod { &quot;SOUND&quot;, &quot;DISPLAY&quot; };
12996   
12997   
12998   enum RecurrenceRuleFrequency { &quot;DAILY&quot;, &quot;WEEKLY&quot;, &quot;MONTHLY&quot;, &quot;YEARLY&quot; };
12999   
13000   enum ByDayValue { &quot;MO&quot;, &quot;TU&quot;, &quot;WE&quot;, &quot;TH&quot;, &quot;FR&quot;, &quot;SA&quot;, &quot;SU&quot; };
13001   
13002   enum EventAvailability { &quot;BUSY&quot;, &quot;FREE&quot; };
13003   
13004   enum AttendeeType { &quot;INDIVIDUAL&quot;, &quot;GROUP&quot;, &quot;RESOURCE&quot;, &quot;ROOM&quot;, &quot;UNKNOWN&quot; };
13005   
13006   enum AttendeeStatus { &quot;PENDING&quot;, &quot;ACCEPTED&quot;, &quot;DECLINED&quot;, &quot;TENTATIVE&quot;, &quot;DELEGATED&quot;, &quot;COMPLETED&quot;, &quot;IN_PROCESS&quot; };
13007   
13008   enum AttendeeRole { &quot;REQ_PARTICIPANT&quot;, &quot;OPT_PARTICIPANT&quot;, &quot;NON_PARTICIPANT&quot;, &quot;CHAIR&quot; };
13009   
13010   enum CalendarItemPriority { &quot;HIGH&quot;, &quot;MEDIUM&quot;, &quot;LOW&quot; };
13011   
13012    enum CalendarItemVisibility { &quot;PUBLIC&quot;, &quot;PRIVATE&quot;, &quot;CONFIDENTIAL&quot; };
13013    
13014    enum CalendarItemStatus { &quot;TENTATIVE&quot;, &quot;CONFIRMED&quot;, &quot;CANCELLED&quot;, &quot;NEEDS_ACTION&quot;, &quot;IN_PROCESS&quot;, &quot;COMPLETED&quot; };
13015   
13016   [NoInterfaceObject] interface CalendarManagerObject{
13017     readonly attribute <ref>CalendarManager</ref> calendar; 
13018   };
13019   <ref>Tizen</ref> implements <ref>CalendarManagerObject</ref>;    
13020
13021   [NoInterfaceObject] interface CalendarManager {
13022     void getCalendars(<ref>CalendarType</ref> type,
13023                       <ref>CalendarArraySuccessCallback</ref> successCallback,
13024                       optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
13025
13026     <ref>Calendar</ref> getUnifiedCalendar(<ref>CalendarType</ref> type) raises(<ref>WebAPIException</ref>);
13027
13028     <ref>Calendar</ref> getDefaultCalendar(<ref>CalendarType</ref> type) raises(<ref>WebAPIException</ref>);
13029     
13030     <ref>Calendar</ref> getCalendar(<ref>CalendarType</ref> type, <ref>CalendarId</ref> id) raises(<ref>WebAPIException</ref>);
13031   };
13032
13033   [NoInterfaceObject] interface Calendar {
13034     
13035     readonly attribute <ref>CalendarId</ref> id;
13036
13037     readonly attribute DOMString name;
13038                               
13039     <ref>CalendarItem</ref> get(<ref>CalendarItemId</ref> id) raises(<ref>WebAPIException</ref>);
13040
13041     void add(<ref>CalendarItem</ref> item) raises(<ref>WebAPIException</ref>);
13042
13043     void addBatch(<ref>CalendarItem</ref>[] items,
13044                   optional <ref>CalendarItemArraySuccessCallback</ref>? successCallback,
13045                   optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
13046
13047     void update(<ref>CalendarItem</ref> item,
13048                 optional boolean? updateAllInstances) raises(<ref>WebAPIException</ref>);
13049
13050      void updateBatch(<ref>CalendarItem</ref>[] items,
13051                      optional <ref>SuccessCallback</ref>? successCallback,
13052                      optional <ref>ErrorCallback</ref>? errorCallback,
13053                      optional boolean? updateAllInstances) raises(<ref>WebAPIException</ref>);
13054
13055     void remove(<ref>CalendarItemId</ref> id) raises(<ref>WebAPIException</ref>);
13056
13057     void removeBatch(<ref>CalendarItemId</ref>[] ids,
13058                      optional <ref>SuccessCallback</ref>? successCallback,
13059                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
13060  
13061     void find(<ref>CalendarItemArraySuccessCallback</ref> successCallback,
13062               optional <ref>ErrorCallback</ref>? errorCallback,
13063               optional <ref>AbstractFilter</ref>? filter,
13064               optional <ref>SortMode</ref>? sortMode) raises(<ref>WebAPIException</ref>);
13065                                 
13066     long addChangeListener(<ref>CalendarChangeCallback</ref> successCallback) raises(<ref>WebAPIException</ref>);
13067                       
13068     void removeChangeListener(long watchId) raises(<ref>WebAPIException</ref>);
13069   };
13070   
13071   dictionary CalendarItemInit {
13072     DOMString description;
13073     DOMString summary;
13074     boolean isAllDay;
13075     <ref>TZDate</ref> startDate;
13076     <ref>TimeDuration</ref> duration;
13077     DOMString location;
13078     <ref>SimpleCoordinates</ref> geolocation;
13079     DOMString organizer;
13080     <ref>CalendarItemVisibility</ref> visibility;
13081     <ref>CalendarItemStatus</ref> status;
13082     <ref>CalendarItemPriority</ref> priority;
13083     <ref>CalendarAlarm</ref>[] alarms;
13084     DOMString[] categories;
13085     <ref>CalendarAttendee</ref>[] attendees;
13086   };
13087   
13088   dictionary CalendarTaskInit: <ref>CalendarItemInit</ref> {
13089     <ref>TZDate</ref> dueDate;
13090     <ref>TZDate</ref> completedDate;
13091     short progress;
13092   };
13093
13094   dictionary CalendarEventInit: <ref>CalendarItemInit</ref> {
13095     <ref>TZDate</ref> endDate;
13096     <ref>EventAvailability</ref> availability;
13097     <ref>CalendarRecurrenceRule</ref> recurrenceRule;
13098   };
13099   
13100   [NoInterfaceObject] interface CalendarItem {
13101     readonly attribute <ref>CalendarItemId</ref>? id;
13102
13103     readonly attribute <ref>CalendarId</ref>? calendarId;
13104
13105     readonly attribute <ref>TZDate</ref>? lastModificationDate;
13106     
13107     attribute DOMString? description setraises(<ref>WebAPIException</ref>);
13108     
13109     attribute DOMString? summary setraises(<ref>WebAPIException</ref>);
13110     
13111     attribute boolean isAllDay setraises(<ref>WebAPIException</ref>);
13112     
13113     attribute <ref>TZDate</ref>? startDate setraises(<ref>WebAPIException</ref>);
13114     
13115     attribute <ref>TimeDuration</ref>? duration setraises(<ref>WebAPIException</ref>);
13116     
13117     attribute DOMString? location setraises(<ref>WebAPIException</ref>);
13118     
13119     attribute <ref>SimpleCoordinates</ref>? geolocation setraises(<ref>WebAPIException</ref>);
13120     
13121     attribute DOMString? organizer setraises(<ref>WebAPIException</ref>);
13122     
13123     attribute <ref>CalendarItemVisibility</ref> visibility setraises(<ref>WebAPIException</ref>);
13124     
13125     attribute <ref>CalendarItemStatus</ref> status setraises(<ref>WebAPIException</ref>);
13126     
13127     attribute <ref>CalendarItemPriority</ref> priority setraises(<ref>WebAPIException</ref>);
13128     
13129     attribute <ref>CalendarAlarm</ref>[] alarms setraises(<ref>WebAPIException</ref>);
13130     
13131     attribute DOMString[] categories setraises(<ref>WebAPIException</ref>);
13132     
13133     attribute <ref>CalendarAttendee</ref>[] attendees setraises(<ref>WebAPIException</ref>);
13134     
13135     DOMString convertToString(<ref>CalendarTextFormat</ref> format) raises(<ref>WebAPIException</ref>);
13136
13137     <ref>CalendarItem</ref> clone() raises(<ref>WebAPIException</ref>);
13138   };
13139   
13140   [Constructor(optional <ref>CalendarTaskInit</ref>? taskInitDict),
13141    Constructor(DOMString stringRepresentation, <ref>CalendarTextFormat</ref> format)]
13142   interface CalendarTask : <ref>CalendarItem</ref> {
13143     attribute <ref>TZDate</ref>? dueDate setraises(<ref>WebAPIException</ref>);
13144     
13145     attribute <ref>TZDate</ref>? completedDate setraises(<ref>WebAPIException</ref>);
13146     
13147     attribute unsigned short progress setraises(<ref>WebAPIException</ref>);
13148   };
13149
13150   [Constructor(optional <ref>CalendarEventInit</ref>? eventInitDict),
13151    Constructor(DOMString stringRepresentation, <ref>CalendarTextFormat</ref> format)]
13152   interface CalendarEvent : <ref>CalendarItem</ref> {
13153     readonly attribute boolean isDetached;
13154     
13155     attribute <ref>TZDate</ref>? endDate setraises(<ref>WebAPIException</ref>);
13156     
13157     attribute <ref>EventAvailability</ref> availability setraises(<ref>WebAPIException</ref>);
13158     
13159     attribute <ref>CalendarRecurrenceRule</ref>? recurrenceRule setraises(<ref>WebAPIException</ref>);
13160     
13161     void expandRecurrence(<ref>TZDate</ref> startDate,
13162                           <ref>TZDate</ref> endDate,
13163                           <ref>CalendarEventArraySuccessCallback</ref> successCallback,
13164                           optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
13165   };
13166   
13167   dictionary CalendarAttendeeInit {
13168     DOMString name;
13169     <ref>AttendeeRole</ref> role;
13170     <ref>AttendeeStatus</ref> status;
13171     boolean RSVP;
13172     <ref>AttendeeType</ref> type;
13173     DOMString? group;
13174     DOMString delegatorURI;
13175     DOMString delegateURI;
13176     <ref>ContactRef</ref> contactRef;
13177   };
13178
13179   [Constructor(DOMString uri, optional <ref>CalendarAttendeeInit</ref>? attendeeInitDict)]
13180   interface CalendarAttendee
13181   {
13182     attribute DOMString uri;
13183     
13184     attribute DOMString? name;
13185     
13186     attribute <ref>AttendeeRole</ref> role;
13187     
13188     attribute <ref>AttendeeStatus</ref> status;
13189     
13190     attribute boolean RSVP;
13191     
13192     attribute <ref>AttendeeType</ref> type;
13193      
13194     attribute DOMString? group;
13195       
13196     attribute DOMString? delegatorURI;
13197       
13198     attribute DOMString? delegateURI;
13199      
13200     attribute <ref>ContactRef</ref>? contactRef;
13201   };
13202   
13203   dictionary CalendarRecurrenceRuleInit {
13204     short interval;
13205     <ref>TZDate</ref> untilDate;
13206     long occurrenceCount;
13207     <ref>ByDayValue</ref>[] daysOfTheWeek;
13208     short[] setPositions;
13209     <ref>TZDate</ref>[] exceptions;
13210   };
13211   
13212   [Constructor(<ref>RecurrenceRuleFrequency</ref> frequency, optional <ref>CalendarRecurrenceRuleInit</ref>? ruleInitDict)]
13213   interface CalendarRecurrenceRule
13214   { 
13215     attribute <ref>RecurrenceRuleFrequency</ref> frequency;
13216     
13217     attribute unsigned short interval;
13218     
13219     attribute <ref>TZDate</ref>? untilDate;
13220     
13221     attribute long occurrenceCount;
13222     
13223     attribute <ref>ByDayValue</ref>[] daysOfTheWeek;
13224     
13225     attribute short[] setPositions;
13226     
13227     attribute <ref>TZDate</ref>[] exceptions;
13228   };
13229   
13230   [Constructor(DOMString uid, optional DOMString? rid)]
13231   interface CalendarEventId {
13232     attribute DOMString uid;
13233     
13234     attribute DOMString? rid;
13235   };
13236   
13237   [Constructor(<ref>TZDate</ref> absoluteDate, <ref>AlarmMethod</ref> method, optional DOMString? description),
13238    Constructor(<ref>TimeDuration</ref> before, <ref>AlarmMethod</ref> method, optional DOMString? description)]
13239   interface CalendarAlarm {
13240     attribute <ref>TZDate</ref>? absoluteDate setraises(<ref>WebAPIException</ref>);
13241     
13242     attribute <ref>TimeDuration</ref>? before setraises(<ref>WebAPIException</ref>);
13243   
13244     attribute <ref>AlarmMethod</ref> method setraises(<ref>WebAPIException</ref>);
13245     
13246     attribute DOMString? description;
13247   };
13248
13249   [Callback=FunctionOnly, NoInterfaceObject]
13250   interface CalendarEventArraySuccessCallback {
13251     void onsuccess(<ref>CalendarEvent</ref>[] events);
13252   };
13253   
13254   [Callback=FunctionOnly, NoInterfaceObject]
13255   interface CalendarItemArraySuccessCallback {
13256     void onsuccess(<ref>CalendarItem</ref>[] items);
13257   };
13258
13259   [Callback=FunctionOnly, NoInterfaceObject]
13260   interface CalendarArraySuccessCallback {
13261     void onsuccess(<ref>Calendar</ref>[] calendars);
13262   };
13263   
13264   [Callback, NoInterfaceObject] interface CalendarChangeCallback {
13265     void onitemsadded(<ref>CalendarItem</ref>[] items);
13266     
13267     void onitemsupdated(<ref>CalendarItem</ref>[] items);
13268     
13269     void onitemsremoved(<ref>CalendarItemId</ref>[] ids);
13270   };
13271 };</webidl>
13272     <descriptive>
13273         <brief>
13274  This API provides interfaces and methods for users to manage their schedule. 
13275 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.
13276         </brief>
13277        <description>
13278         <p>
13279 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>. 
13280         </p>
13281         <p>
13282 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.
13283         </p>
13284         <p>
13285 For more information on the Calendar features, see <a href="../../org.tizen.web.appprogramming/html/guide/social_guide/calendar.htm">Calendar Guide</a>. 
13286         </p>
13287        </description>
13288         <version>
13289  1.0
13290         </version>
13291     </descriptive>
13292     <Typedef name="CalendarId" id="::Calendar::CalendarId">
13293       <webidl>  typedef DOMString CalendarId;</webidl>
13294       <descriptive>
13295           <brief>
13296  An attribute to identify the calendar.
13297           </brief>
13298           <version>
13299  1.0
13300           </version>
13301       </descriptive>
13302       <Type type="DOMString"/>
13303     </Typedef>
13304     <Typedef name="CalendarTaskId" id="::Calendar::CalendarTaskId">
13305       <webidl>  typedef DOMString CalendarTaskId;</webidl>
13306       <descriptive>
13307           <brief>
13308  An attribute to identify a calendar task.
13309           </brief>
13310           <version>
13311  1.0
13312           </version>
13313       </descriptive>
13314       <Type type="DOMString"/>
13315     </Typedef>
13316     <Typedef name="CalendarItemId" id="::Calendar::CalendarItemId">
13317       <webidl>  typedef (<ref>CalendarEventId</ref> or <ref>CalendarTaskId</ref>) CalendarItemId;</webidl>
13318       <descriptive>
13319           <brief>
13320  A calendar item identifier, which can either be a <em>CalendarEventId </em>or a <em>CalendarTaskId</em>.
13321           </brief>
13322           <version>
13323  1.0
13324           </version>
13325       </descriptive>
13326       <Type type="union">
13327         <Type name="CalendarEventId"/>
13328         <Type name="CalendarTaskId"/>
13329       </Type>
13330     </Typedef>
13331     <Enum name="CalendarType" id="::Calendar::CalendarType">
13332       <webidl>  enum CalendarType { &quot;EVENT&quot;, &quot;TASK&quot; };</webidl>
13333       <descriptive>
13334           <brief>
13335  An enumerator that indicates the type of a calendar.
13336           </brief>
13337          <description>
13338           <p>
13339 The following types are supported:
13340           </p>
13341           <ul>
13342             <li>
13343 EVENT - if a calendar contains events (VEVENT objects)            </li>
13344             <li>
13345 TASK - if a calendar contains tasks (VTODO objects)            </li>
13346           </ul>
13347          </description>
13348           <version>
13349  1.0
13350           </version>
13351       </descriptive>
13352       <EnumValue stringvalue="EVENT">
13353         <webidl> &quot;EVENT</webidl>
13354       </EnumValue>
13355       <EnumValue stringvalue="TASK">
13356         <webidl> &quot;TASK</webidl>
13357       </EnumValue>
13358     </Enum>
13359     <Enum name="CalendarTextFormat" id="::Calendar::CalendarTextFormat">
13360       <webidl>  enum CalendarTextFormat { &quot;ICALENDAR_20&quot;, &quot;VCALENDAR_10&quot; };</webidl>
13361       <descriptive>
13362           <brief>
13363  An enumerator that indicates the type of textual format of a Calendar.
13364           </brief>
13365          <description>
13366           <p>
13367 The following values are supported:
13368           </p>
13369           <ul>
13370             <li>
13371 ICALENDAR_20 -  if the textual format is iCalendar v2.0            </li>
13372             <li>
13373 VCALENDAR_10 -  if the textual format is vCalendar v1.0            </li>
13374           </ul>
13375          </description>
13376           <version>
13377  1.0
13378           </version>
13379       </descriptive>
13380       <EnumValue stringvalue="ICALENDAR_20">
13381         <webidl> &quot;ICALENDAR_20</webidl>
13382       </EnumValue>
13383       <EnumValue stringvalue="VCALENDAR_10">
13384         <webidl> &quot;VCALENDAR_10</webidl>
13385       </EnumValue>
13386     </Enum>
13387     <Enum name="AlarmMethod" id="::Calendar::AlarmMethod">
13388       <webidl>  enum AlarmMethod { &quot;SOUND&quot;, &quot;DISPLAY&quot; };</webidl>
13389       <descriptive>
13390           <brief>
13391  An enumerator that indicates the type of an alarm.
13392           </brief>
13393          <description>
13394           <p>
13395 The following values are supported:
13396           </p>
13397           <ul>
13398             <li>
13399 SOUND - if sound is played to alert the user            </li>
13400             <li>
13401 DISPLAY - if display on screen without any sound is used to alert the user            </li>
13402           </ul>
13403          </description>
13404           <version>
13405  1.0
13406           </version>
13407       </descriptive>
13408       <EnumValue stringvalue="SOUND">
13409         <webidl> &quot;SOUND</webidl>
13410       </EnumValue>
13411       <EnumValue stringvalue="DISPLAY">
13412         <webidl> &quot;DISPLAY</webidl>
13413       </EnumValue>
13414     </Enum>
13415     <Enum name="RecurrenceRuleFrequency" id="::Calendar::RecurrenceRuleFrequency">
13416       <webidl>  enum RecurrenceRuleFrequency { &quot;DAILY&quot;, &quot;WEEKLY&quot;, &quot;MONTHLY&quot;, &quot;YEARLY&quot; };</webidl>
13417       <descriptive>
13418           <brief>
13419  An enumerator that indicates the type of frequency for the recurrence of an event.
13420           </brief>
13421          <description>
13422           <p>
13423 Only the following values are valid for this attribute:
13424           </p>
13425           <ul>
13426             <li>
13427 DAILY - if the event occurs daily            </li>
13428             <li>
13429 WEEKLY - if the event occurs weekly            </li>
13430             <li>
13431 MONTHLY -  if the event occurs monthly            </li>
13432             <li>
13433 YEARLY - if the event occurs yearly            </li>
13434           </ul>
13435          </description>
13436           <version>
13437  1.0
13438           </version>
13439       </descriptive>
13440       <EnumValue stringvalue="DAILY">
13441         <webidl> &quot;DAILY</webidl>
13442       </EnumValue>
13443       <EnumValue stringvalue="WEEKLY">
13444         <webidl> &quot;WEEKLY</webidl>
13445       </EnumValue>
13446       <EnumValue stringvalue="MONTHLY">
13447         <webidl> &quot;MONTHLY</webidl>
13448       </EnumValue>
13449       <EnumValue stringvalue="YEARLY">
13450         <webidl> &quot;YEARLY</webidl>
13451       </EnumValue>
13452     </Enum>
13453     <Enum name="ByDayValue" id="::Calendar::ByDayValue">
13454       <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>
13455       <descriptive>
13456           <brief>
13457  An enumerator that indicates the values for <em>CalendarRecurrenceRule.daysOfWeek</em>.
13458           </brief>
13459          <description>
13460           <p>
13461 &quot;MO&quot; to &quot;SU&quot; correspond to &quot;Monday&quot; to &quot;Sunday&quot;.
13462           </p>
13463          </description>
13464           <version>
13465  1.0
13466           </version>
13467       </descriptive>
13468       <EnumValue stringvalue="MO">
13469         <webidl> &quot;MO</webidl>
13470       </EnumValue>
13471       <EnumValue stringvalue="TU">
13472         <webidl> &quot;TU</webidl>
13473       </EnumValue>
13474       <EnumValue stringvalue="WE">
13475         <webidl> &quot;WE</webidl>
13476       </EnumValue>
13477       <EnumValue stringvalue="TH">
13478         <webidl> &quot;TH</webidl>
13479       </EnumValue>
13480       <EnumValue stringvalue="FR">
13481         <webidl> &quot;FR</webidl>
13482       </EnumValue>
13483       <EnumValue stringvalue="SA">
13484         <webidl> &quot;SA</webidl>
13485       </EnumValue>
13486       <EnumValue stringvalue="SU">
13487         <webidl> &quot;SU</webidl>
13488       </EnumValue>
13489     </Enum>
13490     <Enum name="EventAvailability" id="::Calendar::EventAvailability">
13491       <webidl>  enum EventAvailability { &quot;BUSY&quot;, &quot;FREE&quot; };</webidl>
13492       <descriptive>
13493           <brief>
13494  An enumerator that indicates the availability of time for an event.
13495           </brief>
13496          <description>
13497           <p>
13498 The following values are supported:
13499           </p>
13500           <ul>
13501             <li>
13502 FREE - if the specified time slot is vacant            </li>
13503             <li>
13504 BUSY - if the specified time slot is not vacant            </li>
13505             <li>
13506 BUSY-UNAVAILABLE - if the specified time slot is not vacant and can not be scheduled            </li>
13507             <li>
13508 BUSY-TENTATIVE - if the specified time slot is not vacant because one or more events have been tentatively scheduled for that interval            </li>
13509           </ul>
13510          </description>
13511           <version>
13512  1.0
13513           </version>
13514       </descriptive>
13515       <EnumValue stringvalue="BUSY">
13516         <webidl> &quot;BUSY</webidl>
13517       </EnumValue>
13518       <EnumValue stringvalue="FREE">
13519         <webidl> &quot;FREE</webidl>
13520       </EnumValue>
13521     </Enum>
13522     <Enum name="AttendeeType" id="::Calendar::AttendeeType">
13523       <webidl>  enum AttendeeType { &quot;INDIVIDUAL&quot;, &quot;GROUP&quot;, &quot;RESOURCE&quot;, &quot;ROOM&quot;, &quot;UNKNOWN&quot; };</webidl>
13524       <descriptive>
13525           <brief>
13526  An enumerator that indicates the type of attendee.
13527           </brief>
13528          <description>
13529           <p>
13530 At least the following values must be supported:
13531           </p>
13532           <ul>
13533             <li>
13534 INDIVIDUAL - Individual            </li>
13535             <li>
13536 GROUP - Group of individuals            </li>
13537             <li>
13538 RESOURCE - Physical resource            </li>
13539             <li>
13540 ROOM - Room resource            </li>
13541             <li>
13542 UNKNOWN - Unknown            </li>
13543           </ul>
13544          </description>
13545           <version>
13546  1.0
13547           </version>
13548       </descriptive>
13549       <EnumValue stringvalue="INDIVIDUAL">
13550         <webidl> &quot;INDIVIDUAL</webidl>
13551       </EnumValue>
13552       <EnumValue stringvalue="GROUP">
13553         <webidl> &quot;GROUP</webidl>
13554       </EnumValue>
13555       <EnumValue stringvalue="RESOURCE">
13556         <webidl> &quot;RESOURCE</webidl>
13557       </EnumValue>
13558       <EnumValue stringvalue="ROOM">
13559         <webidl> &quot;ROOM</webidl>
13560       </EnumValue>
13561       <EnumValue stringvalue="UNKNOWN">
13562         <webidl> &quot;UNKNOWN</webidl>
13563       </EnumValue>
13564     </Enum>
13565     <Enum name="AttendeeStatus" id="::Calendar::AttendeeStatus">
13566       <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>
13567       <descriptive>
13568           <brief>
13569  An enumerator that indicates the attendance status of a participant.
13570           </brief>
13571          <description>
13572           <p>
13573 At least the following values must be supported:
13574           </p>
13575           <ul>
13576             <li>
13577 PENDING - if the participant has not yet responded to the event            </li>
13578             <li>
13579 ACCEPTED - if the participant has accepted the event            </li>
13580             <li>
13581 DECLINED - if the participant has declined the event            </li>
13582             <li>
13583 TENTATIVE - if the participant has tentatively accepted the event            </li>
13584             <li>
13585 DELEGATED - if the participant has delegated attendance to another participant            </li>
13586             <li>
13587 COMPLETED - if the participant's event has been completed            </li>
13588             <li>
13589 IN_PROCESS - if the participant's event is currently in process            </li>
13590           </ul>
13591          </description>
13592           <version>
13593  1.0
13594           </version>
13595       </descriptive>
13596       <EnumValue stringvalue="PENDING">
13597         <webidl> &quot;PENDING</webidl>
13598       </EnumValue>
13599       <EnumValue stringvalue="ACCEPTED">
13600         <webidl> &quot;ACCEPTED</webidl>
13601       </EnumValue>
13602       <EnumValue stringvalue="DECLINED">
13603         <webidl> &quot;DECLINED</webidl>
13604       </EnumValue>
13605       <EnumValue stringvalue="TENTATIVE">
13606         <webidl> &quot;TENTATIVE</webidl>
13607       </EnumValue>
13608       <EnumValue stringvalue="DELEGATED">
13609         <webidl> &quot;DELEGATED</webidl>
13610       </EnumValue>
13611       <EnumValue stringvalue="COMPLETED">
13612         <webidl> &quot;COMPLETED</webidl>
13613       </EnumValue>
13614       <EnumValue stringvalue="IN_PROCESS">
13615         <webidl> &quot;IN_PROCESS</webidl>
13616       </EnumValue>
13617     </Enum>
13618     <Enum name="AttendeeRole" id="::Calendar::AttendeeRole">
13619       <webidl>  enum AttendeeRole { &quot;REQ_PARTICIPANT&quot;, &quot;OPT_PARTICIPANT&quot;, &quot;NON_PARTICIPANT&quot;, &quot;CHAIR&quot; };</webidl>
13620       <descriptive>
13621           <brief>
13622  An enumerator that indicates the role of an attendee.
13623           </brief>
13624          <description>
13625           <p>
13626 At least the following values must be supported:
13627           </p>
13628           <ul>
13629             <li>
13630 REQ_PARTICIPANT - if the participation of an attendee is mandatory            </li>
13631             <li>
13632 OPT_PARTICIPANT - if the participation of an attendee is optional            </li>
13633             <li>
13634 NON_PARTICIPANT - if the attendee is not a participant but is copied for information purposes            </li>
13635             <li>
13636 CHAIR - if the attendee is the chairperson of the event.            </li>
13637           </ul>
13638          </description>
13639           <version>
13640  1.0
13641           </version>
13642       </descriptive>
13643       <EnumValue stringvalue="REQ_PARTICIPANT">
13644         <webidl> &quot;REQ_PARTICIPANT</webidl>
13645       </EnumValue>
13646       <EnumValue stringvalue="OPT_PARTICIPANT">
13647         <webidl> &quot;OPT_PARTICIPANT</webidl>
13648       </EnumValue>
13649       <EnumValue stringvalue="NON_PARTICIPANT">
13650         <webidl> &quot;NON_PARTICIPANT</webidl>
13651       </EnumValue>
13652       <EnumValue stringvalue="CHAIR">
13653         <webidl> &quot;CHAIR</webidl>
13654       </EnumValue>
13655     </Enum>
13656     <Enum name="CalendarItemPriority" id="::Calendar::CalendarItemPriority">
13657       <webidl>  enum CalendarItemPriority { &quot;HIGH&quot;, &quot;MEDIUM&quot;, &quot;LOW&quot; };</webidl>
13658       <descriptive>
13659           <brief>
13660  An enumerator that indicates the priority of a calendar item.
13661           </brief>
13662          <description>
13663           <p>
13664 The following values are supported:
13665           </p>
13666           <ul>
13667             <li>
13668 HIGH - if item priority is high            </li>
13669             <li>
13670 MEDIUM - if item priority is medium            </li>
13671             <li>
13672 LOW - if item priority is low            </li>
13673           </ul>
13674          </description>
13675           <version>
13676  1.0
13677           </version>
13678       </descriptive>
13679       <EnumValue stringvalue="HIGH">
13680         <webidl> &quot;HIGH</webidl>
13681       </EnumValue>
13682       <EnumValue stringvalue="MEDIUM">
13683         <webidl> &quot;MEDIUM</webidl>
13684       </EnumValue>
13685       <EnumValue stringvalue="LOW">
13686         <webidl> &quot;LOW</webidl>
13687       </EnumValue>
13688     </Enum>
13689     <Enum name="CalendarItemVisibility" id="::Calendar::CalendarItemVisibility">
13690       <webidl>   enum CalendarItemVisibility { &quot;PUBLIC&quot;, &quot;PRIVATE&quot;, &quot;CONFIDENTIAL&quot; };</webidl>
13691       <descriptive>
13692           <brief>
13693  An enumerator that indicates the visibility type of a calendar item.
13694           </brief>
13695          <description>
13696           <p>
13697 The following values are supported:
13698           </p>
13699           <ul>
13700             <li>
13701 PUBLIC - if item visibility is public            </li>
13702             <li>
13703 PRIVATE - if item visibility is private            </li>
13704             <li>
13705 CONFIDENTIAL - if item visibility is confidential            </li>
13706           </ul>
13707          </description>
13708           <version>
13709  1.0
13710           </version>
13711       </descriptive>
13712       <EnumValue stringvalue="PUBLIC">
13713         <webidl> &quot;PUBLIC</webidl>
13714       </EnumValue>
13715       <EnumValue stringvalue="PRIVATE">
13716         <webidl> &quot;PRIVATE</webidl>
13717       </EnumValue>
13718       <EnumValue stringvalue="CONFIDENTIAL">
13719         <webidl> &quot;CONFIDENTIAL</webidl>
13720       </EnumValue>
13721     </Enum>
13722     <Enum name="CalendarItemStatus" id="::Calendar::CalendarItemStatus">
13723       <webidl>   enum CalendarItemStatus { &quot;TENTATIVE&quot;, &quot;CONFIRMED&quot;, &quot;CANCELLED&quot;, &quot;NEEDS_ACTION&quot;, &quot;IN_PROCESS&quot;, &quot;COMPLETED&quot; };</webidl>
13724       <descriptive>
13725           <brief>
13726  An enumerator that indicates the status of a calendar item.
13727           </brief>
13728          <description>
13729           <p>
13730 For an event, the possible values are:
13731           </p>
13732           <ul>
13733             <li>
13734 TENTATIVE - if the event is tentative            </li>
13735             <li>
13736 CONFIRMED - if the event is confirmed            </li>
13737             <li>
13738 CANCELLED -  if the event is cancelled            </li>
13739           </ul>
13740           <p>
13741 For a task, the possible values are:
13742           </p>
13743           <ul>
13744             <li>
13745 NEEDS_ACTION - if the task needs action            </li>
13746             <li>
13747 IN_PROCESS -  if the task is in process or being worked on            </li>
13748             <li>
13749 COMPLETED - if the task has been completed            </li>
13750             <li>
13751 CANCELLED -  if the task has been cancelled            </li>
13752           </ul>
13753          </description>
13754           <version>
13755  1.0
13756           </version>
13757       </descriptive>
13758       <EnumValue stringvalue="TENTATIVE">
13759         <webidl> &quot;TENTATIVE</webidl>
13760       </EnumValue>
13761       <EnumValue stringvalue="CONFIRMED">
13762         <webidl> &quot;CONFIRMED</webidl>
13763       </EnumValue>
13764       <EnumValue stringvalue="CANCELLED">
13765         <webidl> &quot;CANCELLED</webidl>
13766       </EnumValue>
13767       <EnumValue stringvalue="NEEDS_ACTION">
13768         <webidl> &quot;NEEDS_ACTION</webidl>
13769       </EnumValue>
13770       <EnumValue stringvalue="IN_PROCESS">
13771         <webidl> &quot;IN_PROCESS</webidl>
13772       </EnumValue>
13773       <EnumValue stringvalue="COMPLETED">
13774         <webidl> &quot;COMPLETED</webidl>
13775       </EnumValue>
13776     </Enum>
13777     <Interface name="CalendarManagerObject" id="::Calendar::CalendarManagerObject">
13778       <webidl>  [NoInterfaceObject] interface CalendarManagerObject{
13779     readonly attribute <ref>CalendarManager</ref> calendar; 
13780   };</webidl>
13781       <descriptive>
13782           <brief>
13783  This interface gives access to the Calendar API from the <em>tizen.calendar </em>object. 
13784           </brief>
13785           <version>
13786  1.0
13787           </version>
13788       </descriptive>
13789       <ExtendedAttributeList>
13790         <ExtendedAttribute name="NoInterfaceObject">
13791           <webidl>NoInterfaceObject</webidl>
13792         </ExtendedAttribute>
13793       </ExtendedAttributeList>
13794       <Attribute readonly="readonly" name="calendar" id="::Calendar::CalendarManagerObject::calendar">
13795         <webidl>    readonly attribute <ref>CalendarManager</ref> calendar;</webidl>
13796         <Type name="CalendarManager"/>
13797       </Attribute>
13798     </Interface>
13799     <Implements name1="Tizen" name2="CalendarManagerObject">
13800       <webidl>  <ref>Tizen</ref> implements <ref>CalendarManagerObject</ref>;</webidl>
13801     </Implements>
13802     <Interface name="CalendarManager" id="::Calendar::CalendarManager">
13803       <webidl>  [NoInterfaceObject] interface CalendarManager {
13804     void getCalendars(<ref>CalendarType</ref> type,
13805                       <ref>CalendarArraySuccessCallback</ref> successCallback,
13806                       optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
13807
13808     <ref>Calendar</ref> getUnifiedCalendar(<ref>CalendarType</ref> type) raises(<ref>WebAPIException</ref>);
13809
13810     <ref>Calendar</ref> getDefaultCalendar(<ref>CalendarType</ref> type) raises(<ref>WebAPIException</ref>);
13811     
13812     <ref>Calendar</ref> getCalendar(<ref>CalendarType</ref> type, <ref>CalendarId</ref> id) raises(<ref>WebAPIException</ref>);
13813   };</webidl>
13814       <descriptive>
13815           <brief>
13816  This interface provides methods to access calendars and attributes for calendars. 
13817 Once a calendar object is obtained, it is possible to add, remove, or update the information it contains through the Calendar interface methods.   
13818           </brief>
13819           <version>
13820  1.0
13821           </version>
13822       </descriptive>
13823       <ExtendedAttributeList>
13824         <ExtendedAttribute name="NoInterfaceObject">
13825           <webidl>NoInterfaceObject</webidl>
13826         </ExtendedAttribute>
13827       </ExtendedAttributeList>
13828       <Operation name="getCalendars" id="::Calendar::CalendarManager::getCalendars">
13829         <webidl>    void getCalendars(<ref>CalendarType</ref> type,
13830                       <ref>CalendarArraySuccessCallback</ref> successCallback,
13831                       optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
13832         <descriptive>
13833             <brief>
13834  Gets an array of Calendar objects.
13835             </brief>
13836            <description>
13837             <p>
13838 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.
13839             </p>
13840             <p>
13841 If no Calendar object is available, the <em>successCallback()</em> is invoked with an empty array.
13842             </p>
13843             <p>
13844 The errorCallback is launched with these error types:
13845             </p>
13846             <ul>
13847               <li>
13848 InvalidValuesError - if any of the input parameters contain an invalid value.              </li>
13849               <li>
13850 UnknownError - if any other error occurs.              </li>
13851             </ul>
13852            </description>
13853             <version>
13854  1.0
13855             </version>
13856             <privilegelevel>
13857  public
13858             </privilegelevel>
13859             <privilege>
13860  http://tizen.org/privilege/calendar.read
13861             </privilege>
13862             <Code>  var calendar;
13863
13864   function eventFoundCallback(events) {
13865     // The event has been successfully found
13866     // Changes the summary
13867     events[0].summary = 'HTML6 Webinar'; 
13868     calendar.update(events[0]);
13869     console.log('First event was updated!');
13870   }
13871
13872   // Defines the error callback for all the asynchronous calls
13873   function errorCallback(response) {
13874     console.log( 'The following error occurred: ' +  response.name);
13875   }
13876
13877   // Defines the success callback for retrieving the list of calendars
13878   function calendarListCallback(calendars) {
13879     if(calendars.length > 0) {
13880       calendar = calendars[0];
13881       console.log('The calendar id is ' + calendar.id + ' and name ' + calendar.name);
13882
13883       var ev = new tizen.CalendarEvent({description:'HTML5 Introduction',
13884                                          summary:'HTML5 Webinar', 
13885                                          startDate: new tizen.TZDate(2011, 3, 30, 10, 0), 
13886                                          duration: new tizen.TimeDuration(1, &quot;HOURS&quot;),
13887                                          location:'Huesca'});
13888       calendar.add(ev);
13889
13890       // The event has been successfully added
13891       // Checks if the added event can be retrieved from the calendar
13892       // If the calendar was empty, only the item added through add() should be returned
13893       var filter = new tizen.AttributeFilter('summary', 'CONTAINS', 'HTML5');
13894       calendar.find(eventFoundCallback, errorCallback, filter);
13895     }
13896   }
13897
13898   // Gets a list of available calendars
13899   tizen.calendar.getCalendars(&quot;EVENT&quot;, calendarListCallback, errorCallback);
13900  </Code>
13901         </descriptive>
13902         <Type type="void"/>
13903         <ArgumentList>
13904           <Argument name="type">
13905             <descriptive>
13906                 <description><p>
13907  The type of calendar.
13908                 </p></description>
13909             </descriptive>
13910             <Type name="CalendarType"/>
13911           </Argument>
13912           <Argument name="successCallback">
13913             <descriptive>
13914                 <description><p>
13915  The method to invoke when the invocation ends successfully.
13916                 </p></description>
13917             </descriptive>
13918             <Type name="CalendarArraySuccessCallback"/>
13919           </Argument>
13920           <Argument optional="optional" name="errorCallback">
13921             <descriptive>
13922                 <description><p>
13923  The method to invoke when an error occurs. 
13924                 </p></description>
13925             </descriptive>
13926             <Type name="ErrorCallback" nullable="nullable"/>
13927           </Argument>
13928         </ArgumentList>
13929         <Raises>
13930           <RaiseException name="WebAPIException">
13931             <descriptive>
13932                 <description><p>
13933  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
13934                 </p></description>
13935                 <description><p>
13936  with error type SecurityError, if the application does not have the privilege to call this method.
13937                 </p></description>
13938                 <description><p>
13939  with error type NotSupportedError, if this feature is not supported.
13940                 </p></description>
13941             </descriptive>
13942           </RaiseException>
13943         </Raises>
13944       </Operation>
13945       <Operation name="getUnifiedCalendar" id="::Calendar::CalendarManager::getUnifiedCalendar">
13946         <webidl>    <ref>Calendar</ref> getUnifiedCalendar(<ref>CalendarType</ref> type) raises(<ref>WebAPIException</ref>);</webidl>
13947         <descriptive>
13948             <brief>
13949  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>.
13950             </brief>
13951            <description>
13952             <p>
13953 If an item is added to the unified calendar, it will be saved in the default calendar.
13954             </p>
13955            </description>
13956             <version>
13957  2.1
13958             </version>
13959             <privilegelevel>
13960  public
13961             </privilegelevel>
13962             <privilege>
13963  http://tizen.org/privilege/calendar.read
13964             </privilege>
13965             <Code>  var unifiedCalendar;
13966
13967   // Defines the error callback for all the asynchronous calls
13968   function errorCallback(response) {
13969     console.log( 'The following error occurred: ' +  response.name);
13970   }
13971
13972   function eventFoundCallback(events) {
13973     // The event has been successfully found
13974     // Changes the summary
13975     events[0].summary = 'HTML6 Webinar'; 
13976     unifiedCalendar.update(events[0]);
13977     console.log('First event was updated!');
13978   }
13979
13980   // Gets the unified calendar
13981   unifiedCalendar = tizen.calendar.getUnifiedCalendar(&quot;EVENT&quot;);
13982
13983   var ev = new tizen.CalendarEvent({description:'HTML5 Introduction', 
13984                                     summary:'HTML5 Webinar ', 
13985                                     startDate: new tizen.TZDate(2011, 3, 30, 10, 0), 
13986                                     duration: new tizen.TimeDuration(1, &quot;HOURS&quot;),
13987                                     location:'Huesca'});
13988
13989   unifiedCalendar.add(ev);
13990    
13991   // The event has been added
13992   // Checks if the added event can be retrieved from the calendar
13993   // If the calendar was empty, only the item added through add() should be returned
13994   var filter = new tizen.AttributeFilter('summary', 'CONTAINS', 'HTML5');
13995   unifiedCalendar.find(eventFoundCallback, errorCallback, filter);
13996      
13997 </Code>
13998         </descriptive>
13999         <Type name="Calendar">
14000           <descriptive>
14001               <description><p>
14002  Calendar The unified Calendar object.
14003               </p></description>
14004           </descriptive>
14005         </Type>
14006         <ArgumentList>
14007           <Argument name="type">
14008             <descriptive>
14009                 <description><p>
14010  The type of a calendar.
14011                 </p></description>
14012             </descriptive>
14013             <Type name="CalendarType"/>
14014           </Argument>
14015         </ArgumentList>
14016         <Raises>
14017           <RaiseException name="WebAPIException">
14018             <descriptive>
14019                 <description><p>
14020  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
14021                 </p></description>
14022                 <description><p>
14023  with error type InvalidValuesError, if any of the input parameters contain an invalid value.
14024                 </p></description>
14025                 <description><p>
14026  with error type SecurityError, if the application does not have the privilege to call this method.
14027                 </p></description>
14028                 <description><p>
14029  with error type NotSupportedError, if this feature is not supported.
14030                 </p></description>
14031                 <description><p>
14032  with error type UnknownError, if any other error occurs.
14033                 </p></description>
14034             </descriptive>
14035           </RaiseException>
14036         </Raises>
14037       </Operation>
14038       <Operation name="getDefaultCalendar" id="::Calendar::CalendarManager::getDefaultCalendar">
14039         <webidl>    <ref>Calendar</ref> getDefaultCalendar(<ref>CalendarType</ref> type) raises(<ref>WebAPIException</ref>);</webidl>
14040         <descriptive>
14041             <brief>
14042  Gets the default calendar, which is used for new items.
14043             </brief>
14044             <version>
14045  1.0
14046             </version>
14047             <privilegelevel>
14048  public
14049             </privilegelevel>
14050             <privilege>
14051  http://tizen.org/privilege/calendar.read
14052             </privilege>
14053             <Code>  var myCalendar;
14054
14055   // Defines the error callback for all the asynchronous calls
14056   function errorCallback(response) {
14057     console.log( 'The following error occurred: ' +  response.name);
14058   }
14059
14060   function eventFoundCallback(events) {
14061     // The event has been successfully found
14062     // Changes the summary
14063     events[0].summary = 'HTML6 Webinar'; 
14064     myCalendar.update(events[0]);
14065     console.log('First event was updated!');
14066   }
14067
14068   // Gets the default calendar
14069   myCalendar = tizen.calendar.getDefaultCalendar(&quot;EVENT&quot;);
14070
14071   var ev = new tizen.CalendarEvent({description:'HTML5 Introduction', 
14072                                     summary:'HTML5 Webinar ', 
14073                                     startDate: new tizen.TZDate(2011, 3, 30, 10, 0), 
14074                                     duration: new tizen.TimeDuration(1, &quot;HOURS&quot;),
14075                                     location:'Huesca'});
14076                   
14077   myCalendar.add(ev);
14078    
14079   // The event has been added
14080   // Checks if the added event can be retrieved from the calendar
14081   // If the calendar was empty, only the item added through add() should be returned
14082   var filter = new tizen.AttributeFilter('summary', 'CONTAINS', 'HTML5');
14083   myCalendar.find(eventFoundCallback, errorCallback, filter);
14084      
14085 </Code>
14086         </descriptive>
14087         <Type name="Calendar">
14088           <descriptive>
14089               <description><p>
14090  Calendar The default Calendar object.
14091               </p></description>
14092           </descriptive>
14093         </Type>
14094         <ArgumentList>
14095           <Argument name="type">
14096             <descriptive>
14097                 <description><p>
14098  The type of a calendar.
14099                 </p></description>
14100             </descriptive>
14101             <Type name="CalendarType"/>
14102           </Argument>
14103         </ArgumentList>
14104         <Raises>
14105           <RaiseException name="WebAPIException">
14106             <descriptive>
14107                 <description><p>
14108  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
14109                 </p></description>
14110                 <description><p>
14111  with error type InvalidValuesError, if any of the input parameters contain an invalid value.
14112                 </p></description>
14113                 <description><p>
14114  with error type SecurityError, if the application does not have the privilege to call this method.
14115                 </p></description>
14116                 <description><p>
14117  with error type NotSupportedError, if this feature is not supported.
14118                 </p></description>
14119                 <description><p>
14120  with error type UnknownError, if any other error occurs.
14121                 </p></description>
14122             </descriptive>
14123           </RaiseException>
14124         </Raises>
14125       </Operation>
14126       <Operation name="getCalendar" id="::Calendar::CalendarManager::getCalendar">
14127         <webidl>    <ref>Calendar</ref> getCalendar(<ref>CalendarType</ref> type, <ref>CalendarId</ref> id) raises(<ref>WebAPIException</ref>);</webidl>
14128         <descriptive>
14129             <brief>
14130  Gets the calendar with the specified identifier and type.
14131             </brief>
14132             <version>
14133  1.0
14134             </version>
14135             <privilegelevel>
14136  public
14137             </privilegelevel>
14138             <privilege>
14139  http://tizen.org/privilege/calendar.read
14140             </privilege>
14141             <Code>  var calendarId; // calendarId supposed to be initialized
14142   try {
14143     var calendar = tizen.calendar.getCalendar(&quot;EVENT&quot;, calendarId);
14144     console.log(&quot;Successfully retrieved event calendar with id: &quot; + calendarId);
14145   } catch(err) {
14146     console.log(&quot;Error: &quot; + err.name);
14147   }
14148  </Code>
14149         </descriptive>
14150         <Type name="Calendar">
14151           <descriptive>
14152               <description><p>
14153  Calendar The matching Calendar object.
14154               </p></description>
14155           </descriptive>
14156         </Type>
14157         <ArgumentList>
14158           <Argument name="type">
14159             <descriptive>
14160                 <description><p>
14161  The type of a calendar.
14162                 </p></description>
14163             </descriptive>
14164             <Type name="CalendarType"/>
14165           </Argument>
14166           <Argument name="id">
14167             <descriptive>
14168                 <description><p>
14169  The calendar identifier.
14170                 </p></description>
14171             </descriptive>
14172             <Type name="CalendarId"/>
14173           </Argument>
14174         </ArgumentList>
14175         <Raises>
14176           <RaiseException name="WebAPIException">
14177             <descriptive>
14178                 <description><p>
14179  with error type NotFoundError, if there is no calendar with the given identifier.  
14180                 </p></description>
14181                 <description><p>
14182  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
14183                 </p></description>
14184                 <description><p>
14185  with error type InvalidValuesError, if any of the input parameters contain an invalid value.
14186                 </p></description>
14187                 <description><p>
14188  with error type SecurityError, if the application does not have the privilege to call this method.
14189                 </p></description>
14190                 <description><p>
14191  with error type NotSupportedError, if this feature is not supported.
14192                 </p></description>
14193                 <description><p>
14194  with error type UnknownError, if any other error occurs.
14195                 </p></description>
14196             </descriptive>
14197           </RaiseException>
14198         </Raises>
14199       </Operation>
14200     </Interface>
14201     <Interface name="Calendar" id="::Calendar::Calendar">
14202       <webidl>  [NoInterfaceObject] interface Calendar {
14203     
14204     readonly attribute <ref>CalendarId</ref> id;
14205
14206     readonly attribute DOMString name;
14207                               
14208     <ref>CalendarItem</ref> get(<ref>CalendarItemId</ref> id) raises(<ref>WebAPIException</ref>);
14209
14210     void add(<ref>CalendarItem</ref> item) raises(<ref>WebAPIException</ref>);
14211
14212     void addBatch(<ref>CalendarItem</ref>[] items,
14213                   optional <ref>CalendarItemArraySuccessCallback</ref>? successCallback,
14214                   optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
14215
14216     void update(<ref>CalendarItem</ref> item,
14217                 optional boolean? updateAllInstances) raises(<ref>WebAPIException</ref>);
14218
14219      void updateBatch(<ref>CalendarItem</ref>[] items,
14220                      optional <ref>SuccessCallback</ref>? successCallback,
14221                      optional <ref>ErrorCallback</ref>? errorCallback,
14222                      optional boolean? updateAllInstances) raises(<ref>WebAPIException</ref>);
14223
14224     void remove(<ref>CalendarItemId</ref> id) raises(<ref>WebAPIException</ref>);
14225
14226     void removeBatch(<ref>CalendarItemId</ref>[] ids,
14227                      optional <ref>SuccessCallback</ref>? successCallback,
14228                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
14229  
14230     void find(<ref>CalendarItemArraySuccessCallback</ref> successCallback,
14231               optional <ref>ErrorCallback</ref>? errorCallback,
14232               optional <ref>AbstractFilter</ref>? filter,
14233               optional <ref>SortMode</ref>? sortMode) raises(<ref>WebAPIException</ref>);
14234                                 
14235     long addChangeListener(<ref>CalendarChangeCallback</ref> successCallback) raises(<ref>WebAPIException</ref>);
14236                       
14237     void removeChangeListener(long watchId) raises(<ref>WebAPIException</ref>);
14238   };</webidl>
14239       <descriptive>
14240           <brief>
14241  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.
14242           </brief>
14243          <description>
14244           <p>
14245 This interface offers the following methods to manage events in a calendar:
14246           </p>
14247           <ul>
14248             <li>
14249  Finding items using a key-value filter.            </li>
14250             <li>
14251  Adding items to a specific calendar using <em>add() </em>/ <em>addBatch() </em>methods.            </li>
14252             <li>
14253  Updating existing items using <em>update() </em>/ <em>updateBatch()</em> methods.            </li>
14254             <li>
14255  Deleting existing items using <em>remove()</em> / <em>removeBatch() </em>methods.            </li>
14256             <li>
14257  Tracking calendar changes using <em>addChangeListener()</em> / <em>removeChangeListener() </em>methods.            </li>
14258           </ul>
14259          </description>
14260           <version>
14261  1.0
14262           </version>
14263       </descriptive>
14264       <ExtendedAttributeList>
14265         <ExtendedAttribute name="NoInterfaceObject">
14266           <webidl>NoInterfaceObject</webidl>
14267         </ExtendedAttribute>
14268       </ExtendedAttributeList>
14269       <Attribute readonly="readonly" name="id" id="::Calendar::Calendar::id">
14270         <webidl>    readonly attribute <ref>CalendarId</ref> id;</webidl>
14271         <descriptive>
14272             <brief>
14273  An attribute to uniquely identify a calendar.
14274             </brief>
14275             <version>
14276  1.0
14277             </version>
14278         </descriptive>
14279         <Type name="CalendarId"/>
14280       </Attribute>
14281       <Attribute readonly="readonly" name="name" id="::Calendar::Calendar::name">
14282         <webidl>    readonly attribute DOMString name;</webidl>
14283         <descriptive>
14284             <brief>
14285  An attribute to assign a readable (descriptive) name for a calendar, such as work, personal, etc.
14286             </brief>
14287             <version>
14288  1.0
14289             </version>
14290             <Code>  // Gets the default calendar and show its name
14291   var calendar = tizen.calendar.getDefaultCalendar(&quot;EVENT&quot;);
14292   console.log('The calendar name is ' + calendar.name);
14293  </Code>
14294         </descriptive>
14295         <Type type="DOMString"/>
14296       </Attribute>
14297       <Operation name="get" id="::Calendar::Calendar::get">
14298         <webidl>    <ref>CalendarItem</ref> get(<ref>CalendarItemId</ref> id) raises(<ref>WebAPIException</ref>);</webidl>
14299         <descriptive>
14300             <brief>
14301  Gets the calendar item with the specified identifier.
14302             </brief>
14303             <version>
14304  1.0
14305             </version>
14306             <privilegelevel>
14307  public
14308             </privilegelevel>
14309             <privilege>
14310  http://tizen.org/privilege/calendar.read
14311             </privilege>
14312             <Code>  var myCalendar; // Calendar supposed to be initialized
14313   var itemId; // Calendar item identifier
14314   try {
14315     var item = myCalendar.get(itemId);
14316     console.log(&quot;Successfully retrieved item with id: &quot; + itemId);
14317   } catch(err) {
14318     console.log(&quot;Error: &quot; + err.name);
14319   }
14320  </Code>
14321         </descriptive>
14322         <Type name="CalendarItem">
14323           <descriptive>
14324               <description><p>
14325  CalendarItem The matching <em>CalendarItem </em>object.
14326               </p></description>
14327           </descriptive>
14328         </Type>
14329         <ArgumentList>
14330           <Argument name="id">
14331             <descriptive>
14332                 <description><p>
14333  The Calendar item identifier.
14334                 </p></description>
14335             </descriptive>
14336             <Type name="CalendarItemId"/>
14337           </Argument>
14338         </ArgumentList>
14339         <Raises>
14340           <RaiseException name="WebAPIException">
14341             <descriptive>
14342                 <description><p>
14343  with error type NotFoundError, if there is no calendar item with the given identifier.
14344                 </p></description>
14345                 <description><p>
14346  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
14347                 </p></description>
14348                 <description><p>
14349  with error type InvalidValuesError, if any of the input parameters contain an invalid value.
14350                 </p></description>
14351                 <description><p>
14352  with error type SecurityError, if the application does not have the privilege to call this method.
14353                 </p></description>
14354                 <description><p>
14355  with error type NotSupportedError, if this feature is not supported.
14356                 </p></description>
14357                 <description><p>
14358  with error type UnknownError, if any other error occurs.
14359                 </p></description>
14360             </descriptive>
14361           </RaiseException>
14362         </Raises>
14363       </Operation>
14364       <Operation name="add" id="::Calendar::Calendar::add">
14365         <webidl>    void add(<ref>CalendarItem</ref> item) raises(<ref>WebAPIException</ref>);</webidl>
14366         <descriptive>
14367             <brief>
14368  Adds an item to the calendar synchronously.
14369             </brief>
14370            <description>
14371             <p>
14372 If the item is successfully inserted in the calendar, the <em>CalendarItem </em>will have its identifier (id attribute) set when the method returns.
14373             </p>
14374             <p>
14375 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.
14376             </p>
14377            </description>
14378             <version>
14379  1.0
14380             </version>
14381             <privilegelevel>
14382  public
14383             </privilegelevel>
14384             <privilege>
14385  http://tizen.org/privilege/calendar.write
14386             </privilege>
14387             <Code>  // Gets the default calendar
14388   var calendar = tizen.calendar.getDefaultCalendar(&quot;EVENT&quot;);
14389   
14390   var ev = new tizen.CalendarEvent({description:'HTML5 Introduction', 
14391                                    summary:'HTML5 Webinar ', 
14392                                    startDate: new tizen.TZDate(2011, 3, 30, 10, 0), 
14393                                    duration: new tizen.TimeDuration(1, &quot;HOURS&quot;),
14394                                    location:'Huesca'});
14395                  
14396   calendar.add(ev);
14397   console.log('Event added with uid ' + ev.id.uid);
14398  </Code>
14399         </descriptive>
14400         <Type type="void"/>
14401         <ArgumentList>
14402           <Argument name="item">
14403             <descriptive>
14404                 <description><p>
14405  The calendar item to be added.
14406                 </p></description>
14407             </descriptive>
14408             <Type name="CalendarItem"/>
14409           </Argument>
14410         </ArgumentList>
14411         <Raises>
14412           <RaiseException name="WebAPIException">
14413             <descriptive>
14414                 <description><p>
14415  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
14416                 </p></description>
14417                 <description><p>
14418  with error type InvalidValuesError, if any of the input parameters contain an invalid value.
14419                 </p></description>
14420                 <description><p>
14421  with error type SecurityError, if the application does not have the privilege to call this method.
14422                 </p></description>
14423                 <description><p>
14424  with error type NotSupportedError, if the feature is not supported.
14425                 </p></description>
14426                 <description><p>
14427  with error type UnknownError, if any other error occurs.
14428                 </p></description>
14429             </descriptive>
14430           </RaiseException>
14431         </Raises>
14432       </Operation>
14433       <Operation name="addBatch" id="::Calendar::Calendar::addBatch">
14434         <webidl>    void addBatch(<ref>CalendarItem</ref>[] items,
14435                   optional <ref>CalendarItemArraySuccessCallback</ref>? successCallback,
14436                   optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
14437         <descriptive>
14438             <brief>
14439  Adds an array of items to the calendar asynchronously.
14440             </brief>
14441            <description>
14442             <p>
14443 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).
14444             </p>
14445             <p>
14446 The <em>errorCallback()</em> is launched with these error types:
14447             </p>
14448             <ul>
14449               <li>
14450 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>
14451               <li>
14452 UnknownError - if any other error occurs.               </li>
14453             </ul>
14454             <p>
14455 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.
14456             </p>
14457            </description>
14458             <version>
14459  1.0
14460             </version>
14461             <privilegelevel>
14462  public
14463             </privilegelevel>
14464             <privilege>
14465  http://tizen.org/privilege/calendar.write
14466             </privilege>
14467             <Code>  // Defines the error callback.
14468   function errorCallback(response) {
14469     console.log( 'The following error occurred: ' +  response.name);
14470   }
14471
14472   function addEventsSuccess(events) {
14473     console.log(&quot;Successfully added &quot; + events.length + &quot; events!&quot;);
14474   }
14475
14476   // Gets the default calendar
14477   var calendar = tizen.calendar.getDefaultCalendar(&quot;EVENT&quot;);
14478   
14479   var ev = new tizen.CalendarEvent({description:'HTML5 Introduction', 
14480                                    summary:'HTML5 Webinar ', 
14481                                    startDate: new tizen.TZDate(2011, 3, 30, 10, 0), 
14482                                    duration: new tizen.TimeDuration(1, &quot;HOURS&quot;),
14483                                    location:'Huesca'});
14484                  
14485   calendar.addBatch([ev], addEventsSuccess, errorCallback);
14486  </Code>
14487         </descriptive>
14488         <Type type="void"/>
14489         <ArgumentList>
14490           <Argument name="items">
14491             <descriptive>
14492                 <description><p>
14493  The list of calendar items to add.
14494                 </p></description>
14495             </descriptive>
14496             <Type type="array">
14497               <Type name="CalendarItem"/>
14498             </Type>
14499           </Argument>
14500           <Argument optional="optional" name="successCallback">
14501             <descriptive>
14502                 <description><p>
14503  The method to call when the invocation ends successfully.
14504                 </p></description>
14505             </descriptive>
14506             <Type name="CalendarItemArraySuccessCallback" nullable="nullable"/>
14507           </Argument>
14508           <Argument optional="optional" name="errorCallback">
14509             <descriptive>
14510                 <description><p>
14511  The method to invoke when the request fails.
14512                 </p></description>
14513             </descriptive>
14514             <Type name="ErrorCallback" nullable="nullable"/>
14515           </Argument>
14516         </ArgumentList>
14517         <Raises>
14518           <RaiseException name="WebAPIException">
14519             <descriptive>
14520                 <description><p>
14521  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
14522                 </p></description>
14523                 <description><p>
14524  with error type SecurityError, if the application does not have the privilege to call this method.
14525                 </p></description>
14526                 <description><p>
14527  with error type NotSupportedError, if the feature is not supported.
14528                 </p></description>
14529             </descriptive>
14530           </RaiseException>
14531         </Raises>
14532       </Operation>
14533       <Operation name="update" id="::Calendar::Calendar::update">
14534         <webidl>    void update(<ref>CalendarItem</ref> item,
14535                 optional boolean? updateAllInstances) raises(<ref>WebAPIException</ref>);</webidl>
14536         <descriptive>
14537             <brief>
14538  Updates an existing item in the calendar synchronously with the one specified in the argument.
14539             </brief>
14540            <description>
14541             <p>
14542 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>.
14543             </p>
14544            </description>
14545             <version>
14546  1.0
14547             </version>
14548             <privilegelevel>
14549  public
14550             </privilegelevel>
14551             <privilege>
14552  http://tizen.org/privilege/calendar.write
14553             </privilege>
14554             <Code>  var myCalendar;
14555
14556   // Defines the error callback.
14557   function errorCallback(response) {
14558     console.log( 'The following error occurred: ' +  response.name);
14559   }
14560
14561   // Defines the event success callback.
14562   function eventSearchSuccessCallback(events) {
14563     events[0].description = 'New Description';
14564     // Updates the first existing event.
14565     myCalendar.update(events[0]);
14566     console.log(&quot;The first item description was updated!&quot;);
14567   }
14568   
14569   // Gets the default calendar
14570   myCalendar = tizen.calendar.getDefaultCalendar(&quot;EVENT&quot;);
14571
14572   // Finds all events in a Calendar
14573   myCalendar.find(eventSearchSuccessCallback, errorCallback);
14574  </Code>
14575         </descriptive>
14576         <Type type="void"/>
14577         <ArgumentList>
14578           <Argument name="item">
14579             <descriptive>
14580                 <description><p>
14581  The Item object to update.
14582                 </p></description>
14583             </descriptive>
14584             <Type name="CalendarItem"/>
14585           </Argument>
14586           <Argument optional="optional" name="updateAllInstances">
14587             <descriptive>
14588                 <description><p>
14589  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.
14590                 </p></description>
14591             </descriptive>
14592             <Type type="boolean" nullable="nullable"/>
14593           </Argument>
14594         </ArgumentList>
14595         <Raises>
14596           <RaiseException name="WebAPIException">
14597             <descriptive>
14598                 <description><p>
14599  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
14600                 </p></description>
14601                 <description><p>
14602  with error type InvalidValuesError, if any of the input parameters contain an invalid value.
14603                 </p></description>
14604                 <description><p>
14605  with error type SecurityError, if the application does not have the privilege to call this method.
14606                 </p></description>
14607                 <description><p>
14608  with error type NotSupportedError, if the feature is not supported.
14609                 </p></description>
14610                 <description><p>
14611  with error type UnknownError, if any other error occurs.
14612                 </p></description>
14613             </descriptive>
14614           </RaiseException>
14615         </Raises>
14616       </Operation>
14617       <Operation name="updateBatch" id="::Calendar::Calendar::updateBatch">
14618         <webidl>     void updateBatch(<ref>CalendarItem</ref>[] items,
14619                      optional <ref>SuccessCallback</ref>? successCallback,
14620                      optional <ref>ErrorCallback</ref>? errorCallback,
14621                      optional boolean? updateAllInstances) raises(<ref>WebAPIException</ref>);</webidl>
14622         <descriptive>
14623             <brief>
14624  Updates an array of existing items in the calendar asynchronously with the specified values in the argument.
14625             </brief>
14626            <description>
14627             <p>
14628 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.
14629             </p>
14630             <p>
14631 The <em>errorCallback() </em>is launched with these error types:
14632             </p>
14633             <ul>
14634               <li>
14635 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>
14636               <li>
14637 UnknownError - if any other error occurs.              </li>
14638             </ul>
14639            </description>
14640             <version>
14641  1.0
14642             </version>
14643             <privilegelevel>
14644  public
14645             </privilegelevel>
14646             <privilege>
14647  http://tizen.org/privilege/calendar.write
14648             </privilege>
14649             <Code>  var myCalendar;
14650
14651   // Defines the error callback.
14652   function errorCallback(response) {
14653     console.log( 'The following error occurred: ' +  response.name);
14654   }
14655
14656   // Defines the success callback
14657   function updateEventsSuccess() {
14658     console.log(&quot;Successfully updated !&quot; );
14659   }
14660
14661   // Defines the event success callback.
14662   function eventSearchSuccessCallback(events) {
14663     events[0].description = 'New Description 1';
14664     events[1].description = 'New Description 2';
14665     // Update the first two existing events.
14666     myCalendar.updateBatch(events.slice(0,2), updateEventsSuccess, errorCallback);
14667   }
14668
14669   // Gets the default calendar
14670   myCalendar = tizen.calendar.getDefaultCalendar(&quot;EVENT&quot;);
14671
14672   // Finds all events in Calendar
14673   myCalendar.find(eventSearchSuccessCallback, errorCallback);
14674  </Code>
14675         </descriptive>
14676         <Type type="void"/>
14677         <ArgumentList>
14678           <Argument name="items">
14679             <descriptive>
14680                 <description><p>
14681  The list of calendar item objects to update.
14682                 </p></description>
14683             </descriptive>
14684             <Type type="array">
14685               <Type name="CalendarItem"/>
14686             </Type>
14687           </Argument>
14688           <Argument optional="optional" name="successCallback">
14689             <descriptive>
14690                 <description><p>
14691  The method to invoke when the <em>updateEvents() </em>request succeeds.
14692                 </p></description>
14693             </descriptive>
14694             <Type name="SuccessCallback" nullable="nullable"/>
14695           </Argument>
14696           <Argument optional="optional" name="errorCallback">
14697             <descriptive>
14698                 <description><p>
14699  The method to invoke when the <em>updateEvents() </em>request fails.
14700                 </p></description>
14701             </descriptive>
14702             <Type name="ErrorCallback" nullable="nullable"/>
14703           </Argument>
14704           <Argument optional="optional" name="updateAllInstances">
14705             <descriptive>
14706                 <description><p>
14707  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.
14708                 </p></description>
14709             </descriptive>
14710             <Type type="boolean" nullable="nullable"/>
14711           </Argument>
14712         </ArgumentList>
14713         <Raises>
14714           <RaiseException name="WebAPIException">
14715             <descriptive>
14716                 <description><p>
14717  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
14718                 </p></description>
14719                 <description><p>
14720  with error type SecurityError, if the application does not have the privilege to call this method.
14721                 </p></description>
14722                 <description><p>
14723  with error type NotSupportedError, if the feature is not supported.
14724                 </p></description>
14725             </descriptive>
14726           </RaiseException>
14727         </Raises>
14728       </Operation>
14729       <Operation name="remove" id="::Calendar::Calendar::remove">
14730         <webidl>    void remove(<ref>CalendarItemId</ref> id) raises(<ref>WebAPIException</ref>);</webidl>
14731         <descriptive>
14732             <brief>
14733  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.
14734             </brief>
14735             <version>
14736  1.0
14737             </version>
14738             <privilegelevel>
14739  public
14740             </privilegelevel>
14741             <privilege>
14742  http://tizen.org/privilege/calendar.write
14743             </privilege>
14744             <remark>
14745  <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.
14746             </remark>
14747             <Code>  var myCalendar;
14748
14749   // Defines the error callback.
14750   function errorCallback(response) {
14751     console.log( 'The following error occurred: ' +  response.name);
14752   }
14753
14754   // Defines the event success callback.
14755   function eventSearchSuccessCallback(events) {
14756     // Deletes the first existing event.
14757     myCalendar.remove(events[0].id);
14758     console.log('The first event was removed');
14759   }
14760
14761   // Gets default calendar
14762   myCalendar = tizen.calendar.getDefaultCalendar(&quot;EVENT&quot;);
14763   
14764   // Finds all events in Calendar
14765   myCalendar.find(eventSearchSuccessCallback, errorCallback);
14766  </Code>
14767         </descriptive>
14768         <Type type="void"/>
14769         <ArgumentList>
14770           <Argument name="id">
14771             <descriptive>
14772                 <description><p>
14773  The identifier (ID attribute) of the item object to delete.
14774                 </p></description>
14775             </descriptive>
14776             <Type name="CalendarItemId"/>
14777           </Argument>
14778         </ArgumentList>
14779         <Raises>
14780           <RaiseException name="WebAPIException">
14781             <descriptive>
14782                 <description><p>
14783  with error type NotFoundError, if the identifier does not match any item in the calendar.
14784                 </p></description>
14785                 <description><p>
14786  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
14787                 </p></description>
14788                 <description><p>
14789  with error type InvalidValuesError, if any of the input parameters contain an invalid value.
14790                 </p></description>
14791                 <description><p>
14792  with error type SecurityError, if the application does not have the privilege to call this method.
14793                 </p></description>
14794                 <description><p>
14795  with error type NotSupportedError, if the feature is not supported.
14796                 </p></description>
14797                 <description><p>
14798  with error type UnknownError, if the item could not be removed because of an unknown error.
14799                 </p></description>
14800             </descriptive>
14801           </RaiseException>
14802         </Raises>
14803       </Operation>
14804       <Operation name="removeBatch" id="::Calendar::Calendar::removeBatch">
14805         <webidl>    void removeBatch(<ref>CalendarItemId</ref>[] ids,
14806                      optional <ref>SuccessCallback</ref>? successCallback,
14807                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
14808         <descriptive>
14809             <brief>
14810  Removes several items from the calendar asynchronously depending on the specified identifiers.
14811             </brief>
14812            <description>
14813             <p>
14814 The errorCallback is launched with these error types:
14815             </p>
14816             <ul>
14817               <li>
14818 NotFoundError - if an identifier in the <em>ids </em>parameter does not correspond to the ID attribute of an item in the calendar.              </li>
14819               <li>
14820 InvalidValuesError - if any of the input parameters contain an invalid value.              </li>
14821               <li>
14822 UnknownError - if any other error occurs.              </li>
14823             </ul>
14824            </description>
14825             <version>
14826  1.0
14827             </version>
14828             <privilegelevel>
14829  public
14830             </privilegelevel>
14831             <privilege>
14832  http://tizen.org/privilege/calendar.write
14833             </privilege>
14834             <remark>
14835  <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.
14836             </remark>
14837             <Code>  var myCalendar;
14838
14839   // Defines the error callback.
14840   function errorCallback(response) {
14841     console.log( 'The following error occurred: ' +  response.name);
14842   }
14843
14844   // Defines the removeBatch callback
14845   function removeBatchCallback() {
14846     console.log(&quot;Requested events were successfully removed.&quot;);
14847   }
14848
14849   // Defines the event search success callback.
14850   function eventSearchSuccessCallback(events) {
14851     // Deletes the first two existing events.
14852     myCalendar.removeBatch([events[0].id, events[1].id], 
14853                            removeBatchCallback, 
14854                            errorCallback);
14855   }
14856
14857   // Gets default calendar
14858   myCalendar = tizen.calendar.getDefaultCalendar(&quot;EVENT&quot;);
14859     
14860   // Retrieves all events in Calendar
14861   myCalendar.find(eventSearchSuccessCallback, errorCallback);
14862  </Code>
14863         </descriptive>
14864         <Type type="void"/>
14865         <ArgumentList>
14866           <Argument name="ids">
14867             <descriptive>
14868                 <description><p>
14869  The identifiers (<em>id </em>attribute) of the items to delete.
14870                 </p></description>
14871             </descriptive>
14872             <Type type="array">
14873               <Type name="CalendarItemId"/>
14874             </Type>
14875           </Argument>
14876           <Argument optional="optional" name="successCallback">
14877             <descriptive>
14878                 <description><p>
14879  The method to invoke when the <em>removeBatch()</em> request succeeds.
14880                 </p></description>
14881             </descriptive>
14882             <Type name="SuccessCallback" nullable="nullable"/>
14883           </Argument>
14884           <Argument optional="optional" name="errorCallback">
14885             <descriptive>
14886                 <description><p>
14887  The method to invoke when the <em>removeBatch()</em> request fails.
14888                 </p></description>
14889             </descriptive>
14890             <Type name="ErrorCallback" nullable="nullable"/>
14891           </Argument>
14892         </ArgumentList>
14893         <Raises>
14894           <RaiseException name="WebAPIException">
14895             <descriptive>
14896                 <description><p>
14897  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
14898                 </p></description>
14899                 <description><p>
14900  with error type SecurityError, if the application does not have the privilege to call this method.
14901                 </p></description>
14902                 <description><p>
14903  with error type NotSupportedError, if the feature is not supported.
14904                 </p></description>
14905             </descriptive>
14906           </RaiseException>
14907         </Raises>
14908       </Operation>
14909       <Operation name="find" id="::Calendar::Calendar::find">
14910         <webidl>    void find(<ref>CalendarItemArraySuccessCallback</ref> successCallback,
14911               optional <ref>ErrorCallback</ref>? errorCallback,
14912               optional <ref>AbstractFilter</ref>? filter,
14913               optional <ref>SortMode</ref>? sortMode) raises(<ref>WebAPIException</ref>);</webidl>
14914         <descriptive>
14915             <brief>
14916  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.
14917             </brief>
14918            <description>
14919             <p>
14920 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>.
14921 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>.
14922 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.
14923             </p>
14924             <p>
14925 The errorCallback is launched with these error types:
14926             </p>
14927             <ul>
14928               <li>
14929 InvalidValuesError - if any of the input parameters contain an invalid value.              </li>
14930               <li>
14931 UnknownError - if any other error occurs.              </li>
14932             </ul>
14933             <p>
14934 <b>Filter specific remarks:</b>            </p>
14935             <ul>
14936               <li>
14937 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>
14938               <li>
14939 For event filtering based on the identifier, the identifier type should be CalendarEventID (<em>uid</em> and <em>rid</em>).
14940 If no recurrence ID is given, the filter will match both the parent event and all its detached instances.              </li>
14941             </ul>
14942            </description>
14943             <version>
14944  1.0
14945             </version>
14946             <privilegelevel>
14947  public
14948             </privilegelevel>
14949             <privilege>
14950  http://tizen.org/privilege/calendar.read
14951             </privilege>
14952             <Code>  // Defines the error callback.
14953   function errorCallback(response) {
14954     console.log( 'The following error occurred: ' +  response.name);
14955   }
14956
14957   // Defines the event search success callback.
14958   function eventSearchSuccessCallback(events) {
14959     console.log(events.length + ' results found.');
14960   }
14961
14962   // Gets default calendar
14963   var calendar = tizen.calendar.getDefaultCalendar(&quot;EVENT&quot;);
14964   
14965   // Finds all events the calendar that contain in the summary the string Tizen.
14966   var filter = new tizen.AttributeFilter('summary', 'CONTAINS', 'Tizen');
14967
14968   // The events returned by the find() query will be sorted by ascending summary
14969   var sortingMode = new tizen.SortMode('summary', 'ASC');
14970                         
14971   calendar.find(eventSearchSuccessCallback, errorCallback, filter, sortingMode);
14972  </Code>
14973         </descriptive>
14974         <Type type="void"/>
14975         <ArgumentList>
14976           <Argument name="successCallback">
14977             <descriptive>
14978                 <description><p>
14979  The method to call when the invocation ends successfully.
14980                 </p></description>
14981             </descriptive>
14982             <Type name="CalendarItemArraySuccessCallback"/>
14983           </Argument>
14984           <Argument optional="optional" name="errorCallback">
14985             <descriptive>
14986                 <description><p>
14987  The method to call when an error occurs.
14988                 </p></description>
14989             </descriptive>
14990             <Type name="ErrorCallback" nullable="nullable"/>
14991           </Argument>
14992           <Argument optional="optional" name="filter">
14993             <descriptive>
14994                 <description><p>
14995  The supplied data used to filter the results of the <em>find() </em>method.
14996                 </p></description>
14997             </descriptive>
14998             <Type name="AbstractFilter" nullable="nullable"/>
14999           </Argument>
15000           <Argument optional="optional" name="sortMode">
15001             <descriptive>
15002                 <description><p>
15003  The sort order in which the items return.
15004                 </p></description>
15005             </descriptive>
15006             <Type name="SortMode" nullable="nullable"/>
15007           </Argument>
15008         </ArgumentList>
15009         <Raises>
15010           <RaiseException name="WebAPIException">
15011             <descriptive>
15012                 <description><p>
15013  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
15014                 </p></description>
15015                 <description><p>
15016  with error type SecurityError, if the application does not have the privilege to call this method.
15017                 </p></description>
15018                 <description><p>
15019  with error type NotSupportedError, if the feature is not supported.
15020                 </p></description>
15021             </descriptive>
15022           </RaiseException>
15023         </Raises>
15024       </Operation>
15025       <Operation name="addChangeListener" id="::Calendar::Calendar::addChangeListener">
15026         <webidl>    long addChangeListener(<ref>CalendarChangeCallback</ref> successCallback) raises(<ref>WebAPIException</ref>);</webidl>
15027         <descriptive>
15028             <brief>
15029  Adds a listener to receive notifications about calendar changes.
15030             </brief>
15031            <description>
15032             <p>
15033 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.
15034             </p>
15035            </description>
15036             <version>
15037  1.0
15038             </version>
15039             <privilegelevel>
15040  public
15041             </privilegelevel>
15042             <privilege>
15043  http://tizen.org/privilege/calendar.read
15044             </privilege>
15045             <Code>  var watcherId = 0; // watcher identifier
15046   var calendar; // This example assumes calendar is initialized
15047
15048   var watcher = {
15049     onitemsadded: function(items) {
15050       console.log(items.length + ' items were added');
15051     },
15052     onitemsupdated: function(items) {
15053       console.log(items.length + ' items were updated');
15054     },
15055     onitemsremoved: function(ids) {
15056       console.log(ids.length + ' items were removed');
15057     }
15058   };
15059
15060   // Registers to be notified when the calendar changes
15061   watcherId = calendar.addChangeListener(watcher);
15062  </Code>
15063         </descriptive>
15064         <Type type="long">
15065           <descriptive>
15066               <description><p>
15067  long The identifier used to clear the watch subscription.
15068               </p></description>
15069           </descriptive>
15070         </Type>
15071         <ArgumentList>
15072           <Argument name="successCallback">
15073             <descriptive>
15074                 <description><p>
15075  The methods to invoke on receiving calendar change notifications.
15076                 </p></description>
15077             </descriptive>
15078             <Type name="CalendarChangeCallback"/>
15079           </Argument>
15080         </ArgumentList>
15081         <Raises>
15082           <RaiseException name="WebAPIException">
15083             <descriptive>
15084                 <description><p>
15085  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
15086                 </p></description>
15087                 <description><p>
15088  with error type InvalidValuesError, if any of the input parameters contain an invalid value.
15089                 </p></description>
15090                 <description><p>
15091  with error type SecurityError, if the application does not have the privilege to call this method.
15092                 </p></description>
15093                 <description><p>
15094  with error type NotSupportedError, if the feature is not supported.
15095                 </p></description>
15096                 <description><p>
15097  with error type UnknownError, if any other error occurs.
15098                 </p></description>
15099             </descriptive>
15100           </RaiseException>
15101         </Raises>
15102       </Operation>
15103       <Operation name="removeChangeListener" id="::Calendar::Calendar::removeChangeListener">
15104         <webidl>    void removeChangeListener(long watchId) raises(<ref>WebAPIException</ref>);</webidl>
15105         <descriptive>
15106             <brief>
15107  Unsubscribes from receiving notification for a calendar item changes.
15108             </brief>
15109            <description>
15110             <p>
15111 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.
15112             </p>
15113            </description>
15114             <version>
15115  1.0
15116             </version>
15117             <privilegelevel>
15118  public
15119             </privilegelevel>
15120             <privilege>
15121  http://tizen.org/privilege/calendar.read
15122             </privilege>
15123             <Code>  var watcherId = 0; // watcher identifier
15124   var calendar; // This example assumes calendar is initialized
15125
15126   // Receives calendar changes
15127   var watcher = {
15128     onitemsadded: function(items) {
15129       console.log(items.length + ' items were added');
15130     },
15131     onitemsupdated: function(items) {
15132       console.log(evitemsents.length + ' items were updated');
15133     },
15134     onitemsremoved: function(ids) {
15135       console.log(ids.length + ' items were removed');
15136     }
15137   };
15138
15139   // Registers to be notified when the calendar changes
15140   watcherId = calendar.addChangeListener(watcher);
15141
15142   // Cancels the watch operation
15143   calendar.removeChangeListener(watcherId);
15144  </Code>
15145         </descriptive>
15146         <Type type="void"/>
15147         <ArgumentList>
15148           <Argument name="watchId">
15149             <descriptive>
15150                 <description><p>
15151  Subscription Identifier.
15152                 </p></description>
15153             </descriptive>
15154             <Type type="long"/>
15155           </Argument>
15156         </ArgumentList>
15157         <Raises>
15158           <RaiseException name="WebAPIException">
15159             <descriptive>
15160                 <description><p>
15161  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
15162                 </p></description>
15163                 <description><p>
15164  with error type InvalidValuesError, if any of the input parameters contain an invalid value.
15165                 </p></description>
15166                 <description><p>
15167  with error type SecurityError, if the application does not have the privilege to call this method.
15168                 </p></description>
15169                 <description><p>
15170  with error type NotSupportedError, if the feature is not supported.
15171                 </p></description>
15172                 <description><p>
15173  with error type UnknownError if any other error occurs.
15174                 </p></description>
15175             </descriptive>
15176           </RaiseException>
15177         </Raises>
15178       </Operation>
15179     </Interface>
15180     <Dictionary name="CalendarItemInit" id="::Calendar::CalendarItemInit">
15181       <webidl>  dictionary CalendarItemInit {
15182     DOMString description;
15183     DOMString summary;
15184     boolean isAllDay;
15185     <ref>TZDate</ref> startDate;
15186     <ref>TimeDuration</ref> duration;
15187     DOMString location;
15188     <ref>SimpleCoordinates</ref> geolocation;
15189     DOMString organizer;
15190     <ref>CalendarItemVisibility</ref> visibility;
15191     <ref>CalendarItemStatus</ref> status;
15192     <ref>CalendarItemPriority</ref> priority;
15193     <ref>CalendarAlarm</ref>[] alarms;
15194     DOMString[] categories;
15195     <ref>CalendarAttendee</ref>[] attendees;
15196   };</webidl>
15197       <descriptive>
15198           <brief>
15199  A dictionary that is used for creating calendar items.
15200           </brief>
15201          <description>
15202           <p>
15203 These attributes are shared by both calendar events and tasks.
15204           </p>
15205          </description>
15206           <version>
15207  1.0
15208           </version>
15209       </descriptive>
15210       <DictionaryMember name="description" id="::Calendar::CalendarItemInit::description">
15211         <webidl>    DOMString description;</webidl>
15212         <Type type="DOMString"/>
15213       </DictionaryMember>
15214       <DictionaryMember name="summary" id="::Calendar::CalendarItemInit::summary">
15215         <webidl>    DOMString summary;</webidl>
15216         <Type type="DOMString"/>
15217       </DictionaryMember>
15218       <DictionaryMember name="isAllDay" id="::Calendar::CalendarItemInit::isAllDay">
15219         <webidl>    boolean isAllDay;</webidl>
15220         <Type type="boolean"/>
15221       </DictionaryMember>
15222       <DictionaryMember name="startDate" id="::Calendar::CalendarItemInit::startDate">
15223         <webidl>    <ref>TZDate</ref> startDate;</webidl>
15224         <Type name="TZDate"/>
15225       </DictionaryMember>
15226       <DictionaryMember name="duration" id="::Calendar::CalendarItemInit::duration">
15227         <webidl>    <ref>TimeDuration</ref> duration;</webidl>
15228         <Type name="TimeDuration"/>
15229       </DictionaryMember>
15230       <DictionaryMember name="location" id="::Calendar::CalendarItemInit::location">
15231         <webidl>    DOMString location;</webidl>
15232         <Type type="DOMString"/>
15233       </DictionaryMember>
15234       <DictionaryMember name="geolocation" id="::Calendar::CalendarItemInit::geolocation">
15235         <webidl>    <ref>SimpleCoordinates</ref> geolocation;</webidl>
15236         <Type name="SimpleCoordinates"/>
15237       </DictionaryMember>
15238       <DictionaryMember name="organizer" id="::Calendar::CalendarItemInit::organizer">
15239         <webidl>    DOMString organizer;</webidl>
15240         <Type type="DOMString"/>
15241       </DictionaryMember>
15242       <DictionaryMember name="visibility" id="::Calendar::CalendarItemInit::visibility">
15243         <webidl>    <ref>CalendarItemVisibility</ref> visibility;</webidl>
15244         <Type name="CalendarItemVisibility"/>
15245       </DictionaryMember>
15246       <DictionaryMember name="status" id="::Calendar::CalendarItemInit::status">
15247         <webidl>    <ref>CalendarItemStatus</ref> status;</webidl>
15248         <Type name="CalendarItemStatus"/>
15249       </DictionaryMember>
15250       <DictionaryMember name="priority" id="::Calendar::CalendarItemInit::priority">
15251         <webidl>    <ref>CalendarItemPriority</ref> priority;</webidl>
15252         <Type name="CalendarItemPriority"/>
15253       </DictionaryMember>
15254       <DictionaryMember name="alarms" id="::Calendar::CalendarItemInit::alarms">
15255         <webidl>    <ref>CalendarAlarm</ref>[] alarms;</webidl>
15256         <Type type="array">
15257           <Type name="CalendarAlarm"/>
15258         </Type>
15259       </DictionaryMember>
15260       <DictionaryMember name="categories" id="::Calendar::CalendarItemInit::categories">
15261         <webidl>    DOMString[] categories;</webidl>
15262         <Type type="array">
15263           <Type type="DOMString"/>
15264         </Type>
15265       </DictionaryMember>
15266       <DictionaryMember name="attendees" id="::Calendar::CalendarItemInit::attendees">
15267         <webidl>    <ref>CalendarAttendee</ref>[] attendees;</webidl>
15268         <Type type="array">
15269           <Type name="CalendarAttendee"/>
15270         </Type>
15271       </DictionaryMember>
15272     </Dictionary>
15273     <Dictionary name="CalendarTaskInit" id="::Calendar::CalendarTaskInit">
15274       <webidl>  dictionary CalendarTaskInit: <ref>CalendarItemInit</ref> {
15275     <ref>TZDate</ref> dueDate;
15276     <ref>TZDate</ref> completedDate;
15277     short progress;
15278   };</webidl>
15279       <descriptive>
15280           <brief>
15281  A dictionary that is used for creating calendar tasks.
15282           </brief>
15283          <description>
15284           <p>
15285 It also provides an interface for specifying task attributes upon task creation (in the <em>CalendarTask </em>constructor).
15286           </p>
15287           <p>
15288 All the attributes are optional and are undefined by default.
15289           </p>
15290          </description>
15291           <version>
15292  1.0
15293           </version>
15294       </descriptive>
15295       <DictionaryInheritance>
15296         <Name name="CalendarItemInit"/>
15297       </DictionaryInheritance>
15298       <DictionaryMember name="dueDate" id="::Calendar::CalendarTaskInit::dueDate">
15299         <webidl>    <ref>TZDate</ref> dueDate;</webidl>
15300         <Type name="TZDate"/>
15301       </DictionaryMember>
15302       <DictionaryMember name="completedDate" id="::Calendar::CalendarTaskInit::completedDate">
15303         <webidl>    <ref>TZDate</ref> completedDate;</webidl>
15304         <Type name="TZDate"/>
15305       </DictionaryMember>
15306       <DictionaryMember name="progress" id="::Calendar::CalendarTaskInit::progress">
15307         <webidl>    short progress;</webidl>
15308         <Type type="short"/>
15309       </DictionaryMember>
15310     </Dictionary>
15311     <Dictionary name="CalendarEventInit" id="::Calendar::CalendarEventInit">
15312       <webidl>  dictionary CalendarEventInit: <ref>CalendarItemInit</ref> {
15313     <ref>TZDate</ref> endDate;
15314     <ref>EventAvailability</ref> availability;
15315     <ref>CalendarRecurrenceRule</ref> recurrenceRule;
15316   };</webidl>
15317       <descriptive>
15318           <brief>
15319  A dictionary that is used for creating calendar events.
15320           </brief>
15321          <description>
15322           <p>
15323 Provides an interface for specifying event attributes upon event creation (in the <em>CalendarEvent </em>constructor).
15324           </p>
15325           <p>
15326 All the attributes are optional and are undefined by default.
15327           </p>
15328          </description>
15329           <version>
15330  1.0
15331           </version>
15332       </descriptive>
15333       <DictionaryInheritance>
15334         <Name name="CalendarItemInit"/>
15335       </DictionaryInheritance>
15336       <DictionaryMember name="endDate" id="::Calendar::CalendarEventInit::endDate">
15337         <webidl>    <ref>TZDate</ref> endDate;</webidl>
15338         <Type name="TZDate"/>
15339       </DictionaryMember>
15340       <DictionaryMember name="availability" id="::Calendar::CalendarEventInit::availability">
15341         <webidl>    <ref>EventAvailability</ref> availability;</webidl>
15342         <Type name="EventAvailability"/>
15343       </DictionaryMember>
15344       <DictionaryMember name="recurrenceRule" id="::Calendar::CalendarEventInit::recurrenceRule">
15345         <webidl>    <ref>CalendarRecurrenceRule</ref> recurrenceRule;</webidl>
15346         <Type name="CalendarRecurrenceRule"/>
15347       </DictionaryMember>
15348     </Dictionary>
15349     <Interface name="CalendarItem" id="::Calendar::CalendarItem">
15350       <webidl>  [NoInterfaceObject] interface CalendarItem {
15351     readonly attribute <ref>CalendarItemId</ref>? id;
15352
15353     readonly attribute <ref>CalendarId</ref>? calendarId;
15354
15355     readonly attribute <ref>TZDate</ref>? lastModificationDate;
15356     
15357     attribute DOMString? description setraises(<ref>WebAPIException</ref>);
15358     
15359     attribute DOMString? summary setraises(<ref>WebAPIException</ref>);
15360     
15361     attribute boolean isAllDay setraises(<ref>WebAPIException</ref>);
15362     
15363     attribute <ref>TZDate</ref>? startDate setraises(<ref>WebAPIException</ref>);
15364     
15365     attribute <ref>TimeDuration</ref>? duration setraises(<ref>WebAPIException</ref>);
15366     
15367     attribute DOMString? location setraises(<ref>WebAPIException</ref>);
15368     
15369     attribute <ref>SimpleCoordinates</ref>? geolocation setraises(<ref>WebAPIException</ref>);
15370     
15371     attribute DOMString? organizer setraises(<ref>WebAPIException</ref>);
15372     
15373     attribute <ref>CalendarItemVisibility</ref> visibility setraises(<ref>WebAPIException</ref>);
15374     
15375     attribute <ref>CalendarItemStatus</ref> status setraises(<ref>WebAPIException</ref>);
15376     
15377     attribute <ref>CalendarItemPriority</ref> priority setraises(<ref>WebAPIException</ref>);
15378     
15379     attribute <ref>CalendarAlarm</ref>[] alarms setraises(<ref>WebAPIException</ref>);
15380     
15381     attribute DOMString[] categories setraises(<ref>WebAPIException</ref>);
15382     
15383     attribute <ref>CalendarAttendee</ref>[] attendees setraises(<ref>WebAPIException</ref>);
15384     
15385     DOMString convertToString(<ref>CalendarTextFormat</ref> format) raises(<ref>WebAPIException</ref>);
15386
15387     <ref>CalendarItem</ref> clone() raises(<ref>WebAPIException</ref>);
15388   };</webidl>
15389       <descriptive>
15390           <brief>
15391  This is a parent interface that is used to create Calendar events and tasks.
15392 These attributes are shared by both events and tasks.
15393           </brief>
15394           <version>
15395  1.0
15396           </version>
15397       </descriptive>
15398       <ExtendedAttributeList>
15399         <ExtendedAttribute name="NoInterfaceObject">
15400           <webidl>NoInterfaceObject</webidl>
15401         </ExtendedAttribute>
15402       </ExtendedAttributeList>
15403       <Attribute readonly="readonly" name="id" id="::Calendar::CalendarItem::id">
15404         <webidl>    readonly attribute <ref>CalendarItemId</ref>? id;</webidl>
15405         <descriptive>
15406             <brief>
15407  An attribute to persistently and uniquely identify an item in implementation.
15408             </brief>
15409            <description>
15410             <p>
15411 Includes a UID and a possible recurrence ID that is needed to identify a particular instance of a recurring event.
15412             </p>
15413             <p>
15414 By default, this attribute is set to null.
15415             </p>
15416            </description>
15417             <version>
15418  1.0
15419             </version>
15420         </descriptive>
15421         <Type name="CalendarItemId" nullable="nullable"/>
15422       </Attribute>
15423       <Attribute readonly="readonly" name="calendarId" id="::Calendar::CalendarItem::calendarId">
15424         <webidl>    readonly attribute <ref>CalendarId</ref>? calendarId;</webidl>
15425         <descriptive>
15426             <brief>
15427  An attribute to identify the calendar in which this item is saved.
15428             </brief>
15429            <description>
15430             <p>
15431 By default, this attribute is set to null.
15432             </p>
15433            </description>
15434             <version>
15435  2.1
15436             </version>
15437         </descriptive>
15438         <Type name="CalendarId" nullable="nullable"/>
15439       </Attribute>
15440       <Attribute readonly="readonly" name="lastModificationDate" id="::Calendar::CalendarItem::lastModificationDate">
15441         <webidl>    readonly attribute <ref>TZDate</ref>? lastModificationDate;</webidl>
15442         <descriptive>
15443             <brief>
15444  An attribute to identify the last modified date and time of an item.
15445             </brief>
15446            <description>
15447             <p>
15448 This attribute is automatically populated and cannot be edited by the client.
15449 (See RFC 5545 - Section 3.8.7.3).
15450             </p>
15451            </description>
15452             <version>
15453  1.0
15454             </version>
15455         </descriptive>
15456         <Type name="TZDate" nullable="nullable"/>
15457       </Attribute>
15458       <Attribute name="description" id="::Calendar::CalendarItem::description">
15459         <webidl>    attribute DOMString? description setraises(<ref>WebAPIException</ref>);</webidl>
15460         <descriptive>
15461             <brief>
15462  An attribute to store the textual descriptions of an item.
15463             </brief>
15464            <description>
15465             <p>
15466 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.
15467 (See RFC 5545 - Section 3.8.1.5).
15468             </p>
15469             <p>
15470 The default value is an empty string. 
15471             </p>
15472            </description>
15473             <version>
15474  1.0
15475             </version>
15476             <Code>  event.description = 'Tizen Codefest';
15477  </Code>
15478         </descriptive>
15479         <Type type="DOMString" nullable="nullable"/>
15480         <SetRaises>
15481           <RaiseException name="WebAPIException"/>
15482         </SetRaises>
15483       </Attribute>
15484       <Attribute name="summary" id="::Calendar::CalendarItem::summary">
15485         <webidl>    attribute DOMString? summary setraises(<ref>WebAPIException</ref>);</webidl>
15486         <descriptive>
15487             <brief>
15488  An attribute to store a short summary or subject for an item.
15489 (See RFC 5545 - Section 3.8.1.12)
15490             </brief>
15491            <description>
15492             <p>
15493 The default value is an empty string. 
15494             </p>
15495            </description>
15496             <version>
15497  1.0
15498             </version>
15499             <Code>  event.summary = 'Launching the Tizen reference implementation';
15500  </Code>
15501         </descriptive>
15502         <Type type="DOMString" nullable="nullable"/>
15503         <SetRaises>
15504           <RaiseException name="WebAPIException"/>
15505         </SetRaises>
15506       </Attribute>
15507       <Attribute name="isAllDay" id="::Calendar::CalendarItem::isAllDay">
15508         <webidl>    attribute boolean isAllDay setraises(<ref>WebAPIException</ref>);</webidl>
15509         <descriptive>
15510             <brief>
15511  An attribute that behaves like a flag to indicate whether an event is an all-day event or not.
15512             </brief>
15513            <description>
15514             <p>
15515 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.
15516             </p>
15517             <p>
15518 The default value for this attribute is <var>false</var>.
15519             </p>
15520            </description>
15521             <version>
15522  1.0
15523             </version>
15524             <Code>  event.isAllDay = true; // All-Day event
15525  </Code>
15526         </descriptive>
15527         <Type type="boolean"/>
15528         <SetRaises>
15529           <RaiseException name="WebAPIException"/>
15530         </SetRaises>
15531       </Attribute>
15532       <Attribute name="startDate" id="::Calendar::CalendarItem::startDate">
15533         <webidl>    attribute <ref>TZDate</ref>? startDate setraises(<ref>WebAPIException</ref>);</webidl>
15534         <descriptive>
15535             <brief>
15536  An attribute to store the start date/time for an item.
15537 (see RFC 5545 - Section 3.8.2.4).
15538             </brief>
15539            <description>
15540             <p>
15541 The default value for this attribute is <var>null</var>.
15542             </p>
15543             <p>
15544 <em>startDate</em> must be specified in the same time zone as <em>endDate / dueDate</em> if provided.
15545             </p>
15546            </description>
15547             <version>
15548  1.0
15549             </version>
15550            <description>
15551             <p>
15552 This attribute is precise to the second. Milliseconds are ignored.
15553             </p>
15554            </description>
15555             <Code>  // 2010-04-30 09:00
15556   event.startDate = new tizen.TZDate(2010, 3, 30, 9, 0);
15557  </Code>
15558         </descriptive>
15559         <Type name="TZDate" nullable="nullable"/>
15560         <SetRaises>
15561           <RaiseException name="WebAPIException"/>
15562         </SetRaises>
15563       </Attribute>
15564       <Attribute name="duration" id="::Calendar::CalendarItem::duration">
15565         <webidl>    attribute <ref>TimeDuration</ref>? duration setraises(<ref>WebAPIException</ref>);</webidl>
15566         <descriptive>
15567             <brief>
15568  An attribute to denote the duration of the calendar component.
15569 (See RFC 5545 - Section 3.8.2.5).
15570             </brief>
15571            <description>
15572             <p>
15573 By default, this attribute is set to <var>null</var>.
15574             </p>
15575             <p>
15576 <em>duration</em> and <em>endDate / dueDate</em> are mutually exclusive, hence, only one of them can be non-null.
15577             </p>
15578             <p>
15579 This attribute is precise to the second. Milliseconds are ignored.
15580             </p>
15581            </description>
15582             <remark>
15583  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.
15584             </remark>
15585             <version>
15586  1.0
15587             </version>
15588             <Code>  // 1 hour meeting
15589   event.duration = new tizen.TimeDuration(1, &quot;HOURS&quot;);
15590  </Code>
15591         </descriptive>
15592         <Type name="TimeDuration" nullable="nullable"/>
15593         <SetRaises>
15594           <RaiseException name="WebAPIException"/>
15595         </SetRaises>
15596       </Attribute>
15597       <Attribute name="location" id="::Calendar::CalendarItem::location">
15598         <webidl>    attribute DOMString? location setraises(<ref>WebAPIException</ref>);</webidl>
15599         <descriptive>
15600             <brief>
15601  An attribute to store the location or the intended venue for the activity defined by the calendar item.
15602 (See RFC 5545 - Section 3.8.1.7)
15603             </brief>
15604            <description>
15605             <p>
15606 The default value for this attribute is an empty string. 
15607             </p>
15608            </description>
15609             <version>
15610  1.0
15611             </version>
15612             <Code>  event.location = 'Huesca';
15613  </Code>
15614         </descriptive>
15615         <Type type="DOMString" nullable="nullable"/>
15616         <SetRaises>
15617           <RaiseException name="WebAPIException"/>
15618         </SetRaises>
15619       </Attribute>
15620       <Attribute name="geolocation" id="::Calendar::CalendarItem::geolocation">
15621         <webidl>    attribute <ref>SimpleCoordinates</ref>? geolocation setraises(<ref>WebAPIException</ref>);</webidl>
15622         <descriptive>
15623             <brief>
15624  An attribute to store the global position latitude and longitude of the location where the event is planned to take place.
15625 (See RFC 5545 - Section 3.8.1.6).
15626             </brief>
15627             <version>
15628  1.0
15629             </version>
15630             <Code>  event.geolocation = new tizen.SimpleCoordinates(60.175, 24.934);
15631  </Code>
15632         </descriptive>
15633         <Type name="SimpleCoordinates" nullable="nullable"/>
15634         <SetRaises>
15635           <RaiseException name="WebAPIException"/>
15636         </SetRaises>
15637       </Attribute>
15638       <Attribute name="organizer" id="::Calendar::CalendarItem::organizer">
15639         <webidl>    attribute DOMString? organizer setraises(<ref>WebAPIException</ref>);</webidl>
15640         <descriptive>
15641             <brief>
15642  An attribute to store the name of the person who organized this event.
15643 (See RFC 5545 - Section 3.8.4.3).
15644             </brief>
15645            <description>
15646             <p>
15647 By default, this attribute is initialized to an empty string.
15648             </p>
15649            </description>
15650             <version>
15651  1.0
15652             </version>
15653             <Code>  event.organizer = 'Mr. Jones';
15654  </Code>
15655         </descriptive>
15656         <Type type="DOMString" nullable="nullable"/>
15657         <SetRaises>
15658           <RaiseException name="WebAPIException"/>
15659         </SetRaises>
15660       </Attribute>
15661       <Attribute name="visibility" id="::Calendar::CalendarItem::visibility">
15662         <webidl>    attribute <ref>CalendarItemVisibility</ref> visibility setraises(<ref>WebAPIException</ref>);</webidl>
15663         <descriptive>
15664             <brief>
15665  An attribute to mark the visibility (secrecy) level of the item.
15666 (See RFC 5545 - Section 3.8.1.3).
15667             </brief>
15668            <description>
15669             <p>
15670 The default value is <var>PUBLIC</var>.
15671             </p>
15672            </description>
15673             <version>
15674  1.0
15675             </version>
15676         </descriptive>
15677         <Type name="CalendarItemVisibility"/>
15678         <SetRaises>
15679           <RaiseException name="WebAPIException"/>
15680         </SetRaises>
15681       </Attribute>
15682       <Attribute name="status" id="::Calendar::CalendarItem::status">
15683         <webidl>    attribute <ref>CalendarItemStatus</ref> status setraises(<ref>WebAPIException</ref>);</webidl>
15684         <descriptive>
15685             <brief>
15686  An attribute to store the overall confirmation status for a calendar component.
15687 (See RFC 5545 - Section 3.8.1.11).
15688             </brief>
15689            <description>
15690             <p>
15691 For an event, the default value is <var>CONFIRMED</var>. For a task, the default value is <var>NEEDS_ACTION</var>.
15692             </p>
15693            </description>
15694             <version>
15695  1.0
15696             </version>
15697             <Code>  event.status = &quot;TENTATIVE&quot;;
15698  </Code>
15699         </descriptive>
15700         <Type name="CalendarItemStatus"/>
15701         <SetRaises>
15702           <RaiseException name="WebAPIException"/>
15703         </SetRaises>
15704       </Attribute>
15705       <Attribute name="priority" id="::Calendar::CalendarItem::priority">
15706         <webidl>    attribute <ref>CalendarItemPriority</ref> priority setraises(<ref>WebAPIException</ref>);</webidl>
15707         <descriptive>
15708             <brief>
15709  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.
15710 (See RFC 5545 - Section 3.8.1.9).
15711             </brief>
15712            <description>
15713             <p>
15714 The default value for this attribute is <var>LOW </var>priority.
15715             </p>
15716             <p>
15717 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:
15718             </p>
15719             <ul>
15720               <li>
15721 1-4 to HIGH,              </li>
15722               <li>
15723 5 to MEDIUM,              </li>
15724               <li>
15725 6-9 to LOW.              </li>
15726             </ul>
15727            </description>
15728             <version>
15729  1.0
15730             </version>
15731             <Code>  task.priority = &quot;HIGH&quot;;
15732  </Code>
15733         </descriptive>
15734         <Type name="CalendarItemPriority"/>
15735         <SetRaises>
15736           <RaiseException name="WebAPIException"/>
15737         </SetRaises>
15738       </Attribute>
15739       <Attribute name="alarms" id="::Calendar::CalendarItem::alarms">
15740         <webidl>    attribute <ref>CalendarAlarm</ref>[] alarms setraises(<ref>WebAPIException</ref>);</webidl>
15741         <descriptive>
15742             <brief>
15743  An attribute array to lists the alarms (or reminders) associated to an item.
15744             </brief>
15745             <version>
15746  1.0
15747             </version>
15748             <Code>  ev.startDate = new tizen.TZDate(2011, 2, 11, 8, 0, 0);
15749   // Gives a sound notification 30 minutes before the item's start time
15750   var alarm = new tizen.CalendarAlarm(new tizen.TimeDuration(30, &quot;MINS&quot;),
15751                                        &quot;SOUND&quot;);
15752   ev.alarms = [alarm];
15753  </Code>
15754         </descriptive>
15755         <Type type="array">
15756           <Type name="CalendarAlarm"/>
15757         </Type>
15758         <SetRaises>
15759           <RaiseException name="WebAPIException"/>
15760         </SetRaises>
15761       </Attribute>
15762       <Attribute name="categories" id="::Calendar::CalendarItem::categories">
15763         <webidl>    attribute DOMString[] categories setraises(<ref>WebAPIException</ref>);</webidl>
15764         <descriptive>
15765             <brief>
15766  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.
15767 (See RFC 5545 - Section 3.8.1.2).
15768             </brief>
15769            <description>
15770             <p>
15771 Examples of categories are personal, work, vacation, travel, etc.
15772             </p>
15773             <p>
15774 By default, this attribute is set to an empty array.
15775             </p>
15776            </description>
15777             <version>
15778  1.0
15779             </version>
15780             <Code>  event.categories = ['Personal'];
15781  </Code>
15782         </descriptive>
15783         <Type type="array">
15784           <Type type="DOMString"/>
15785         </Type>
15786         <SetRaises>
15787           <RaiseException name="WebAPIException"/>
15788         </SetRaises>
15789       </Attribute>
15790       <Attribute name="attendees" id="::Calendar::CalendarItem::attendees">
15791         <webidl>    attribute <ref>CalendarAttendee</ref>[] attendees setraises(<ref>WebAPIException</ref>);</webidl>
15792         <descriptive>
15793             <brief>
15794  An attribute array that lists the people attending an event.
15795 (See RFC 5545 - Section 3.8.4.3).
15796             </brief>
15797            <description>
15798             <p>
15799 By default, this attribute is set to an empty array.
15800             </p>
15801            </description>
15802             <version>
15803  1.0
15804             </version>
15805             <Code>  var attendee = new tizen.CalendarAttendee('mailto:bob@domain.com',
15806                                            {role: &quot;CHAIR&quot;, RSVP: true});
15807   event.attendees = [attendee];
15808  </Code>
15809         </descriptive>
15810         <Type type="array">
15811           <Type name="CalendarAttendee"/>
15812         </Type>
15813         <SetRaises>
15814           <RaiseException name="WebAPIException"/>
15815         </SetRaises>
15816       </Attribute>
15817       <Operation name="convertToString" id="::Calendar::CalendarItem::convertToString">
15818         <webidl>    DOMString convertToString(<ref>CalendarTextFormat</ref> format) raises(<ref>WebAPIException</ref>);</webidl>
15819         <descriptive>
15820             <brief>
15821  Converts the calendar item to a string format that will be generated and returned synchronously.
15822 The export format is set using the format parameter.
15823             </brief>
15824             <version>
15825  1.0
15826             </version>
15827             <privilegelevel>
15828  public
15829             </privilegelevel>
15830             <privilege>
15831  http://tizen.org/privilege/calendar.read
15832             </privilege>
15833             <Code>  // Defines the event search success callback.
15834   function eventSearchSuccessCallback(events) {
15835     // Converts the first event to iCalendar 2.0 format (default)
15836     var vevent = events[0].convertToString(&quot;ICALENDAR_20&quot;);
15837     console.log('iCalendar 2.0 representation of the event is: ' + vevent);
15838   }
15839
15840   function errorCallback(response) {
15841     console.log( 'The following error occurred: ' +  response.name);
15842   }
15843
15844   // Gets the default calendar
15845   var myCalendar = tizen.calendar.getDefaultCalendar(&quot;EVENT&quot;);
15846     
15847   // Finds all events in the first calendar that contain in the summary the string Tizen.
15848   var filter = new tizen.AttributeFilter('summary', 'CONTAINS', 'Tizen');
15849   myCalendar.find(eventSearchSuccessCallback, errorCallback, filter);
15850  </Code>
15851         </descriptive>
15852         <Type type="DOMString">
15853           <descriptive>
15854               <description><p>
15855  DOMString The representation of the Calendar item.
15856               </p></description>
15857           </descriptive>
15858         </Type>
15859         <ArgumentList>
15860           <Argument name="format">
15861             <descriptive>
15862                 <description><p>
15863  The format to use for exporting.
15864                 </p></description>
15865             </descriptive>
15866             <Type name="CalendarTextFormat"/>
15867           </Argument>
15868         </ArgumentList>
15869         <Raises>
15870           <RaiseException name="WebAPIException">
15871             <descriptive>
15872                 <description><p>
15873  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
15874                 </p></description>
15875                 <description><p>
15876  with error type InvalidValuesError, if any of the input parameters contain an invalid value.
15877                 </p></description>
15878                 <description><p>
15879  with error type SecurityError, if the application does not have the privilege to call this method.
15880                 </p></description>
15881                 <description><p>
15882  with error type NotSupportedError, if the feature is not supported.
15883                 </p></description>
15884                 <description><p>
15885  with error type UnknownError, if any other error occurs.
15886                 </p></description>
15887             </descriptive>
15888           </RaiseException>
15889         </Raises>
15890       </Operation>
15891       <Operation name="clone" id="::Calendar::CalendarItem::clone">
15892         <webidl>    <ref>CalendarItem</ref> clone() raises(<ref>WebAPIException</ref>);</webidl>
15893         <descriptive>
15894             <brief>
15895  Clones the <em>CalendarItem </em>object, detached from any calendar.
15896             </brief>
15897            <description>
15898             <p>
15899 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.
15900             </p>
15901            </description>
15902             <version>
15903  1.0
15904             </version>
15905             <privilegelevel>
15906  public
15907             </privilegelevel>
15908             <privilege>
15909  http://tizen.org/privilege/calendar.read
15910             </privilege>
15911             <Code>  // Gets default calendar.
15912   var calendar = tizen.calendar.getDefaultCalendar();
15913
15914   var html5seminar = new tizen.CalendarEvent({startDate: new tizen.TZDate(2012, 3, 4),
15915                                               duration: new tizen.TimeDuration(3, &quot;DAYS&quot;),
15916                                               summary: &quot;HTML5 Seminar&quot;});
15917                                      
15918   calendar.add(html5seminar);
15919   var tizenseminar = html5seminar.clone();
15920   tizenseminar.summary = &quot;Tizen Seminar&quot;;
15921   calendar.add(tizenseminar);
15922  </Code>
15923         </descriptive>
15924         <Type name="CalendarItem">
15925           <descriptive>
15926               <description><p>
15927  CalendarItem The new clone of the <em>CalendarItem </em>object.
15928               </p></description>
15929           </descriptive>
15930         </Type>
15931         <ArgumentList/>
15932         <Raises>
15933           <RaiseException name="WebAPIException">
15934             <descriptive>
15935                 <description><p>
15936  with error type SecurityError, if the application does not have the privilege to call this method.
15937                 </p></description>
15938                 <description><p>
15939  with error type NotSupportedError, if the feature is not supported.
15940                 </p></description>
15941                 <description><p>
15942  with error type UnknownError if any other error occurs.
15943                 </p></description>
15944             </descriptive>
15945           </RaiseException>
15946         </Raises>
15947       </Operation>
15948     </Interface>
15949     <Interface name="CalendarTask" id="::Calendar::CalendarTask">
15950       <webidl>  [Constructor(optional <ref>CalendarTaskInit</ref>? taskInitDict),
15951    Constructor(DOMString stringRepresentation, <ref>CalendarTextFormat</ref> format)]
15952   interface CalendarTask : <ref>CalendarItem</ref> {
15953     attribute <ref>TZDate</ref>? dueDate setraises(<ref>WebAPIException</ref>);
15954     
15955     attribute <ref>TZDate</ref>? completedDate setraises(<ref>WebAPIException</ref>);
15956     
15957     attribute unsigned short progress setraises(<ref>WebAPIException</ref>);
15958   };</webidl>
15959       <descriptive>
15960           <brief>
15961  An interface that implements the <em>CalendarTask </em>object.
15962           </brief>
15963           <version>
15964  1.0
15965           </version>
15966       </descriptive>
15967       <ExtendedAttributeList>
15968         <ExtendedAttribute name="Constructor">
15969           <webidl>Constructor(optional <ref>CalendarTaskInit</ref>? taskInitDict)</webidl>
15970           <ArgumentList>
15971             <Argument optional="optional" name="taskInitDict">
15972               <Type name="CalendarTaskInit" nullable="nullable"/>
15973             </Argument>
15974           </ArgumentList>
15975         </ExtendedAttribute>
15976         <ExtendedAttribute name="Constructor">
15977           <webidl>   Constructor(DOMString stringRepresentation, <ref>CalendarTextFormat</ref> format)</webidl>
15978           <ArgumentList>
15979             <Argument name="stringRepresentation">
15980               <Type type="DOMString"/>
15981             </Argument>
15982             <Argument name="format">
15983               <Type name="CalendarTextFormat"/>
15984             </Argument>
15985           </ArgumentList>
15986         </ExtendedAttribute>
15987       </ExtendedAttributeList>
15988       <InterfaceInheritance>
15989         <Name name="CalendarItem"/>
15990       </InterfaceInheritance>
15991       <Attribute name="dueDate" id="::Calendar::CalendarTask::dueDate">
15992         <webidl>    attribute <ref>TZDate</ref>? dueDate setraises(<ref>WebAPIException</ref>);</webidl>
15993         <descriptive>
15994             <brief>
15995  An attribute to store the due date and time for completing a task. (See RFC 5545 - Section 3.8.2.3).
15996             </brief>
15997            <description>
15998             <p>
15999 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.
16000             </p>
16001             <p>
16002 This attribute is precise to the second. Milliseconds are ignored.
16003             </p>
16004             <p>
16005 The default value is <var>null</var>. If no value is provided, the task doesn't have a due date.
16006             </p>
16007            </description>
16008             <version>
16009  1.0
16010             </version>
16011             <Code>  task.dueDate = new tizen.TZDate(2011, 2, 11);
16012  </Code>
16013         </descriptive>
16014         <Type name="TZDate" nullable="nullable"/>
16015         <SetRaises>
16016           <RaiseException name="WebAPIException"/>
16017         </SetRaises>
16018       </Attribute>
16019       <Attribute name="completedDate" id="::Calendar::CalendarTask::completedDate">
16020         <webidl>    attribute <ref>TZDate</ref>? completedDate setraises(<ref>WebAPIException</ref>);</webidl>
16021         <descriptive>
16022             <brief>
16023  An attribute to record the date and time when an task is completed.
16024 (See RFC 5545 - Section 3.8.2.1).
16025             </brief>
16026            <description>
16027             <p>
16028 This attribute is precise to the second. Milliseconds are ignored.
16029             </p>
16030             <p>
16031 The default value is <var>null</var>. If no value is provided, the task is not completed yet.  
16032             </p>
16033            </description>
16034             <version>
16035  1.0
16036             </version>
16037             <Code>  task.completedDate = new tizen.TZDate(2011, 2, 11);
16038  </Code>
16039         </descriptive>
16040         <Type name="TZDate" nullable="nullable"/>
16041         <SetRaises>
16042           <RaiseException name="WebAPIException"/>
16043         </SetRaises>
16044       </Attribute>
16045       <Attribute name="progress" id="::Calendar::CalendarTask::progress">
16046         <webidl>    attribute unsigned short progress setraises(<ref>WebAPIException</ref>);</webidl>
16047         <descriptive>
16048             <brief>
16049  An attribute to denote the percent of completion of a task.
16050             </brief>
16051            <description>
16052             <p>
16053 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.
16054             </p>
16055             <p>
16056 Integer values in between indicate the percent partially complete.
16057 (See RFC 5545 - Section 3.8.1.8).
16058             </p>
16059             <p>
16060 The default value is <var>0</var>, implies that the task has not been started.
16061             </p>
16062            </description>
16063             <version>
16064  1.0
16065             </version>
16066             <Code>  task.progress = 50; // 50% done
16067  </Code>
16068         </descriptive>
16069         <Type type="unsigned short"/>
16070         <SetRaises>
16071           <RaiseException name="WebAPIException"/>
16072         </SetRaises>
16073       </Attribute>
16074     </Interface>
16075     <Interface name="CalendarEvent" id="::Calendar::CalendarEvent">
16076       <webidl>  [Constructor(optional <ref>CalendarEventInit</ref>? eventInitDict),
16077    Constructor(DOMString stringRepresentation, <ref>CalendarTextFormat</ref> format)]
16078   interface CalendarEvent : <ref>CalendarItem</ref> {
16079     readonly attribute boolean isDetached;
16080     
16081     attribute <ref>TZDate</ref>? endDate setraises(<ref>WebAPIException</ref>);
16082     
16083     attribute <ref>EventAvailability</ref> availability setraises(<ref>WebAPIException</ref>);
16084     
16085     attribute <ref>CalendarRecurrenceRule</ref>? recurrenceRule setraises(<ref>WebAPIException</ref>);
16086     
16087     void expandRecurrence(<ref>TZDate</ref> startDate,
16088                           <ref>TZDate</ref> endDate,
16089                           <ref>CalendarEventArraySuccessCallback</ref> successCallback,
16090                           optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
16091   };</webidl>
16092       <descriptive>
16093           <brief>
16094  An interface that implements the <em>calendarEvent </em>object.
16095           </brief>
16096           <version>
16097  1.0
16098           </version>
16099           <Code>  // Gets the default calendar
16100   var calendar = tizen.calendar.getDefaultCalendar(&quot;EVENT&quot;);
16101
16102   try {
16103     var ev = new tizen.CalendarEvent(&quot;BEGIN:VCALENDAR\r\n&quot; +
16104                   &quot;BEGIN:VEVENT\r\n&quot; +
16105                   &quot;DTSTAMP:19970901T1300Z\r\n&quot; +
16106                   &quot;DTSTART:19970903T163000Z\r\n&quot; +
16107                   &quot;DTEND:19970903T190000Z\r\n&quot; +
16108                   &quot;SUMMARY:Annual Employee Review\r\n&quot; +
16109                   &quot;CATEGORIES:BUSINESS,HUMAN RESOURCES\r\n&quot; +
16110                   &quot;END:VEVENT\r\n&quot; +
16111                   &quot;END:VCALENDAR&quot;, &quot;ICALENDAR_20&quot;);
16112                    
16113     calendar.add(ev);
16114     console.log('Event added with UID ' + ev.id.uid);
16115   } catch (err) {
16116     console.log(&quot;Failed to add VEVENT to the calendar, error: &quot; + err.name);
16117   }
16118  </Code>
16119       </descriptive>
16120       <ExtendedAttributeList>
16121         <ExtendedAttribute name="Constructor">
16122           <webidl>Constructor(optional <ref>CalendarEventInit</ref>? eventInitDict)</webidl>
16123           <ArgumentList>
16124             <Argument optional="optional" name="eventInitDict">
16125               <Type name="CalendarEventInit" nullable="nullable"/>
16126             </Argument>
16127           </ArgumentList>
16128         </ExtendedAttribute>
16129         <ExtendedAttribute name="Constructor">
16130           <webidl>   Constructor(DOMString stringRepresentation, <ref>CalendarTextFormat</ref> format)</webidl>
16131           <ArgumentList>
16132             <Argument name="stringRepresentation">
16133               <Type type="DOMString"/>
16134             </Argument>
16135             <Argument name="format">
16136               <Type name="CalendarTextFormat"/>
16137             </Argument>
16138           </ArgumentList>
16139         </ExtendedAttribute>
16140       </ExtendedAttributeList>
16141       <InterfaceInheritance>
16142         <Name name="CalendarItem"/>
16143       </InterfaceInheritance>
16144       <Attribute readonly="readonly" name="isDetached" id="::Calendar::CalendarEvent::isDetached">
16145         <webidl>    readonly attribute boolean isDetached;</webidl>
16146         <descriptive>
16147             <brief>
16148  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.
16149             </brief>
16150             <version>
16151  1.0
16152             </version>
16153         </descriptive>
16154         <Type type="boolean"/>
16155       </Attribute>
16156       <Attribute name="endDate" id="::Calendar::CalendarEvent::endDate">
16157         <webidl>    attribute <ref>TZDate</ref>? endDate setraises(<ref>WebAPIException</ref>);</webidl>
16158         <descriptive>
16159             <brief>
16160  An attribute to store the end date/time of an event.
16161             </brief>
16162            <description>
16163             <p>
16164 (see RFC 5545 - Section 3.8.2.2).
16165             </p>
16166             <p>
16167 This <em>endDate</em> must be in the same time zone as the <em>startDate</em>. 
16168 Note that <em>duration</em> and <em>endDate</em> are mutually exclusive, only one of them can be non-null.
16169             </p>
16170             <p>
16171 This attribute is precise to the second. Milliseconds are ignored.
16172             </p>
16173             <p>
16174 The default value for this attribute is <var>null</var>. 
16175             </p>
16176            </description>
16177             <version>
16178  1.0
16179             </version>
16180             <Code>  // 2010-04-30 09:00
16181   event.endDate = new tizen.TZDate(2010, 3, 30, 9, 0);
16182  </Code>
16183         </descriptive>
16184         <Type name="TZDate" nullable="nullable"/>
16185         <SetRaises>
16186           <RaiseException name="WebAPIException"/>
16187         </SetRaises>
16188       </Attribute>
16189       <Attribute name="availability" id="::Calendar::CalendarEvent::availability">
16190         <webidl>    attribute <ref>EventAvailability</ref> availability setraises(<ref>WebAPIException</ref>);</webidl>
16191         <descriptive>
16192             <brief>
16193  An attribute to indicate the availability of a person for an event.
16194 (See RFC 5545 - Section 3.2.9).
16195             </brief>
16196            <description>
16197             <p>
16198 The default value is <var>BUSY</var>.
16199             </p>
16200            </description>
16201             <version>
16202  1.0
16203             </version>
16204         </descriptive>
16205         <Type name="EventAvailability"/>
16206         <SetRaises>
16207           <RaiseException name="WebAPIException"/>
16208         </SetRaises>
16209       </Attribute>
16210       <Attribute name="recurrenceRule" id="::Calendar::CalendarEvent::recurrenceRule">
16211         <webidl>    attribute <ref>CalendarRecurrenceRule</ref>? recurrenceRule setraises(<ref>WebAPIException</ref>);</webidl>
16212         <descriptive>
16213             <brief>
16214  An attribute to denote the recurrence rule for the event.
16215             </brief>
16216            <description>
16217             <p>
16218 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.
16219             </p>
16220             <p>
16221 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.
16222 (See RFC 5545, Section 3.3.10.)
16223             </p>
16224            </description>
16225             <version>
16226  1.0
16227             </version>
16228             <Code>  // Repeats daily for 7 days
16229   var rule = new tizen.CalendarRecurrenceRule(&quot;DAILY&quot;, {occurrenceCount: 7});
16230   event.recurrenceRule = rule;
16231  </Code>
16232         </descriptive>
16233         <Type name="CalendarRecurrenceRule" nullable="nullable"/>
16234         <SetRaises>
16235           <RaiseException name="WebAPIException"/>
16236         </SetRaises>
16237       </Attribute>
16238       <Operation name="expandRecurrence" id="::Calendar::CalendarEvent::expandRecurrence">
16239         <webidl>    void expandRecurrence(<ref>TZDate</ref> startDate,
16240                           <ref>TZDate</ref> endDate,
16241                           <ref>CalendarEventArraySuccessCallback</ref> successCallback,
16242                           optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
16243         <descriptive>
16244             <brief>
16245  Expands a recurring event and returns asynchronously the list of instances occurring in a given time interval (inclusive).
16246             </brief>
16247            <description>
16248             <p>
16249 This method takes into consideration all the parameters of the event recurrence rule to generate the instances occurring in a given time interval.
16250             </p>
16251             <p>
16252 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.
16253             </p>
16254             <p>
16255 The errorCallback is launched with these error types: 
16256             </p>
16257             <ul>
16258               <li>
16259 InvalidValuesError - if the event in operation is not recurring.              </li>
16260               <li>
16261 UnknownError - if any other error occurs.              </li>
16262             </ul>
16263            </description>
16264             <version>
16265  1.0
16266             </version>
16267             <privilegelevel>
16268  public
16269             </privilegelevel>
16270             <privilege>
16271  http://tizen.org/privilege/calendar.read
16272             </privilege>
16273             <Code>  // eventId should be set to ID of event obtained with the find function.
16274   var eventId;
16275   // Defines the error callback.
16276   function errorCallback(response) {
16277     console.log( 'The following error occurred: ' +  response.name);
16278   }
16279
16280   // Defines the event expanding success callback.
16281   function eventExpandingSuccessCallback(events) {
16282     console.log(events.length + ' event instances were returned.');
16283   }
16284  
16285   var calendar = tizen.calendar.getDefaultCalendar();
16286   var event = calendar.get(eventId);
16287
16288   if (event.recurrenceRule != null) {
16289     // This is a recurring event. Expand all the instances during August 2011.
16290     event.expandRecurrence(new tizen.TZDate(2011, 7, 1),
16291                           new tizen.TZDate(2011, 7, 31),
16292                           eventExpandingSuccessCallback,
16293                           errorCallback);
16294   }
16295  </Code>
16296         </descriptive>
16297         <Type type="void"/>
16298         <ArgumentList>
16299           <Argument name="startDate">
16300             <descriptive>
16301                 <description><p>
16302  The start date/ time of an event(inclusive).
16303                 </p></description>
16304             </descriptive>
16305             <Type name="TZDate"/>
16306           </Argument>
16307           <Argument name="endDate">
16308             <descriptive>
16309                 <description><p>
16310  The end date/ time of an event (inclusive).
16311                 </p></description>
16312             </descriptive>
16313             <Type name="TZDate"/>
16314           </Argument>
16315           <Argument name="successCallback">
16316             <descriptive>
16317                 <description><p>
16318  The method to call when the invocation ends successfully.
16319                 </p></description>
16320             </descriptive>
16321             <Type name="CalendarEventArraySuccessCallback"/>
16322           </Argument>
16323           <Argument optional="optional" name="errorCallback">
16324             <descriptive>
16325                 <description><p>
16326  The method to call when an error occurs.
16327                 </p></description>
16328             </descriptive>
16329             <Type name="ErrorCallback" nullable="nullable"/>
16330           </Argument>
16331         </ArgumentList>
16332         <Raises>
16333           <RaiseException name="WebAPIException">
16334             <descriptive>
16335                 <description><p>
16336  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
16337                 </p></description>
16338                 <description><p>
16339  with error type SecurityError, if the application does not have the privilege to call this method.
16340                 </p></description>
16341                 <description><p>
16342  with error type NotSupportedError, if the feature is not supported.
16343                 </p></description>
16344             </descriptive>
16345           </RaiseException>
16346         </Raises>
16347       </Operation>
16348     </Interface>
16349     <Dictionary name="CalendarAttendeeInit" id="::Calendar::CalendarAttendeeInit">
16350       <webidl>  dictionary CalendarAttendeeInit {
16351     DOMString name;
16352     <ref>AttendeeRole</ref> role;
16353     <ref>AttendeeStatus</ref> status;
16354     boolean RSVP;
16355     <ref>AttendeeType</ref> type;
16356     DOMString? group;
16357     DOMString delegatorURI;
16358     DOMString delegateURI;
16359     <ref>ContactRef</ref> contactRef;
16360   };</webidl>
16361       <descriptive>
16362           <brief>
16363  The properties of a <em>CalendarAttendee</em>, to pass to its constructor.
16364           </brief>
16365          <description>
16366           <p>
16367 See <em>CalendarAttendee </em>interface for more information about the members.
16368           </p>
16369          </description>
16370           <version>
16371  1.0
16372           </version>
16373       </descriptive>
16374       <DictionaryMember name="name" id="::Calendar::CalendarAttendeeInit::name">
16375         <webidl>    DOMString name;</webidl>
16376         <Type type="DOMString"/>
16377       </DictionaryMember>
16378       <DictionaryMember name="role" id="::Calendar::CalendarAttendeeInit::role">
16379         <webidl>    <ref>AttendeeRole</ref> role;</webidl>
16380         <Type name="AttendeeRole"/>
16381       </DictionaryMember>
16382       <DictionaryMember name="status" id="::Calendar::CalendarAttendeeInit::status">
16383         <webidl>    <ref>AttendeeStatus</ref> status;</webidl>
16384         <Type name="AttendeeStatus"/>
16385       </DictionaryMember>
16386       <DictionaryMember name="RSVP" id="::Calendar::CalendarAttendeeInit::RSVP">
16387         <webidl>    boolean RSVP;</webidl>
16388         <Type type="boolean"/>
16389       </DictionaryMember>
16390       <DictionaryMember name="type" id="::Calendar::CalendarAttendeeInit::type">
16391         <webidl>    <ref>AttendeeType</ref> type;</webidl>
16392         <Type name="AttendeeType"/>
16393       </DictionaryMember>
16394       <DictionaryMember name="group" id="::Calendar::CalendarAttendeeInit::group">
16395         <webidl>    DOMString? group;</webidl>
16396         <Type type="DOMString" nullable="nullable"/>
16397       </DictionaryMember>
16398       <DictionaryMember name="delegatorURI" id="::Calendar::CalendarAttendeeInit::delegatorURI">
16399         <webidl>    DOMString delegatorURI;</webidl>
16400         <Type type="DOMString"/>
16401       </DictionaryMember>
16402       <DictionaryMember name="delegateURI" id="::Calendar::CalendarAttendeeInit::delegateURI">
16403         <webidl>    DOMString delegateURI;</webidl>
16404         <Type type="DOMString"/>
16405       </DictionaryMember>
16406       <DictionaryMember name="contactRef" id="::Calendar::CalendarAttendeeInit::contactRef">
16407         <webidl>    <ref>ContactRef</ref> contactRef;</webidl>
16408         <Type name="ContactRef"/>
16409       </DictionaryMember>
16410     </Dictionary>
16411     <Interface name="CalendarAttendee" id="::Calendar::CalendarAttendee">
16412       <webidl>  [Constructor(DOMString uri, optional <ref>CalendarAttendeeInit</ref>? attendeeInitDict)]
16413   interface CalendarAttendee
16414   {
16415     attribute DOMString uri;
16416     
16417     attribute DOMString? name;
16418     
16419     attribute <ref>AttendeeRole</ref> role;
16420     
16421     attribute <ref>AttendeeStatus</ref> status;
16422     
16423     attribute boolean RSVP;
16424     
16425     attribute <ref>AttendeeType</ref> type;
16426      
16427     attribute DOMString? group;
16428       
16429     attribute DOMString? delegatorURI;
16430       
16431     attribute DOMString? delegateURI;
16432      
16433     attribute <ref>ContactRef</ref>? contactRef;
16434   };</webidl>
16435       <descriptive>
16436           <brief>
16437  This interface implements the <em>CalendarAttendee </em>object that contains information about an event attendee.
16438           </brief>
16439          <description>
16440           <p>
16441 By default, each of the attributes of this interface are undefined.
16442           </p>
16443           <p>
16444 (For more details, see RFC 5545, Section 3.8.4.1.)
16445           </p>
16446          </description>
16447           <version>
16448  1.0
16449           </version>
16450           <Code>  var attendee = new tizen.CalendarAttendee('mailto:bob@domain.com',
16451                                            {role: &quot;CHAIR&quot;, RSVP: true});
16452   event.attendees = [attendee];
16453  </Code>
16454       </descriptive>
16455       <ExtendedAttributeList>
16456         <ExtendedAttribute name="Constructor">
16457           <webidl>Constructor(DOMString uri, optional <ref>CalendarAttendeeInit</ref>? attendeeInitDict)</webidl>
16458           <ArgumentList>
16459             <Argument name="uri">
16460               <Type type="DOMString"/>
16461             </Argument>
16462             <Argument optional="optional" name="attendeeInitDict">
16463               <Type name="CalendarAttendeeInit" nullable="nullable"/>
16464             </Argument>
16465           </ArgumentList>
16466         </ExtendedAttribute>
16467       </ExtendedAttributeList>
16468       <Attribute name="uri" id="::Calendar::CalendarAttendee::uri">
16469         <webidl>    attribute DOMString uri;</webidl>
16470         <descriptive>
16471             <brief>
16472  An attribute to store the URI for the attendee.
16473             </brief>
16474            <description>
16475             <p>
16476 This is often an email in the form 'mailto:name@domain.com'.
16477             </p>
16478            </description>
16479             <version>
16480  1.0
16481             </version>
16482         </descriptive>
16483         <Type type="DOMString"/>
16484       </Attribute>
16485       <Attribute name="name" id="::Calendar::CalendarAttendee::name">
16486         <webidl>    attribute DOMString? name;</webidl>
16487         <descriptive>
16488             <brief>
16489  An attribute to store the name of an attendee.
16490             </brief>
16491             <version>
16492  1.0
16493             </version>
16494         </descriptive>
16495         <Type type="DOMString" nullable="nullable"/>
16496       </Attribute>
16497       <Attribute name="role" id="::Calendar::CalendarAttendee::role">
16498         <webidl>    attribute <ref>AttendeeRole</ref> role;</webidl>
16499         <descriptive>
16500             <brief>
16501  An attribute to denote the role of the attendee.
16502             </brief>
16503            <description>
16504             <p>
16505 (See RFC 5545, Section 3.2.16.)
16506             </p>
16507             <p>
16508 The default value is <var>REQ_PARTICIPANT</var>.
16509             </p>
16510            </description>
16511             <version>
16512  1.0
16513             </version>
16514         </descriptive>
16515         <Type name="AttendeeRole"/>
16516       </Attribute>
16517       <Attribute name="status" id="::Calendar::CalendarAttendee::status">
16518         <webidl>    attribute <ref>AttendeeStatus</ref> status;</webidl>
16519         <descriptive>
16520             <brief>
16521  An attribute to store the participant's attendance status.
16522 (See RFC 5545, Section 3.2.12.)
16523             </brief>
16524            <description>
16525             <p>
16526 The default value is <var>PENDING</var>.
16527             </p>
16528            </description>
16529             <version>
16530  1.0
16531             </version>
16532         </descriptive>
16533         <Type name="AttendeeStatus"/>
16534       </Attribute>
16535       <Attribute name="RSVP" id="::Calendar::CalendarAttendee::RSVP">
16536         <webidl>    attribute boolean RSVP;</webidl>
16537         <descriptive>
16538             <brief>
16539  An attribute to store the attendee's participation status reply (RSVP).
16540 (See RFC 5545, Section 3.2.17.)
16541             </brief>
16542            <description>
16543             <p>
16544 By default, this attribute is set to <var>FALSE</var>.
16545             </p>
16546            </description>
16547             <version>
16548  1.0
16549             </version>
16550         </descriptive>
16551         <Type type="boolean"/>
16552       </Attribute>
16553       <Attribute name="type" id="::Calendar::CalendarAttendee::type">
16554         <webidl>    attribute <ref>AttendeeType</ref> type;</webidl>
16555         <descriptive>
16556             <brief>
16557  An attribute to indicate the type of a participant.
16558 (See RFC 5545, Section 3.2.3.)
16559             </brief>
16560            <description>
16561             <p>
16562 The default value is <var>INDIVIDUAL</var>.
16563             </p>
16564            </description>
16565             <version>
16566  1.0
16567             </version>
16568         </descriptive>
16569         <Type name="AttendeeType"/>
16570       </Attribute>
16571       <Attribute name="group" id="::Calendar::CalendarAttendee::group">
16572         <webidl>    attribute DOMString? group;</webidl>
16573         <descriptive>
16574             <brief>
16575  An attribute to store the participant's group or list membership.
16576 (See RFC 5545, Section 3.2.11.)
16577             </brief>
16578             <version>
16579  1.0
16580             </version>
16581         </descriptive>
16582         <Type type="DOMString" nullable="nullable"/>
16583       </Attribute>
16584       <Attribute name="delegatorURI" id="::Calendar::CalendarAttendee::delegatorURI">
16585         <webidl>    attribute DOMString? delegatorURI;</webidl>
16586         <descriptive>
16587             <brief>
16588  An attribute to store the URI of the person who has delegated their participation to this attendee.
16589 (See RFC 5545, Section 3.2.4.)
16590             </brief>
16591             <version>
16592  1.0
16593             </version>
16594         </descriptive>
16595         <Type type="DOMString" nullable="nullable"/>
16596       </Attribute>
16597       <Attribute name="delegateURI" id="::Calendar::CalendarAttendee::delegateURI">
16598         <webidl>    attribute DOMString? delegateURI;</webidl>
16599         <descriptive>
16600             <brief>
16601  An attribute to stores the URI of the attendee to whom the person has delegated his participation.
16602 (See RFC 5545, Section 3.2.5.)
16603             </brief>
16604             <version>
16605  1.0
16606             </version>
16607         </descriptive>
16608         <Type type="DOMString" nullable="nullable"/>
16609       </Attribute>
16610       <Attribute name="contactRef" id="::Calendar::CalendarAttendee::contactRef">
16611         <webidl>    attribute <ref>ContactRef</ref>? contactRef;</webidl>
16612         <descriptive>
16613             <brief>
16614  An attribute to store the participant's reference in the Contact API.
16615             </brief>
16616            <description>
16617             <p>
16618 If the contact is not resolved, this attribute will be set to<var> null</var>.
16619 For more information, see the <a href="../../org.tizen.web.device.apireference/tizen/contact.html">Contact API</a>.
16620             </p>
16621            </description>
16622             <version>
16623  1.0
16624             </version>
16625         </descriptive>
16626         <Type name="ContactRef" nullable="nullable"/>
16627       </Attribute>
16628     </Interface>
16629     <Dictionary name="CalendarRecurrenceRuleInit" id="::Calendar::CalendarRecurrenceRuleInit">
16630       <webidl>  dictionary CalendarRecurrenceRuleInit {
16631     short interval;
16632     <ref>TZDate</ref> untilDate;
16633     long occurrenceCount;
16634     <ref>ByDayValue</ref>[] daysOfTheWeek;
16635     short[] setPositions;
16636     <ref>TZDate</ref>[] exceptions;
16637   };</webidl>
16638       <descriptive>
16639           <brief>
16640  The properties of a <em>CalendarRecurrenceRule</em> to pass to its constructor.
16641           </brief>
16642          <description>
16643           <p>
16644 For more information about the members, see <em>CalendarRecurrenceRule </em>interface.
16645           </p>
16646          </description>
16647           <version>
16648  1.0
16649           </version>
16650       </descriptive>
16651       <DictionaryMember name="interval" id="::Calendar::CalendarRecurrenceRuleInit::interval">
16652         <webidl>    short interval;</webidl>
16653         <Type type="short"/>
16654       </DictionaryMember>
16655       <DictionaryMember name="untilDate" id="::Calendar::CalendarRecurrenceRuleInit::untilDate">
16656         <webidl>    <ref>TZDate</ref> untilDate;</webidl>
16657         <Type name="TZDate"/>
16658       </DictionaryMember>
16659       <DictionaryMember name="occurrenceCount" id="::Calendar::CalendarRecurrenceRuleInit::occurrenceCount">
16660         <webidl>    long occurrenceCount;</webidl>
16661         <Type type="long"/>
16662       </DictionaryMember>
16663       <DictionaryMember name="daysOfTheWeek" id="::Calendar::CalendarRecurrenceRuleInit::daysOfTheWeek">
16664         <webidl>    <ref>ByDayValue</ref>[] daysOfTheWeek;</webidl>
16665         <Type type="array">
16666           <Type name="ByDayValue"/>
16667         </Type>
16668       </DictionaryMember>
16669       <DictionaryMember name="setPositions" id="::Calendar::CalendarRecurrenceRuleInit::setPositions">
16670         <webidl>    short[] setPositions;</webidl>
16671         <Type type="array">
16672           <Type type="short"/>
16673         </Type>
16674       </DictionaryMember>
16675       <DictionaryMember name="exceptions" id="::Calendar::CalendarRecurrenceRuleInit::exceptions">
16676         <webidl>    <ref>TZDate</ref>[] exceptions;</webidl>
16677         <Type type="array">
16678           <Type name="TZDate"/>
16679         </Type>
16680       </DictionaryMember>
16681     </Dictionary>
16682     <Interface name="CalendarRecurrenceRule" id="::Calendar::CalendarRecurrenceRule">
16683       <webidl>  [Constructor(<ref>RecurrenceRuleFrequency</ref> frequency, optional <ref>CalendarRecurrenceRuleInit</ref>? ruleInitDict)]
16684   interface CalendarRecurrenceRule
16685   { 
16686     attribute <ref>RecurrenceRuleFrequency</ref> frequency;
16687     
16688     attribute unsigned short interval;
16689     
16690     attribute <ref>TZDate</ref>? untilDate;
16691     
16692     attribute long occurrenceCount;
16693     
16694     attribute <ref>ByDayValue</ref>[] daysOfTheWeek;
16695     
16696     attribute short[] setPositions;
16697     
16698     attribute <ref>TZDate</ref>[] exceptions;
16699   };</webidl>
16700       <descriptive>
16701           <brief>
16702  This interface implements the<em> CalendarRecurrenceRule </em>object, which contains information about the recurrence of an event.
16703 (See RFC 5545, Section 3.3.10.)
16704           </brief>
16705           <version>
16706  1.0
16707           </version>
16708           <Code>  // Repeats daily for 7 days
16709   var rule = new tizen.CalendarRecurrenceRule(&quot;DAILY&quot;, {occurrenceCount:7});
16710   event.recurrenceRule = rule;
16711  </Code>
16712       </descriptive>
16713       <ExtendedAttributeList>
16714         <ExtendedAttribute name="Constructor">
16715           <webidl>Constructor(<ref>RecurrenceRuleFrequency</ref> frequency, optional <ref>CalendarRecurrenceRuleInit</ref>? ruleInitDict)</webidl>
16716           <ArgumentList>
16717             <Argument name="frequency">
16718               <Type name="RecurrenceRuleFrequency"/>
16719             </Argument>
16720             <Argument optional="optional" name="ruleInitDict">
16721               <Type name="CalendarRecurrenceRuleInit" nullable="nullable"/>
16722             </Argument>
16723           </ArgumentList>
16724         </ExtendedAttribute>
16725       </ExtendedAttributeList>
16726       <Attribute name="frequency" id="::Calendar::CalendarRecurrenceRule::frequency">
16727         <webidl>    attribute <ref>RecurrenceRuleFrequency</ref> frequency;</webidl>
16728         <descriptive>
16729             <brief>
16730  An attribute to store the frequency of a recurrence rule.
16731             </brief>
16732            <description>
16733             <p>
16734 This property corresponds to <em>FREQ</em> in RFC 5545.
16735             </p>
16736            </description>
16737             <version>
16738  1.0
16739             </version>
16740         </descriptive>
16741         <Type name="RecurrenceRuleFrequency"/>
16742       </Attribute>
16743       <Attribute name="interval" id="::Calendar::CalendarRecurrenceRule::interval">
16744         <webidl>    attribute unsigned short interval;</webidl>
16745         <descriptive>
16746             <brief>
16747  An attribute to specify how often the recurrence rule repeats over the unit of time indicated by its frequency.
16748             </brief>
16749            <description>
16750             <p>
16751 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.
16752             </p>
16753             <p>
16754 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.
16755             </p>
16756             <p>
16757 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>.
16758             </p>
16759             <p>
16760 This property corresponds to <em>INTERVAL</em> in RFC 5545.
16761             </p>
16762            </description>
16763             <version>
16764  1.0
16765             </version>
16766         </descriptive>
16767         <Type type="unsigned short"/>
16768       </Attribute>
16769       <Attribute name="untilDate" id="::Calendar::CalendarRecurrenceRule::untilDate">
16770         <webidl>    attribute <ref>TZDate</ref>? untilDate;</webidl>
16771         <descriptive>
16772             <brief>
16773  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).
16774             </brief>
16775            <description>
16776             <p>
16777 By default, this attribute is set to <var>null</var>, meaning that the event recurs infinitely, unless <em>occurrenceCount </em>is set.
16778             </p>
16779             <p>
16780 This attribute is precise to the second. Milliseconds are ignored.
16781             </p>
16782             <p>
16783 This property corresponds to <em>UNTIL</em> in RFC 5545.
16784             </p>
16785            </description>
16786             <version>
16787  1.0
16788             </version>
16789         </descriptive>
16790         <Type name="TZDate" nullable="nullable"/>
16791       </Attribute>
16792       <Attribute name="occurrenceCount" id="::Calendar::CalendarRecurrenceRule::occurrenceCount">
16793         <webidl>    attribute long occurrenceCount;</webidl>
16794         <descriptive>
16795             <brief>
16796  An attribute to indicate the number of occurrences of a recurring event.
16797             </brief>
16798            <description>
16799             <p>
16800 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).
16801             </p>
16802             <p>
16803 By default, this attribute is set to <var>-1</var>, meaning that the event recurs infinitely, unless <em>untilDate </em>is set.
16804             </p>
16805             <p>
16806 This property corresponds to <em>COUNT</em> in RFC 5545.
16807             </p>
16808            </description>
16809             <version>
16810  1.0
16811             </version>
16812         </descriptive>
16813         <Type type="long"/>
16814       </Attribute>
16815       <Attribute name="daysOfTheWeek" id="::Calendar::CalendarRecurrenceRule::daysOfTheWeek">
16816         <webidl>    attribute <ref>ByDayValue</ref>[] daysOfTheWeek;</webidl>
16817         <descriptive>
16818             <brief>
16819  An attribute to store the days of the week associated with the recurrence rule.
16820             </brief>
16821            <description>
16822             <p>
16823 This property value is valid only for recurrence rules with a frequency type of <em>WEEKLY</em>, <em>MONTHLY</em>, and <em>YEARLY</em>.
16824             </p>
16825             <p>
16826 This property corresponds to <em>BYDAY</em> in RFC 5545.
16827             </p>
16828             <p>
16829 By default, this attribute is set to an empty array.
16830             </p>
16831            </description>
16832             <version>
16833  1.0
16834             </version>
16835         </descriptive>
16836         <Type type="array">
16837           <Type name="ByDayValue"/>
16838         </Type>
16839       </Attribute>
16840       <Attribute name="setPositions" id="::Calendar::CalendarRecurrenceRule::setPositions">
16841         <webidl>    attribute short[] setPositions;</webidl>
16842         <descriptive>
16843             <brief>
16844  An attribute to store a list of ordinal numbers that filters which recurrences to include in the recurrence rule's frequency.
16845             </brief>
16846            <description>
16847             <p>
16848 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.
16849             </p>
16850             <p>
16851 Values can be from 1 to 366 or -366 to -1. 
16852 Negative values indicate counting backwards from the end of the recurrence rule's frequency (week, month, or year). 
16853             </p>
16854             <p>
16855 This attribute must only be used in conjunction with another BYxxx rule part (such as <em>daysOfTheWeek</em>).
16856             </p>
16857             <p>
16858 This property corresponds to <em>BYSETPOS</em> in RFC 5545.
16859             </p>
16860             <p>
16861 By default, this attribute is set to an empty array.
16862             </p>
16863            </description>
16864             <version>
16865  1.0
16866             </version>
16867         </descriptive>
16868         <Type type="array">
16869           <Type type="short"/>
16870         </Type>
16871       </Attribute>
16872       <Attribute name="exceptions" id="::Calendar::CalendarRecurrenceRule::exceptions">
16873         <webidl>    attribute <ref>TZDate</ref>[] exceptions;</webidl>
16874         <descriptive>
16875             <brief>
16876  An attribute to list date/time exceptions for the recurring event.
16877 (See RFC 5545, Section 3.8.5.1.) 
16878             </brief>
16879            <description>
16880             <p>
16881 This attribute is precise to the second. Milliseconds are ignored.
16882             </p>
16883             <p>
16884 This property corresponds to <em>EXDATE</em> in RFC 5545.
16885             </p>
16886             <p>
16887 By default, this attribute is set to an empty array.
16888             </p>
16889            </description>
16890             <version>
16891  1.0
16892             </version>
16893         </descriptive>
16894         <Type type="array">
16895           <Type name="TZDate"/>
16896         </Type>
16897       </Attribute>
16898     </Interface>
16899     <Interface name="CalendarEventId" id="::Calendar::CalendarEventId">
16900       <webidl>  [Constructor(DOMString uid, optional DOMString? rid)]
16901   interface CalendarEventId {
16902     attribute DOMString uid;
16903     
16904     attribute DOMString? rid;
16905   };</webidl>
16906       <descriptive>
16907           <brief>
16908  This interface contains a UID and an optional recurrence ID attribute to identify calendar events.
16909           </brief>
16910          <description>
16911           <p>
16912 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.
16913           </p>
16914          </description>
16915           <version>
16916  1.0
16917           </version>
16918       </descriptive>
16919       <ExtendedAttributeList>
16920         <ExtendedAttribute name="Constructor">
16921           <webidl>Constructor(DOMString uid, optional DOMString? rid)</webidl>
16922           <ArgumentList>
16923             <Argument name="uid">
16924               <Type type="DOMString"/>
16925             </Argument>
16926             <Argument optional="optional" name="rid">
16927               <Type type="DOMString" nullable="nullable"/>
16928             </Argument>
16929           </ArgumentList>
16930         </ExtendedAttribute>
16931       </ExtendedAttributeList>
16932       <Attribute name="uid" id="::Calendar::CalendarEventId::uid">
16933         <webidl>    attribute DOMString uid;</webidl>
16934         <descriptive>
16935             <brief>
16936  An attribute to persistently, and uniquely identify a calendar event.
16937             </brief>
16938            <description>
16939             <p>
16940 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.
16941             </p>
16942             <p>
16943 See RFC 5545 (section 3.8.4.7) for more details about this parameter and algorithms to guarantee assignment of unique values.
16944 This value is assigned by the platform when the <em>add()</em> method is successfully invoked.
16945             </p>
16946            </description>
16947             <version>
16948  1.0
16949             </version>
16950         </descriptive>
16951         <Type type="DOMString"/>
16952       </Attribute>
16953       <Attribute name="rid" id="::Calendar::CalendarEventId::rid">
16954         <webidl>    attribute DOMString? rid;</webidl>
16955         <descriptive>
16956             <brief>
16957  An attribute to store the recurrence ID of a <em>CalendarEvent </em>instance.
16958             </brief>
16959            <description>
16960             <p>
16961 This attribute is used in conjunction with the <em>uid</em> property to identify a specific instance of a recurring event.
16962             </p>
16963             <p>
16964 The parent of a recurrence instance has its <em>rid</em> set to <var>null</var>.
16965             </p>
16966             <p>
16967 By default, this attribute is set to <var>null</var>.
16968 (See RFC 5545 (section 3.8.4.4) for more details about this parameter.)
16969             </p>
16970            </description>
16971             <version>
16972  1.0
16973             </version>
16974         </descriptive>
16975         <Type type="DOMString" nullable="nullable"/>
16976       </Attribute>
16977     </Interface>
16978     <Interface name="CalendarAlarm" id="::Calendar::CalendarAlarm">
16979       <webidl>  [Constructor(<ref>TZDate</ref> absoluteDate, <ref>AlarmMethod</ref> method, optional DOMString? description),
16980    Constructor(<ref>TimeDuration</ref> before, <ref>AlarmMethod</ref> method, optional DOMString? description)]
16981   interface CalendarAlarm {
16982     attribute <ref>TZDate</ref>? absoluteDate setraises(<ref>WebAPIException</ref>);
16983     
16984     attribute <ref>TimeDuration</ref>? before setraises(<ref>WebAPIException</ref>);
16985   
16986     attribute <ref>AlarmMethod</ref> method setraises(<ref>WebAPIException</ref>);
16987     
16988     attribute DOMString? description;
16989   };</webidl>
16990       <descriptive>
16991           <brief>
16992  An interface that contains information related to an event alarm or reminder.
16993           </brief>
16994           <version>
16995  1.0
16996           </version>
16997           <Code>  // Creates a sound alarm 30 minutes before the event's start time
16998   var alarm = new tizen.CalendarAlarm(new tizen.TimeDuration(30, &quot;MINS&quot;), &quot;SOUND&quot;);
16999  </Code>
17000       </descriptive>
17001       <ExtendedAttributeList>
17002         <ExtendedAttribute name="Constructor">
17003           <webidl>Constructor(<ref>TZDate</ref> absoluteDate, <ref>AlarmMethod</ref> method, optional DOMString? description)</webidl>
17004           <ArgumentList>
17005             <Argument name="absoluteDate">
17006               <Type name="TZDate"/>
17007             </Argument>
17008             <Argument name="method">
17009               <Type name="AlarmMethod"/>
17010             </Argument>
17011             <Argument optional="optional" name="description">
17012               <Type type="DOMString" nullable="nullable"/>
17013             </Argument>
17014           </ArgumentList>
17015         </ExtendedAttribute>
17016         <ExtendedAttribute name="Constructor">
17017           <webidl>   Constructor(<ref>TimeDuration</ref> before, <ref>AlarmMethod</ref> method, optional DOMString? description)</webidl>
17018           <ArgumentList>
17019             <Argument name="before">
17020               <Type name="TimeDuration"/>
17021             </Argument>
17022             <Argument name="method">
17023               <Type name="AlarmMethod"/>
17024             </Argument>
17025             <Argument optional="optional" name="description">
17026               <Type type="DOMString" nullable="nullable"/>
17027             </Argument>
17028           </ArgumentList>
17029         </ExtendedAttribute>
17030       </ExtendedAttributeList>
17031       <Attribute name="absoluteDate" id="::Calendar::CalendarAlarm::absoluteDate">
17032         <webidl>    attribute <ref>TZDate</ref>? absoluteDate setraises(<ref>WebAPIException</ref>);</webidl>
17033         <descriptive>
17034             <brief>
17035  An attribute to record the absolute date and time when an alarm should be triggered.
17036             </brief>
17037            <description>
17038             <p>
17039 <em>absoluteDate </em>and <em>before </em>are mutually exclusive.
17040             </p>
17041             <p>
17042 This attribute is precise to the second. Milliseconds are ignored.
17043             </p>
17044            </description>
17045             <version>
17046  1.0
17047             </version>
17048         </descriptive>
17049         <Type name="TZDate" nullable="nullable"/>
17050         <SetRaises>
17051           <RaiseException name="WebAPIException"/>
17052         </SetRaises>
17053       </Attribute>
17054       <Attribute name="before" id="::Calendar::CalendarAlarm::before">
17055         <webidl>    attribute <ref>TimeDuration</ref>? before setraises(<ref>WebAPIException</ref>);</webidl>
17056         <descriptive>
17057             <brief>
17058  An attribute to store the duration before an event starts on which the alarm should be triggered.
17059             </brief>
17060            <description>
17061             <p>
17062 The duration should be positive.
17063             </p>
17064             <p>
17065 <em>absoluteDate </em>and <em>before </em>are mutually exclusive.
17066             </p>
17067             <p>
17068 This attribute is precise to the second. Milliseconds are ignored.
17069             </p>
17070            </description>
17071             <version>
17072  1.0
17073             </version>
17074         </descriptive>
17075         <Type name="TimeDuration" nullable="nullable"/>
17076         <SetRaises>
17077           <RaiseException name="WebAPIException"/>
17078         </SetRaises>
17079       </Attribute>
17080       <Attribute name="method" id="::Calendar::CalendarAlarm::method">
17081         <webidl>    attribute <ref>AlarmMethod</ref> method setraises(<ref>WebAPIException</ref>);</webidl>
17082         <descriptive>
17083             <brief>
17084  An attribute to denote the notification method used by an alarm.
17085             </brief>
17086             <version>
17087  1.0
17088             </version>
17089         </descriptive>
17090         <Type name="AlarmMethod"/>
17091         <SetRaises>
17092           <RaiseException name="WebAPIException"/>
17093         </SetRaises>
17094       </Attribute>
17095       <Attribute name="description" id="::Calendar::CalendarAlarm::description">
17096         <webidl>    attribute DOMString? description;</webidl>
17097         <descriptive>
17098             <brief>
17099  An attribute to store the description of an alarm.
17100             </brief>
17101            <description>
17102             <p>
17103 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.
17104             </p>
17105             <p>
17106 The default value is an empty string.
17107             </p>
17108            </description>
17109             <version>
17110  1.0
17111             </version>
17112         </descriptive>
17113         <Type type="DOMString" nullable="nullable"/>
17114       </Attribute>
17115     </Interface>
17116     <Interface name="CalendarEventArraySuccessCallback" id="::Calendar::CalendarEventArraySuccessCallback">
17117       <webidl>  [Callback=FunctionOnly, NoInterfaceObject]
17118   interface CalendarEventArraySuccessCallback {
17119     void onsuccess(<ref>CalendarEvent</ref>[] events);
17120   };</webidl>
17121       <descriptive>
17122           <brief>
17123  An interface that implements the success callback used in the asynchronous operation for retrieving a list of calendar events.
17124           </brief>
17125           <version>
17126  1.0
17127           </version>
17128       </descriptive>
17129       <ExtendedAttributeList>
17130         <ExtendedAttribute name="Callback" value="FunctionOnly">
17131           <webidl>Callback</webidl>
17132         </ExtendedAttribute>
17133         <ExtendedAttribute name="NoInterfaceObject">
17134           <webidl> NoInterfaceObject</webidl>
17135         </ExtendedAttribute>
17136       </ExtendedAttributeList>
17137       <Operation name="onsuccess" id="::Calendar::CalendarEventArraySuccessCallback::onsuccess">
17138         <webidl>    void onsuccess(<ref>CalendarEvent</ref>[] events);</webidl>
17139         <descriptive>
17140             <brief>
17141  Called when the list of calendar events is retrieved successfully.
17142             </brief>
17143             <version>
17144  1.0
17145             </version>
17146         </descriptive>
17147         <Type type="void"/>
17148         <ArgumentList>
17149           <Argument name="events">
17150             <descriptive>
17151                 <description><p>
17152  The array of <em>CalendarEvent </em>objects.
17153                 </p></description>
17154             </descriptive>
17155             <Type type="array">
17156               <Type name="CalendarEvent"/>
17157             </Type>
17158           </Argument>
17159         </ArgumentList>
17160       </Operation>
17161     </Interface>
17162     <Interface name="CalendarItemArraySuccessCallback" id="::Calendar::CalendarItemArraySuccessCallback">
17163       <webidl>  [Callback=FunctionOnly, NoInterfaceObject]
17164   interface CalendarItemArraySuccessCallback {
17165     void onsuccess(<ref>CalendarItem</ref>[] items);
17166   };</webidl>
17167       <descriptive>
17168           <brief>
17169  This interface implements the success callback used in the asynchronous operation for retrieving a list of calendar items.
17170           </brief>
17171           <version>
17172  1.0
17173           </version>
17174       </descriptive>
17175       <ExtendedAttributeList>
17176         <ExtendedAttribute name="Callback" value="FunctionOnly">
17177           <webidl>Callback</webidl>
17178         </ExtendedAttribute>
17179         <ExtendedAttribute name="NoInterfaceObject">
17180           <webidl> NoInterfaceObject</webidl>
17181         </ExtendedAttribute>
17182       </ExtendedAttributeList>
17183       <Operation name="onsuccess" id="::Calendar::CalendarItemArraySuccessCallback::onsuccess">
17184         <webidl>    void onsuccess(<ref>CalendarItem</ref>[] items);</webidl>
17185         <descriptive>
17186             <brief>
17187  Called when the list of calendar items is retrieved successfully.
17188             </brief>
17189             <version>
17190  1.0
17191             </version>
17192         </descriptive>
17193         <Type type="void"/>
17194         <ArgumentList>
17195           <Argument name="items">
17196             <descriptive>
17197                 <description><p>
17198  The array of <em>CalendarItem </em>objects.
17199                 </p></description>
17200             </descriptive>
17201             <Type type="array">
17202               <Type name="CalendarItem"/>
17203             </Type>
17204           </Argument>
17205         </ArgumentList>
17206       </Operation>
17207     </Interface>
17208     <Interface name="CalendarArraySuccessCallback" id="::Calendar::CalendarArraySuccessCallback">
17209       <webidl>  [Callback=FunctionOnly, NoInterfaceObject]
17210   interface CalendarArraySuccessCallback {
17211     void onsuccess(<ref>Calendar</ref>[] calendars);
17212   };</webidl>
17213       <descriptive>
17214           <brief>
17215  This interface implements the success callback used in the asynchronous operation to get a list of calendars using the <em>getCalendars()</em> method.
17216           </brief>
17217           <version>
17218  1.0
17219           </version>
17220       </descriptive>
17221       <ExtendedAttributeList>
17222         <ExtendedAttribute name="Callback" value="FunctionOnly">
17223           <webidl>Callback</webidl>
17224         </ExtendedAttribute>
17225         <ExtendedAttribute name="NoInterfaceObject">
17226           <webidl> NoInterfaceObject</webidl>
17227         </ExtendedAttribute>
17228       </ExtendedAttributeList>
17229       <Operation name="onsuccess" id="::Calendar::CalendarArraySuccessCallback::onsuccess">
17230         <webidl>    void onsuccess(<ref>Calendar</ref>[] calendars);</webidl>
17231         <descriptive>
17232             <brief>
17233  Called when the array of <em>Calendar </em>objects is retrieved successfully.
17234             </brief>
17235             <version>
17236  1.0
17237             </version>
17238         </descriptive>
17239         <Type type="void"/>
17240         <ArgumentList>
17241           <Argument name="calendars">
17242             <descriptive>
17243                 <description><p>
17244  The array of <em>Calendar </em>objects.
17245                 </p></description>
17246             </descriptive>
17247             <Type type="array">
17248               <Type name="Calendar"/>
17249             </Type>
17250           </Argument>
17251         </ArgumentList>
17252       </Operation>
17253     </Interface>
17254     <Interface name="CalendarChangeCallback" id="::Calendar::CalendarChangeCallback">
17255       <webidl>  [Callback, NoInterfaceObject] interface CalendarChangeCallback {
17256     void onitemsadded(<ref>CalendarItem</ref>[] items);
17257     
17258     void onitemsupdated(<ref>CalendarItem</ref>[] items);
17259     
17260     void onitemsremoved(<ref>CalendarItemId</ref>[] ids);
17261   };</webidl>
17262       <descriptive>
17263           <brief>
17264  This interface specifies a set of methods that will be invoked every time a calendar change occurs (calendar item addition/update/removal).
17265           </brief>
17266           <version>
17267  1.0
17268           </version>
17269       </descriptive>
17270       <ExtendedAttributeList>
17271         <ExtendedAttribute name="Callback">
17272           <webidl>Callback</webidl>
17273         </ExtendedAttribute>
17274         <ExtendedAttribute name="NoInterfaceObject">
17275           <webidl> NoInterfaceObject</webidl>
17276         </ExtendedAttribute>
17277       </ExtendedAttributeList>
17278       <Operation name="onitemsadded" id="::Calendar::CalendarChangeCallback::onitemsadded">
17279         <webidl>    void onitemsadded(<ref>CalendarItem</ref>[] items);</webidl>
17280         <descriptive>
17281             <brief>
17282  Called when items are added to the calendar.
17283             </brief>
17284             <version>
17285  1.0
17286             </version>
17287         </descriptive>
17288         <Type type="void"/>
17289         <ArgumentList>
17290           <Argument name="items">
17291             <descriptive>
17292                 <description><p>
17293  The list of items that were added.
17294                 </p></description>
17295             </descriptive>
17296             <Type type="array">
17297               <Type name="CalendarItem"/>
17298             </Type>
17299           </Argument>
17300         </ArgumentList>
17301       </Operation>
17302       <Operation name="onitemsupdated" id="::Calendar::CalendarChangeCallback::onitemsupdated">
17303         <webidl>    void onitemsupdated(<ref>CalendarItem</ref>[] items);</webidl>
17304         <descriptive>
17305             <brief>
17306  Called when items are updated in the calendar.
17307             </brief>
17308             <version>
17309  1.0
17310             </version>
17311         </descriptive>
17312         <Type type="void"/>
17313         <ArgumentList>
17314           <Argument name="items">
17315             <descriptive>
17316                 <description><p>
17317  The list of items that were updated.
17318                 </p></description>
17319             </descriptive>
17320             <Type type="array">
17321               <Type name="CalendarItem"/>
17322             </Type>
17323           </Argument>
17324         </ArgumentList>
17325       </Operation>
17326       <Operation name="onitemsremoved" id="::Calendar::CalendarChangeCallback::onitemsremoved">
17327         <webidl>    void onitemsremoved(<ref>CalendarItemId</ref>[] ids);</webidl>
17328         <descriptive>
17329             <brief>
17330  Called when item are removed from the calendar.
17331             </brief>
17332             <version>
17333  1.0
17334             </version>
17335         </descriptive>
17336         <Type type="void"/>
17337         <ArgumentList>
17338           <Argument name="ids">
17339             <descriptive>
17340                 <description><p>
17341  The list of identifiers for the items that were removed.
17342                 </p></description>
17343             </descriptive>
17344             <Type type="array">
17345               <Type name="CalendarItemId"/>
17346             </Type>
17347           </Argument>
17348         </ArgumentList>
17349       </Operation>
17350     </Interface>
17351   </Module>
17352   <Module name="Callhistory" id="::Callhistory">
17353     <webidl>module Callhistory {
17354     [NoInterfaceObject] interface CallHistoryObject {
17355         readonly attribute <ref>CallHistory</ref> callhistory;
17356     };
17357     
17358     <ref>Tizen</ref> implements <ref>CallHistoryObject</ref>;
17359
17360     [NoInterfaceObject] interface RemoteParty {
17361         readonly attribute DOMString? remoteParty;
17362
17363         readonly attribute <ref>PersonId</ref>? personId;
17364
17365     };
17366
17367     [NoInterfaceObject] interface CallHistoryEntry {
17368     
17369         readonly attribute DOMString uid;
17370
17371         readonly attribute DOMString type;
17372
17373         readonly attribute DOMString[]? features;
17374
17375         readonly attribute <ref>RemoteParty</ref>[] remoteParties;
17376
17377         readonly attribute Date startTime;
17378
17379         readonly attribute unsigned long duration;
17380
17381         attribute DOMString direction;
17382     };
17383
17384     [NoInterfaceObject] interface CallHistory {
17385
17386         void find(<ref>CallHistoryEntryArraySuccessCallback</ref> successCallback,
17387                   optional <ref>ErrorCallback</ref>? errorCallback,
17388                   optional <ref>AbstractFilter</ref>? filter,
17389                   optional <ref>SortMode</ref>? sortMode,
17390                   optional unsigned long? limit,
17391                   optional unsigned long? offset) raises(<ref>WebAPIException</ref>);
17392
17393         void remove(<ref>CallHistoryEntry</ref> entry) raises(<ref>WebAPIException</ref>);
17394
17395         void removeBatch(<ref>CallHistoryEntry</ref>[] entries,
17396                          optional <ref>SuccessCallback</ref>? successCallback,
17397                          optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
17398
17399         void removeAll(optional <ref>SuccessCallback</ref>? successCallback,
17400                        optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
17401
17402         long addChangeListener(<ref>CallHistoryChangeCallback</ref> observer) raises(<ref>WebAPIException</ref>);
17403
17404         void removeChangeListener(long handle) raises(<ref>WebAPIException</ref>);
17405     };
17406
17407     [Callback=FunctionOnly, NoInterfaceObject] interface CallHistoryEntryArraySuccessCallback {
17408         void onsuccess(<ref>CallHistoryEntry</ref>[] entries);
17409     };
17410
17411     [Callback, NoInterfaceObject]
17412     interface CallHistoryChangeCallback {
17413         void onadded(<ref>CallHistoryEntry</ref>[] newItems);
17414
17415         void onchanged(<ref>CallHistoryEntry</ref>[] changedItems);
17416
17417         void onremoved(DOMString[] removedItems);
17418     };
17419 };</webidl>
17420     <descriptive>
17421         <brief>
17422  This API provides interfaces and methods for retrieving information from the call history.
17423         </brief>
17424        <description>
17425         <p>
17426 For more information on the Callhistory features, see <a href="../../org.tizen.web.appprogramming/html/guide/social_guide/call.htm">Call History Guide</a>.  
17427         </p>
17428        </description>
17429         <version>
17430  2.0
17431         </version>
17432         <def-api-feature identifier="http://tizen.org/feature/network.telephony">
17433           <descriptive>
17434            <description>
17435             <p>
17436 To guarantee this application running on a device with Telephony feature, define below in the config file: 
17437             </p>
17438            </description>
17439           </descriptive>
17440         </def-api-feature>
17441     </descriptive>
17442     <Interface name="CallHistoryObject" id="::Callhistory::CallHistoryObject">
17443       <webidl>    [NoInterfaceObject] interface CallHistoryObject {
17444         readonly attribute <ref>CallHistory</ref> callhistory;
17445     };</webidl>
17446       <descriptive>
17447           <brief>
17448  This interface defines what is instantiated by the <em>Tizen </em>object from the Tizen Platform.
17449 The <em>tizen.callhistory<em> object allows access to the CallHistory API.
17450 </em></em>          </brief>
17451           <version>
17452  2.0
17453           </version>
17454       </descriptive>
17455       <ExtendedAttributeList>
17456         <ExtendedAttribute name="NoInterfaceObject">
17457           <webidl>NoInterfaceObject</webidl>
17458         </ExtendedAttribute>
17459       </ExtendedAttributeList>
17460       <Attribute readonly="readonly" name="callhistory" id="::Callhistory::CallHistoryObject::callhistory">
17461         <webidl>        readonly attribute <ref>CallHistory</ref> callhistory;</webidl>
17462         <Type name="CallHistory"/>
17463       </Attribute>
17464     </Interface>
17465     <Implements name1="Tizen" name2="CallHistoryObject">
17466       <webidl>    <ref>Tizen</ref> implements <ref>CallHistoryObject</ref>;</webidl>
17467       <descriptive>
17468           <brief>
17469  The CallHistory interface is available from the <em>Tizen </em>object through the <em>Window </em>object.
17470           </brief>
17471           <version>
17472  2.0
17473           </version>
17474       </descriptive>
17475     </Implements>
17476     <Interface name="RemoteParty" id="::Callhistory::RemoteParty">
17477       <webidl>    [NoInterfaceObject] interface RemoteParty {
17478         readonly attribute DOMString? remoteParty;
17479
17480         readonly attribute <ref>PersonId</ref>? personId;
17481
17482     };</webidl>
17483       <descriptive>
17484           <brief>
17485  This interface represents remote parties.
17486           </brief>
17487           <version>
17488  2.0
17489           </version>
17490       </descriptive>
17491       <ExtendedAttributeList>
17492         <ExtendedAttribute name="NoInterfaceObject">
17493           <webidl>NoInterfaceObject</webidl>
17494         </ExtendedAttribute>
17495       </ExtendedAttributeList>
17496       <Attribute readonly="readonly" name="remoteParty" id="::Callhistory::RemoteParty::remoteParty">
17497         <webidl>        readonly attribute DOMString? remoteParty;</webidl>
17498         <descriptive>
17499             <brief>
17500  An attribute to store the remote party identifier (RPID).
17501 The RPID is a unique identifier used by a service with call capability. It also includes phone numbers.
17502 Contacts are also defined per service, so an RPID can be resolved to a Contact.
17503 A <var>null </var>value means that the remote is hidden (private number).
17504             </brief>
17505             <version>
17506  2.0 
17507             </version>
17508         </descriptive>
17509         <Type type="DOMString" nullable="nullable"/>
17510       </Attribute>
17511       <Attribute readonly="readonly" name="personId" id="::Callhistory::RemoteParty::personId">
17512         <webidl>        readonly attribute <ref>PersonId</ref>? personId;</webidl>
17513         <descriptive>
17514             <brief>
17515  An attribute to store the identifier of the person that the raw contact belongs to.
17516             </brief>
17517            <description>
17518             <p>
17519 If the contact cannot be resolved, the value is <var>null</var>.
17520 See <a href="../../org.tizen.web.device.apireference/tizen/contact.html">Contact API</a> for more information.
17521             </p>
17522            </description>
17523             <version>
17524  2.0
17525             </version>
17526         </descriptive>
17527         <Type name="PersonId" nullable="nullable"/>
17528       </Attribute>
17529     </Interface>
17530     <Interface name="CallHistoryEntry" id="::Callhistory::CallHistoryEntry">
17531       <webidl>    [NoInterfaceObject] interface CallHistoryEntry {
17532     
17533         readonly attribute DOMString uid;
17534
17535         readonly attribute DOMString type;
17536
17537         readonly attribute DOMString[]? features;
17538
17539         readonly attribute <ref>RemoteParty</ref>[] remoteParties;
17540
17541         readonly attribute Date startTime;
17542
17543         readonly attribute unsigned long duration;
17544
17545         attribute DOMString direction;
17546     };</webidl>
17547       <descriptive>
17548           <brief>
17549  This interface represents the subset of properties of calls, which become a call record in the call history after the call ends.
17550           </brief>
17551           <version>
17552  2.0
17553           </version>
17554       </descriptive>
17555       <ExtendedAttributeList>
17556         <ExtendedAttribute name="NoInterfaceObject">
17557           <webidl>NoInterfaceObject</webidl>
17558         </ExtendedAttribute>
17559       </ExtendedAttributeList>
17560       <Attribute readonly="readonly" name="uid" id="::Callhistory::CallHistoryEntry::uid">
17561         <webidl>        readonly attribute DOMString uid;</webidl>
17562         <descriptive>
17563             <brief>
17564  An attribute to store the unique identifier of a call record.
17565             </brief>
17566             <version>
17567  2.0
17568             </version>
17569         </descriptive>
17570         <Type type="DOMString"/>
17571       </Attribute>
17572       <Attribute readonly="readonly" name="type" id="::Callhistory::CallHistoryEntry::type">
17573         <webidl>        readonly attribute DOMString type;</webidl>
17574         <descriptive>
17575             <brief>
17576  An attribute to store the service type of the call saved to call history.
17577             </brief>
17578            <description>
17579             <p>
17580 The following values are the supported:
17581             </p>
17582             <ul>
17583               <li>
17584 TEL - for all protocols with phone number addressing (PSTN, GSM, CDMA, LTE, etc.)               </li>
17585               <li>
17586 XMPP -  for generic XMPP calls              </li>
17587               <li>
17588 SIP - for generic SIP calls              </li>
17589             </ul>
17590            </description>
17591             <version>
17592  2.0
17593             </version>
17594         </descriptive>
17595         <Type type="DOMString"/>
17596       </Attribute>
17597       <Attribute readonly="readonly" name="features" id="::Callhistory::CallHistoryEntry::features">
17598         <webidl>        readonly attribute DOMString[]? features;</webidl>
17599         <descriptive>
17600             <brief>
17601  An attributes to store the features associated with the call service saved to call history.
17602 The following values are the supported:
17603             </brief>
17604            <description>
17605             <ul>
17606               <li>
17607 CALL - for all call types              </li>
17608               <li>
17609 VOICECALL - for voice-only calls               </li>
17610               <li>
17611 VIDEOCALL - for audio and video channel support in the call              </li>
17612               <li>
17613 EMERGENCYCALL - to denote an emergency call              </li>
17614             </ul>
17615            </description>
17616             <version>
17617  2.0
17618             </version>
17619         </descriptive>
17620         <Type type="array" nullable="nullable">
17621           <Type type="DOMString"/>
17622         </Type>
17623       </Attribute>
17624       <Attribute readonly="readonly" name="remoteParties" id="::Callhistory::CallHistoryEntry::remoteParties">
17625         <webidl>        readonly attribute <ref>RemoteParty</ref>[] remoteParties;</webidl>
17626         <descriptive>
17627             <brief>
17628  An attributes to store the remote parties participating in the call.
17629             </brief>
17630             <version>
17631  2.0
17632             </version>
17633         </descriptive>
17634         <Type type="array">
17635           <Type name="RemoteParty"/>
17636         </Type>
17637       </Attribute>
17638       <Attribute readonly="readonly" name="startTime" id="::Callhistory::CallHistoryEntry::startTime">
17639         <webidl>        readonly attribute Date startTime;</webidl>
17640         <descriptive>
17641             <brief>
17642  An attribute to store the start time of the call.
17643 This attribute is the moment when media channels come up. The exact meaning is defined by the back-end.
17644             </brief>
17645             <version>
17646  2.0
17647             </version>
17648         </descriptive>
17649         <Type type="Date"/>
17650       </Attribute>
17651       <Attribute readonly="readonly" name="duration" id="::Callhistory::CallHistoryEntry::duration">
17652         <webidl>        readonly attribute unsigned long duration;</webidl>
17653         <descriptive>
17654             <brief>
17655  An attribute to store the duration of the call in seconds.
17656 This attribute is the duration from media channels coming up to the moment when media channels tear down on the same call service.
17657 If the call is migrated to another service, another call history entry is used.
17658 The exact meaning is defined by the back-end.
17659             </brief>
17660             <version>
17661  2.0
17662             </version>
17663         </descriptive>
17664         <Type type="unsigned long"/>
17665       </Attribute>
17666       <Attribute name="direction" id="::Callhistory::CallHistoryEntry::direction">
17667         <webidl>        attribute DOMString direction;</webidl>
17668         <descriptive>
17669             <brief>
17670  An attribute to indicate whether the call was dialed, received, missed, blocked or rejected.
17671 The following values are the supported:
17672             </brief>
17673            <description>
17674             <ul>
17675               <li>
17676 DIALED - for dialed calls              </li>
17677               <li>
17678 RECEIVED - for received calls              </li>
17679               <li>
17680 MISSEDNEW - for missed calls not seen yet              </li>
17681               <li>
17682 MISSED - for missed calls              </li>
17683               <li>
17684 BLOCKED - for blocked calls              </li>
17685               <li>
17686 REJECTED - for rejected calls              </li>
17687             </ul>
17688            </description>
17689             <version>
17690  2.0
17691             </version>
17692         </descriptive>
17693         <Type type="DOMString"/>
17694       </Attribute>
17695     </Interface>
17696     <Interface name="CallHistory" id="::Callhistory::CallHistory">
17697       <webidl>    [NoInterfaceObject] interface CallHistory {
17698
17699         void find(<ref>CallHistoryEntryArraySuccessCallback</ref> successCallback,
17700                   optional <ref>ErrorCallback</ref>? errorCallback,
17701                   optional <ref>AbstractFilter</ref>? filter,
17702                   optional <ref>SortMode</ref>? sortMode,
17703                   optional unsigned long? limit,
17704                   optional unsigned long? offset) raises(<ref>WebAPIException</ref>);
17705
17706         void remove(<ref>CallHistoryEntry</ref> entry) raises(<ref>WebAPIException</ref>);
17707
17708         void removeBatch(<ref>CallHistoryEntry</ref>[] entries,
17709                          optional <ref>SuccessCallback</ref>? successCallback,
17710                          optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
17711
17712         void removeAll(optional <ref>SuccessCallback</ref>? successCallback,
17713                        optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
17714
17715         long addChangeListener(<ref>CallHistoryChangeCallback</ref> observer) raises(<ref>WebAPIException</ref>);
17716
17717         void removeChangeListener(long handle) raises(<ref>WebAPIException</ref>);
17718     };</webidl>
17719       <descriptive>
17720           <brief>
17721  This interface manages call history.
17722 Apps can read or delete call history (depending on permission).
17723 Modifying call history is allowed for certain attributes, like direction.
17724 Adding call history is owned by the back-end. Filtering is supported for all fields of <em>CallHistoryEntry</em>.
17725           </brief>
17726           <version>
17727  2.0
17728           </version>
17729       </descriptive>
17730       <ExtendedAttributeList>
17731         <ExtendedAttribute name="NoInterfaceObject">
17732           <webidl>NoInterfaceObject</webidl>
17733         </ExtendedAttribute>
17734       </ExtendedAttributeList>
17735       <Operation name="find" id="::Callhistory::CallHistory::find">
17736         <webidl>        void find(<ref>CallHistoryEntryArraySuccessCallback</ref> successCallback,
17737                   optional <ref>ErrorCallback</ref>? errorCallback,
17738                   optional <ref>AbstractFilter</ref>? filter,
17739                   optional <ref>SortMode</ref>? sortMode,
17740                   optional unsigned long? limit,
17741                   optional unsigned long? offset) raises(<ref>WebAPIException</ref>);</webidl>
17742         <descriptive>
17743             <brief>
17744  Finds and returns call history.
17745             </brief>
17746            <description>
17747             <p>
17748 The <em>errorCallback()</em> is launched with these error types:
17749             </p>
17750             <ul>
17751               <li>
17752 InvalidValuesError - If any of the input parameters contain an invalid value.              </li>
17753               <li>
17754 UnknownError - If any other error occurs.              </li>
17755             </ul>
17756            </description>
17757             <version>
17758  2.0
17759             </version>
17760             <privilegelevel>
17761  public
17762             </privilegelevel>
17763             <privilege>
17764  http://tizen.org/privilege/callhistory.read
17765             </privilege>
17766             <Code> // Defines success callback
17767  function onSuccess(results) {
17768      console.log(results.length + &quot; call history item(s) found!&quot;);
17769      for (var i=0; i&#60;results.length; i++) {
17770          console.log(i + &quot;. &quot; + results[i].toString()); // process the CallHistoryEntry
17771      }
17772  }
17773
17774  // Defines error callback
17775  function onError(error) {
17776      console.log(&quot;Query failed&quot; + error.name);
17777  }
17778
17779  // Defines filter: list CS calls, most recent first
17780  var filter = new tizen.AttributeFilter(&quot;type&quot;, &quot;EXACTLY&quot;, &quot;TEL&quot;);
17781
17782  // Defines sort mode: descending on call start time.
17783  var sortMode = new tizen.SortMode(&quot;startTime&quot;, &quot;DESC&quot;);
17784
17785  // Makes the query and wire up the callbacks
17786  tizen.callhistory.find(onSuccess,
17787                          onError,
17788                          filter,
17789                          sortMode);
17790
17791  var numberfilter = new tizen.AttributeFilter(
17792                                  &quot;remoteParties.remoteParty&quot;,
17793                                  &quot;EXACTLY&quot;,
17794                                  &quot;123456789&quot;);
17795                    
17796  // Creates a composite filter for time constraints
17797  var y2009Filter = new tizen.AttributeRangeFilter(
17798                                 &quot;startTime&quot;,
17799                                 new Date(2009, 0, 1),
17800                                 new Date(2010, 0, 1));
17801
17802  var y2011Filter = new tizen.AttributeRangeFilter(
17803                                 &quot;startTime&quot;,
17804                                 new Date(2011, 0, 1),
17805                                 new Date(2012, 0, 1));
17806
17807  var datefilter = new tizen.CompositeFilter(&quot;UNION&quot;, [y2009Filter, y2011Filter]);
17808
17809  // Creates a filter to find all video calls (including cellular, skype, etc)
17810  // The filter matches exactly any features from the &quot;features&quot; array
17811  var tfilter = new tizen.AttributeFilter(&quot;features&quot;, &quot;EXACTLY&quot;, &quot;VIDEOCALL&quot;);
17812
17813  // Creates composite filter
17814  var ifilter = new tizen.CompositeFilter(&quot;INTERSECTION&quot;,
17815                                          [numberFilter, dateFilter, tfilter]);
17816
17817  // Makes the query and wire up the callbacks; reuse sortMode
17818  tizen.callhistory.find(onSuccess,
17819                          onError,
17820                          ifilter,
17821                          sortMode);
17822
17823  </Code>
17824         </descriptive>
17825         <Type type="void"/>
17826         <ArgumentList>
17827           <Argument name="successCallback">
17828             <descriptive>
17829                 <description><p>
17830  A handler for query result set.
17831                 </p></description>
17832             </descriptive>
17833             <Type name="CallHistoryEntryArraySuccessCallback"/>
17834           </Argument>
17835           <Argument optional="optional" name="errorCallback">
17836             <descriptive>
17837                 <description><p>
17838  The method to call when an error occurs.
17839                 </p></description>
17840             </descriptive>
17841             <Type name="ErrorCallback" nullable="nullable"/>
17842           </Argument>
17843           <Argument optional="optional" name="filter">
17844             <descriptive>
17845                 <description><p>
17846  A filter defined on <em>CallHistoryEntry </em>attributes. It can be a composite filter.
17847                 </p></description>
17848             </descriptive>
17849             <Type name="AbstractFilter" nullable="nullable"/>
17850           </Argument>
17851           <Argument optional="optional" name="sortMode">
17852             <descriptive>
17853                 <description><p>
17854  The sort order in which call history are return.
17855                 </p></description>
17856             </descriptive>
17857             <Type name="SortMode" nullable="nullable"/>
17858           </Argument>
17859           <Argument optional="optional" name="limit">
17860             <descriptive>
17861                 <description><p>
17862  The maximum limit of query result (It is the same meaning as SQL LIMIT).
17863 If limit is 0, query result is no limit.
17864                 </p></description>
17865             </descriptive>
17866             <Type type="unsigned long" nullable="nullable"/>
17867           </Argument>
17868           <Argument optional="optional" name="offset">
17869             <descriptive>
17870                 <description><p>
17871  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.
17872                 </p></description>
17873             </descriptive>
17874             <Type type="unsigned long" nullable="nullable"/>
17875           </Argument>
17876         </ArgumentList>
17877         <Raises>
17878           <RaiseException name="WebAPIException">
17879             <descriptive>
17880                 <description><p>
17881  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
17882                 </p></description>
17883                 <description><p>
17884  with error type SecurityError, if this functionality is not allowed.
17885                 </p></description>
17886                 <description><p>
17887  with error type NotSupportedError, if the feature is not supported.
17888                 </p></description>
17889             </descriptive>
17890           </RaiseException>
17891         </Raises>
17892       </Operation>
17893       <Operation name="remove" id="::Callhistory::CallHistory::remove">
17894         <webidl>        void remove(<ref>CallHistoryEntry</ref> entry) raises(<ref>WebAPIException</ref>);</webidl>
17895         <descriptive>
17896             <brief>
17897  Removes a call history synchronously.
17898             </brief>
17899             <version>
17900  2.0
17901             </version>
17902             <privilegelevel>
17903  public
17904             </privilegelevel>
17905             <privilege>
17906  http://tizen.org/privilege/callhistory.write
17907             </privilege>
17908             <Code> // Defines success callback
17909  function onSuccess(results) {
17910      if (results.length > 0)
17911          tizen.callhistory.remove(results[0]);
17912  }
17913
17914  // Defines error callback
17915  function onError(error) {
17916      console.log(&quot;Query failed&quot; + error.name);
17917  }
17918
17919  // Makes the query and wires up the callbacks
17920  tizen.callhistory.find(onSuccess, onError);
17921
17922  </Code>
17923         </descriptive>
17924         <Type type="void"/>
17925         <ArgumentList>
17926           <Argument name="entry">
17927             <descriptive>
17928                 <description><p>
17929  Call history entry to be deleted.
17930                 </p></description>
17931             </descriptive>
17932             <Type name="CallHistoryEntry"/>
17933           </Argument>
17934         </ArgumentList>
17935         <Raises>
17936           <RaiseException name="WebAPIException">
17937             <descriptive>
17938                 <description><p>
17939  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
17940                 </p></description>
17941                 <description><p>
17942  with error type InvalidValuesError, if any input parameter contains invalid values.
17943                 </p></description>
17944                 <description><p>
17945  with error type SecurityError, if the application does not have the privilege to call this method.
17946                 </p></description>
17947                 <description><p>
17948  with error type NotSupportedError, if the feature is not supported.
17949                 </p></description>
17950                 <description><p>
17951  with error type UnknownError, if any other error occurs.
17952                 </p></description>
17953             </descriptive>
17954           </RaiseException>
17955         </Raises>
17956       </Operation>
17957       <Operation name="removeBatch" id="::Callhistory::CallHistory::removeBatch">
17958         <webidl>        void removeBatch(<ref>CallHistoryEntry</ref>[] entries,
17959                          optional <ref>SuccessCallback</ref>? successCallback,
17960                          optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
17961         <descriptive>
17962             <brief>
17963  Removes a list of call history asynchronously.
17964             </brief>
17965            <description>
17966             <p>
17967 The <em>errorCallback()</em> is launched with these error types:
17968             </p>
17969             <ul>
17970               <li>
17971 InvalidValuesError - If any of the input parameters contain an invalid value.              </li>
17972               <li>
17973 UnknownError - If any other error occurs.              </li>
17974             </ul>
17975            </description>
17976             <version>
17977  2.0
17978             </version>
17979             <privilegelevel>
17980  public
17981             </privilegelevel>
17982             <privilege>
17983  http://tizen.org/privilege/callhistory.write
17984             </privilege>
17985             <Code> // Defines success callback
17986  function onSuccess(results) {
17987      tizen.callhistory.removeBatch(results);
17988  }
17989
17990  // Defines error callback
17991  function onError(error) {
17992      console.log(&quot;Query failed&quot; + error.name);
17993  }
17994
17995  // Makes the query and wires up the callbacks
17996  tizen.callhistory.find(onSuccess, onError);
17997
17998  </Code>
17999         </descriptive>
18000         <Type type="void"/>
18001         <ArgumentList>
18002           <Argument name="entries">
18003             <descriptive>
18004                 <description><p>
18005  A list of call history entries to delete.
18006                 </p></description>
18007             </descriptive>
18008             <Type type="array">
18009               <Type name="CallHistoryEntry"/>
18010             </Type>
18011           </Argument>
18012           <Argument optional="optional" name="successCallback">
18013             <descriptive>
18014                 <description><p>
18015  A generic success handler.
18016                 </p></description>
18017             </descriptive>
18018             <Type name="SuccessCallback" nullable="nullable"/>
18019           </Argument>
18020           <Argument optional="optional" name="errorCallback">
18021             <descriptive>
18022                 <description><p>
18023  An error handler.
18024                 </p></description>
18025             </descriptive>
18026             <Type name="ErrorCallback" nullable="nullable"/>
18027           </Argument>
18028         </ArgumentList>
18029         <Raises>
18030           <RaiseException name="WebAPIException">
18031             <descriptive>
18032                 <description><p>
18033  with error type TypeMismatchError, if the input parameter is not compatible with the expected type for that parameter.
18034                 </p></description>
18035                 <description><p>
18036  with error type SecurityError, if the application does not have the privilege to call this method. 
18037                 </p></description>
18038                 <description><p>
18039  with error type NotSupportedError, if this feature is not supported.
18040                 </p></description>
18041             </descriptive>
18042           </RaiseException>
18043         </Raises>
18044       </Operation>
18045       <Operation name="removeAll" id="::Callhistory::CallHistory::removeAll">
18046         <webidl>        void removeAll(optional <ref>SuccessCallback</ref>? successCallback,
18047                        optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
18048         <descriptive>
18049             <brief>
18050  Removes all call history asynchronously.
18051             </brief>
18052            <description>
18053             <p>
18054 The <em>errorCallback()</em> is launched with these error types:
18055             </p>
18056             <ul>
18057               <li>
18058 InvalidValuesError - If any of the input parameters contain an invalid value.              </li>
18059               <li>
18060 UnknownError - If any other error occurs.              </li>
18061             </ul>
18062            </description>
18063             <version>
18064  2.0
18065             </version>
18066             <privilegelevel>
18067  public
18068             </privilegelevel>
18069             <privilege>
18070  http://tizen.org/privilege/callhistory.write
18071             </privilege>
18072         </descriptive>
18073         <Type type="void"/>
18074         <ArgumentList>
18075           <Argument optional="optional" name="successCallback">
18076             <descriptive>
18077                 <description><p>
18078  A generic success handler. 
18079                 </p></description>
18080             </descriptive>
18081             <Type name="SuccessCallback" nullable="nullable"/>
18082           </Argument>
18083           <Argument optional="optional" name="errorCallback">
18084             <descriptive>
18085                 <description><p>
18086  An error handler.
18087                 </p></description>
18088             </descriptive>
18089             <Type name="ErrorCallback" nullable="nullable"/>
18090           </Argument>
18091         </ArgumentList>
18092         <Raises>
18093           <RaiseException name="WebAPIException">
18094             <descriptive>
18095                 <description><p>
18096  with error type TypeMismatchError, if the input parameter is not compatible with the expected type for that parameter.
18097                 </p></description>
18098                 <description><p>
18099  with error type SecurityError, if this functionality is not allowed.
18100                 </p></description>
18101                 <description><p>
18102  with error type NotSupportedError, if this feature is not supported.
18103                 </p></description>
18104             </descriptive>
18105           </RaiseException>
18106         </Raises>
18107       </Operation>
18108       <Operation name="addChangeListener" id="::Callhistory::CallHistory::addChangeListener">
18109         <webidl>        long addChangeListener(<ref>CallHistoryChangeCallback</ref> observer) raises(<ref>WebAPIException</ref>);</webidl>
18110         <descriptive>
18111             <brief>
18112  Adds a listener to register for callback to observe call history changes.
18113             </brief>
18114             <version>
18115  2.0
18116             </version>
18117             <privilegelevel>
18118  public
18119             </privilegelevel>
18120             <privilege>
18121  http://tizen.org/privilege/callhistory.read
18122             </privilege>
18123             <Code> var onListenerCB = {
18124      onadded: function(newItems) {
18125          console.log(&quot;New Item added&quot;);
18126          for (var i in newItems) {
18127              console.log(&quot;Item &quot; + i + &quot; startTime: &quot; + newItems[i].startTime);
18128          }
18129      },
18130      onchanged: function(changedItems) {
18131          console.log(&quot;Items changed&quot;);
18132          for (var i in changedItems) {
18133              console.log(&quot;Item &quot; + i + &quot; direction: &quot; + changedItems[i].direction);
18134          }
18135      },
18136      onremoved: function(removedItems) {
18137          console.log(&quot;Items removed&quot;);
18138          for(var i in removedItems)  {
18139             console.log(&quot;Item &quot; + i + &quot; : &quot; + removedItems[i]);
18140          }
18141      }};
18142
18143  try {
18144      // Registers a call history callback
18145      var handle = tizen.callhistory.addChangeListener(onListenerCB);
18146
18147      // Unregisters a previously registered listener
18148      tizen.callhistory.removeChangeListener(handle);
18149  } catch (error) {
18150      console.log(&quot;Exception - code: &quot; + error.name + &quot; message: &quot; + error.message);
18151  }
18152
18153  </Code>
18154         </descriptive>
18155         <Type type="long">
18156           <descriptive>
18157               <description><p>
18158  long A handle which can be used for unregistering.
18159               </p></description>
18160           </descriptive>
18161         </Type>
18162         <ArgumentList>
18163           <Argument name="observer">
18164             <descriptive>
18165                 <description><p>
18166  A callback for handling the list of new or changed or <em>CallHistoryEntry </em>objects in the call history.
18167                 </p></description>
18168             </descriptive>
18169             <Type name="CallHistoryChangeCallback"/>
18170           </Argument>
18171         </ArgumentList>
18172         <Raises>
18173           <RaiseException name="WebAPIException">
18174             <descriptive>
18175                 <description><p>
18176  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
18177                 </p></description>
18178                 <description><p>
18179  with error type InvalidValuesError, if any input parameter contains invalid values.
18180                 </p></description>
18181                 <description><p>
18182  with error type SecurityError, if the application does not have the privilege to call this method.
18183                 </p></description>
18184                 <description><p>
18185  with error type NotSupportedError, if the feature is not supported.
18186                 </p></description>
18187                 <description><p>
18188  with error type UnknownError, if any other error occurs.
18189                 </p></description>
18190             </descriptive>
18191           </RaiseException>
18192         </Raises>
18193       </Operation>
18194       <Operation name="removeChangeListener" id="::Callhistory::CallHistory::removeChangeListener">
18195         <webidl>        void removeChangeListener(long handle) raises(<ref>WebAPIException</ref>);</webidl>
18196         <descriptive>
18197             <brief>
18198  Removes a listener to unregister a previously registered listener.
18199             </brief>
18200             <version>
18201  2.0
18202             </version>
18203             <privilegelevel>
18204  public
18205             </privilegelevel>
18206             <privilege>
18207  http://tizen.org/privilege/callhistory.read
18208             </privilege>
18209         </descriptive>
18210         <Type type="void"/>
18211         <ArgumentList>
18212           <Argument name="handle">
18213             <descriptive>
18214                 <description><p>
18215  The previously obtained listener handle.
18216                 </p></description>
18217             </descriptive>
18218             <Type type="long"/>
18219           </Argument>
18220         </ArgumentList>
18221         <Raises>
18222           <RaiseException name="WebAPIException">
18223             <descriptive>
18224                 <description><p>
18225  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
18226                 </p></description>
18227                 <description><p>
18228  with error type InvalidValuesError, if any input parameter contains invalid values.
18229                 </p></description>
18230                 <description><p>
18231  with error type SecurityError, if the application does not have the privilege to call this method.
18232                 </p></description>
18233                 <description><p>
18234  with error type NotSupportedError, if the feature is not supported.
18235                 </p></description>
18236                 <description><p>
18237  with error type UnknownError, if any other error occurs.
18238                 </p></description>
18239             </descriptive>
18240           </RaiseException>
18241         </Raises>
18242       </Operation>
18243     </Interface>
18244     <Interface name="CallHistoryEntryArraySuccessCallback" id="::Callhistory::CallHistoryEntryArraySuccessCallback">
18245       <webidl>    [Callback=FunctionOnly, NoInterfaceObject] interface CallHistoryEntryArraySuccessCallback {
18246         void onsuccess(<ref>CallHistoryEntry</ref>[] entries);
18247     };</webidl>
18248       <descriptive>
18249           <brief>
18250  This is a callback interface of <em>CallHistory </em>operations.
18251 For example code, see <em>CallHistory </em>interface.
18252           </brief>
18253           <version>
18254  2.0
18255           </version>
18256       </descriptive>
18257       <ExtendedAttributeList>
18258         <ExtendedAttribute name="Callback" value="FunctionOnly">
18259           <webidl>Callback</webidl>
18260         </ExtendedAttribute>
18261         <ExtendedAttribute name="NoInterfaceObject">
18262           <webidl> NoInterfaceObject</webidl>
18263         </ExtendedAttribute>
18264       </ExtendedAttributeList>
18265       <Operation name="onsuccess" id="::Callhistory::CallHistoryEntryArraySuccessCallback::onsuccess">
18266         <webidl>        void onsuccess(<ref>CallHistoryEntry</ref>[] entries);</webidl>
18267         <descriptive>
18268             <brief>
18269  Called when the queries on call history have been successfully completed.
18270             </brief>
18271             <version>
18272  2.0
18273             </version>
18274         </descriptive>
18275         <Type type="void"/>
18276         <ArgumentList>
18277           <Argument name="entries">
18278             <descriptive>
18279                 <description><p>
18280  An array of <em>CallHistoryEntry </em>objects, representing the result set of the query over the call history.
18281                 </p></description>
18282             </descriptive>
18283             <Type type="array">
18284               <Type name="CallHistoryEntry"/>
18285             </Type>
18286           </Argument>
18287         </ArgumentList>
18288       </Operation>
18289     </Interface>
18290     <Interface name="CallHistoryChangeCallback" id="::Callhistory::CallHistoryChangeCallback">
18291       <webidl>    [Callback, NoInterfaceObject]
18292     interface CallHistoryChangeCallback {
18293         void onadded(<ref>CallHistoryEntry</ref>[] newItems);
18294
18295         void onchanged(<ref>CallHistoryEntry</ref>[] changedItems);
18296
18297         void onremoved(DOMString[] removedItems);
18298     };</webidl>
18299       <descriptive>
18300           <brief>
18301  This is a callback interface of a<em> CallHistory </em>operations.
18302 For example code, see <em>CallHistory </em>interface.
18303           </brief>
18304           <version>
18305  2.0
18306           </version>
18307       </descriptive>
18308       <ExtendedAttributeList>
18309         <ExtendedAttribute name="Callback">
18310           <webidl>Callback</webidl>
18311         </ExtendedAttribute>
18312         <ExtendedAttribute name="NoInterfaceObject">
18313           <webidl> NoInterfaceObject</webidl>
18314         </ExtendedAttribute>
18315       </ExtendedAttributeList>
18316       <Operation name="onadded" id="::Callhistory::CallHistoryChangeCallback::onadded">
18317         <webidl>        void onadded(<ref>CallHistoryEntry</ref>[] newItems);</webidl>
18318         <descriptive>
18319             <brief>
18320  Called when a new call history item is added.
18321             </brief>
18322             <version>
18323  2.0
18324             </version>
18325         </descriptive>
18326         <Type type="void"/>
18327         <ArgumentList>
18328           <Argument name="newItems">
18329             <descriptive>
18330                 <description><p>
18331  An array of <em>CallHistoryEntry </em>objects, representing the new items added to call history.
18332                 </p></description>
18333             </descriptive>
18334             <Type type="array">
18335               <Type name="CallHistoryEntry"/>
18336             </Type>
18337           </Argument>
18338         </ArgumentList>
18339       </Operation>
18340       <Operation name="onchanged" id="::Callhistory::CallHistoryChangeCallback::onchanged">
18341         <webidl>        void onchanged(<ref>CallHistoryEntry</ref>[] changedItems);</webidl>
18342         <descriptive>
18343             <brief>
18344  Called when the call history have been changed.
18345             </brief>
18346             <version>
18347  2.0
18348             </version>
18349         </descriptive>
18350         <Type type="void"/>
18351         <ArgumentList>
18352           <Argument name="changedItems">
18353             <descriptive>
18354                 <description><p>
18355  An array of <em>CallHistoryEntry </em>objects, representing the changed items in call history.
18356                 </p></description>
18357             </descriptive>
18358             <Type type="array">
18359               <Type name="CallHistoryEntry"/>
18360             </Type>
18361           </Argument>
18362         </ArgumentList>
18363       </Operation>
18364       <Operation name="onremoved" id="::Callhistory::CallHistoryChangeCallback::onremoved">
18365         <webidl>        void onremoved(DOMString[] removedItems);</webidl>
18366         <descriptive>
18367             <brief>
18368  Called when the call history have been removed.
18369             </brief>
18370             <version>
18371  2.0
18372             </version>
18373         </descriptive>
18374         <Type type="void"/>
18375         <ArgumentList>
18376           <Argument name="removedItems">
18377             <descriptive>
18378                 <description><p>
18379  An array of an uid of <em>CallHistoryEntry </em>objects, representing the removed items in call history.
18380                 </p></description>
18381             </descriptive>
18382             <Type type="array">
18383               <Type type="DOMString"/>
18384             </Type>
18385           </Argument>
18386         </ArgumentList>
18387       </Operation>
18388     </Interface>
18389   </Module>
18390   <Module name="Contact" id="::Contact">
18391     <webidl>module Contact {
18392
18393   typedef DOMString AddressBookId;
18394
18395   typedef DOMString ContactId;
18396
18397   typedef DOMString PersonId;
18398
18399   typedef DOMString ContactGroupId;
18400
18401   enum ContactTextFormat {&quot;VCARD_30&quot;};
18402
18403   [NoInterfaceObject] interface ContactManagerObject {
18404     readonly attribute <ref>ContactManager</ref> contact;
18405   };
18406   <ref>Tizen</ref> implements <ref>ContactManagerObject</ref>;
18407
18408   [NoInterfaceObject] interface ContactManager {
18409
18410     void getAddressBooks(<ref>AddressBookArraySuccessCallback</ref> successCallback,
18411                          optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
18412
18413     <ref>AddressBook</ref> getUnifiedAddressBook() raises(<ref>WebAPIException</ref>);
18414
18415     <ref>AddressBook</ref> getDefaultAddressBook() raises(<ref>WebAPIException</ref>);
18416
18417     <ref>AddressBook</ref> getAddressBook(<ref>AddressBookId</ref> addressBookId) raises(<ref>WebAPIException</ref>);
18418
18419     <ref>Person</ref> get(<ref>PersonId</ref> personId) raises(<ref>WebAPIException</ref>);
18420
18421     void update(<ref>Person</ref> person) raises(<ref>WebAPIException</ref>);
18422
18423     void updateBatch(<ref>Person</ref>[] persons,
18424                      optional <ref>SuccessCallback</ref>? successCallback,
18425                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
18426
18427     void remove(<ref>PersonId</ref> personId) raises(<ref>WebAPIException</ref>);
18428
18429     void removeBatch(<ref>PersonId</ref>[] personIds,
18430                      optional <ref>SuccessCallback</ref>? successCallback,
18431                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
18432
18433     void find(<ref>PersonArraySuccessCallback</ref> successCallback,
18434               optional <ref>ErrorCallback</ref>? errorCallback,
18435               optional <ref>AbstractFilter</ref>? filter,
18436               optional <ref>SortMode</ref>? sortMode) raises(<ref>WebAPIException</ref>);
18437
18438     long addChangeListener(<ref>PersonsChangeCallback</ref> successCallback) raises(<ref>WebAPIException</ref>);
18439
18440     void removeChangeListener(long watchId) raises(<ref>WebAPIException</ref>);
18441   };
18442
18443   [NoInterfaceObject] interface AddressBook {
18444
18445     readonly attribute <ref>AddressBookId</ref>? id;
18446
18447     readonly attribute DOMString name;
18448
18449     readonly attribute boolean readOnly;
18450
18451     <ref>Contact</ref> get(<ref>ContactId</ref> id) raises(<ref>WebAPIException</ref>);
18452
18453     void add(<ref>Contact</ref> contact) raises(<ref>WebAPIException</ref>);
18454
18455     void addBatch(<ref>Contact</ref>[] contacts,
18456                   optional <ref>ContactArraySuccessCallback</ref>? successCallback,
18457                   optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
18458
18459     void update(<ref>Contact</ref> contact) raises(<ref>WebAPIException</ref>);
18460
18461     void updateBatch(<ref>Contact</ref>[] contacts,
18462                      optional <ref>SuccessCallback</ref>? successCallback,
18463                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
18464
18465     void remove(<ref>ContactId</ref> id) raises(<ref>WebAPIException</ref>);
18466
18467     void removeBatch(<ref>ContactId</ref>[] ids,
18468                      optional <ref>SuccessCallback</ref>? successCallback,
18469                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
18470
18471     void find(<ref>ContactArraySuccessCallback</ref> successCallback,
18472               optional <ref>ErrorCallback</ref>? errorCallback,
18473               optional <ref>AbstractFilter</ref>? filter,
18474               optional <ref>SortMode</ref>? sortMode) raises(<ref>WebAPIException</ref>);
18475
18476     long addChangeListener(<ref>AddressBookChangeCallback</ref> successCallback,
18477                            optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
18478
18479     void removeChangeListener(long watchId) raises(<ref>WebAPIException</ref>);
18480
18481     <ref>ContactGroup</ref> getGroup(<ref>ContactGroupId</ref> groupId) raises(<ref>WebAPIException</ref>);
18482
18483     void addGroup(<ref>ContactGroup</ref> group) raises(<ref>WebAPIException</ref>);
18484
18485     void updateGroup(<ref>ContactGroup</ref> group) raises(<ref>WebAPIException</ref>);
18486
18487     void removeGroup(<ref>ContactGroupId</ref> groupId) raises(<ref>WebAPIException</ref>);
18488
18489     <ref>ContactGroup</ref>[] getGroups() raises(<ref>WebAPIException</ref>);
18490   };
18491
18492   [NoInterfaceObject] interface Person {
18493     readonly attribute <ref>PersonId</ref> id;
18494
18495     readonly attribute DOMString displayName;
18496
18497     readonly attribute long contactCount;
18498
18499     readonly attribute boolean hasPhoneNumber;
18500
18501     readonly attribute boolean hasEmail;
18502
18503     attribute boolean isFavorite;
18504
18505     attribute DOMString? photoURI;
18506
18507     attribute DOMString? ringtoneURI;
18508
18509     attribute <ref>ContactId</ref> displayContactId;
18510
18511     void link(<ref>PersonId</ref> personId) raises(<ref>WebAPIException</ref>);
18512
18513     <ref>Person</ref> unlink(<ref>ContactId</ref> contactId) raises(<ref>WebAPIException</ref>);
18514   };
18515
18516   dictionary ContactInit {
18517     <ref>ContactName</ref> name;
18518     <ref>ContactAddress</ref>[] addresses;
18519     DOMString photoURI;
18520     <ref>ContactPhoneNumber</ref>[] phoneNumbers;
18521     <ref>ContactEmailAddress</ref>[] emails;
18522     Date birthday;
18523     <ref>ContactAnniversary</ref>[] anniversaries;
18524     <ref>ContactOrganization</ref>[] organizations;
18525     DOMString[] notes;
18526     <ref>ContactWebSite</ref>[] urls;
18527     DOMString ringtoneURI;
18528     <ref>ContactGroupId</ref>[] groupIds;
18529   };
18530
18531   [Constructor(optional <ref>ContactInit</ref>? ContactInitDict),
18532    Constructor(DOMString stringRepresentation)]
18533   interface Contact {
18534     readonly attribute <ref>ContactId</ref>? id;
18535
18536     readonly attribute <ref>PersonId</ref>? personId;
18537
18538     readonly attribute <ref>AddressBookId</ref>? addressBookId;
18539
18540     readonly attribute Date? lastUpdated;
18541
18542     readonly attribute boolean isFavorite;
18543
18544     attribute <ref>ContactName</ref>? name setraises(<ref>WebAPIException</ref>);
18545
18546     attribute <ref>ContactAddress</ref>[] addresses setraises(<ref>WebAPIException</ref>);
18547
18548     attribute DOMString? photoURI setraises(<ref>WebAPIException</ref>);
18549
18550     attribute <ref>ContactPhoneNumber</ref>[] phoneNumbers setraises(<ref>WebAPIException</ref>);
18551
18552     attribute <ref>ContactEmailAddress</ref>[] emails setraises(<ref>WebAPIException</ref>);
18553
18554     attribute Date? birthday setraises(<ref>WebAPIException</ref>);
18555
18556     attribute <ref>ContactAnniversary</ref>[] anniversaries setraises(<ref>WebAPIException</ref>);
18557
18558     attribute <ref>ContactOrganization</ref>[] organizations setraises(<ref>WebAPIException</ref>);
18559
18560     attribute DOMString[] notes setraises(<ref>WebAPIException</ref>);
18561
18562     attribute <ref>ContactWebSite</ref>[] urls setraises(<ref>WebAPIException</ref>);
18563
18564     attribute DOMString? ringtoneURI setraises(<ref>WebAPIException</ref>);
18565
18566     attribute <ref>ContactGroupId</ref>[] groupIds setraises(<ref>WebAPIException</ref>);
18567
18568     DOMString convertToString(optional <ref>ContactTextFormat</ref>? format) raises(<ref>WebAPIException</ref>);
18569
18570     <ref>Contact</ref> clone() raises(<ref>WebAPIException</ref>);
18571   };
18572
18573   [Constructor(<ref>AddressBookId</ref> addressBookId, <ref>ContactId</ref> contactId)]
18574   interface ContactRef {
18575     attribute <ref>AddressBookId</ref> addressBookId;
18576
18577     attribute <ref>ContactId</ref> contactId;
18578   };
18579
18580   dictionary ContactNameInit {
18581     DOMString prefix;
18582     DOMString suffix;
18583     DOMString firstName;
18584     DOMString middleName;
18585     DOMString lastName;
18586     DOMString[] nicknames;
18587     DOMString phoneticFirstName;
18588     DOMString phoneticLastName;
18589   };
18590
18591   [Constructor(optional <ref>ContactNameInit</ref>? nameInitDict)]
18592   interface ContactName {
18593     attribute DOMString? prefix;
18594
18595     attribute DOMString? suffix;
18596
18597     attribute DOMString? firstName;
18598
18599     attribute DOMString? middleName;
18600
18601     attribute DOMString? lastName;
18602
18603     attribute DOMString[] nicknames;
18604
18605     attribute DOMString? phoneticFirstName;
18606
18607     attribute DOMString? phoneticLastName;
18608
18609     readonly attribute DOMString? displayName;
18610   };
18611
18612   dictionary ContactOrganizationInit {
18613     DOMString name;
18614     DOMString department;
18615     DOMString title;
18616     DOMString role;
18617     DOMString logoURI;
18618   };
18619
18620   [Constructor(optional <ref>ContactOrganizationInit</ref>? orgInitDict)]
18621   interface ContactOrganization {
18622     attribute DOMString? name;
18623
18624     attribute DOMString? department;
18625
18626     attribute DOMString? title;
18627
18628     attribute DOMString? role;
18629
18630     attribute DOMString? logoURI;
18631   };
18632
18633   [Constructor(DOMString url, optional DOMString type)]
18634   interface ContactWebSite
18635   {
18636     attribute DOMString url;
18637
18638     attribute DOMString type;
18639   };
18640
18641   [Constructor(Date date, optional DOMString? label)]
18642   interface ContactAnniversary
18643   {
18644     attribute Date date;
18645
18646     attribute DOMString? label;
18647   };
18648
18649   dictionary ContactAddressInit
18650   {
18651     DOMString country;
18652     DOMString region;
18653     DOMString city;
18654     DOMString streetAddress;
18655     DOMString additionalInformation;
18656     DOMString postalCode;
18657     boolean isDefault;
18658     DOMString[] types;
18659   };
18660
18661   [Constructor(optional <ref>ContactAddressInit</ref>? addressInitDict)]
18662   interface ContactAddress
18663   {
18664     attribute DOMString? country;
18665
18666     attribute DOMString? region;
18667
18668     attribute DOMString? city;
18669
18670     attribute DOMString? streetAddress;
18671
18672     attribute DOMString? additionalInformation;
18673
18674     attribute DOMString? postalCode;
18675
18676     attribute boolean isDefault;
18677
18678     attribute DOMString[] types;
18679   };
18680
18681   [Constructor(DOMString number, optional DOMString[] types, optional boolean isDefault)]
18682   interface ContactPhoneNumber
18683   {
18684     attribute DOMString number;
18685
18686     attribute boolean isDefault;
18687
18688     attribute DOMString[] types;
18689   };
18690
18691   [Constructor(DOMString email, optional DOMString[] types, optional boolean isDefault)]
18692   interface ContactEmailAddress
18693   {
18694     attribute DOMString email;
18695
18696     attribute boolean isDefault;
18697
18698     attribute DOMString[] types;
18699   };
18700
18701   [Constructor(DOMString name, optional DOMString? ringtoneURI, optional DOMString? photoURI)]
18702   interface ContactGroup
18703   {
18704     readonly attribute <ref>ContactGroupId</ref>? id;
18705
18706     readonly attribute <ref>AddressBookId</ref>? addressBookId;
18707
18708     attribute DOMString name;
18709
18710     attribute DOMString? ringtoneURI;
18711
18712     attribute DOMString? photoURI;
18713
18714     readonly attribute DOMString readOnly;
18715   };
18716
18717   [Callback=FunctionOnly, NoInterfaceObject] interface PersonArraySuccessCallback {
18718     void onsuccess(<ref>Person</ref>[] persons);
18719   };
18720
18721   [Callback=FunctionOnly, NoInterfaceObject] interface ContactArraySuccessCallback {
18722     void onsuccess(<ref>Contact</ref>[] contacts);
18723   };
18724
18725   [Callback=FunctionOnly, NoInterfaceObject] interface AddressBookArraySuccessCallback {
18726     void onsuccess(<ref>AddressBook</ref>[] addressbooks);
18727   };
18728
18729   [Callback, NoInterfaceObject] interface AddressBookChangeCallback {
18730     void oncontactsadded(<ref>Contact</ref>[] contacts);
18731
18732     void oncontactsupdated(<ref>Contact</ref>[] contacts);
18733
18734     void oncontactsremoved(<ref>ContactId</ref>[] contactIds);
18735   };
18736
18737   [Callback, NoInterfaceObject] interface PersonsChangeCallback {
18738     void onpersonsadded(<ref>Person</ref>[] persons);
18739
18740     void onpersonsupdated(<ref>Person</ref>[] persons);
18741
18742     void onpersonsremoved(<ref>PersonId</ref>[] personIds);
18743   };
18744 };</webidl>
18745     <descriptive>
18746         <brief>
18747  This API is for managing Address Books.
18748         </brief>
18749        <description>
18750         <p>
18751 A contact is a set of information that describes a contact. The contact contains information, such as phone numbers,
18752 e-mail addresses, etc.
18753         </p>
18754         <p>
18755 <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.
18756         </p>
18757         <p>
18758 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.
18759         </p>
18760         <p>
18761 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.
18762         </p>
18763         <p>
18764 For more information on the Contact features, see <a href="../../org.tizen.web.appprogramming/html/guide/social_guide/contact.htm">Contact Guide</a>.
18765         </p>
18766        </description>
18767         <version>
18768  1.0
18769         </version>
18770     </descriptive>
18771     <Typedef name="AddressBookId" id="::Contact::AddressBookId">
18772       <webidl>  typedef DOMString AddressBookId;</webidl>
18773       <descriptive>
18774           <brief>
18775  The address book identifier.
18776           </brief>
18777           <version>
18778  1.0
18779           </version>
18780       </descriptive>
18781       <Type type="DOMString"/>
18782     </Typedef>
18783     <Typedef name="ContactId" id="::Contact::ContactId">
18784       <webidl>  typedef DOMString ContactId;</webidl>
18785       <descriptive>
18786           <brief>
18787  The contact identifier.
18788           </brief>
18789           <version>
18790  1.0
18791           </version>
18792       </descriptive>
18793       <Type type="DOMString"/>
18794     </Typedef>
18795     <Typedef name="PersonId" id="::Contact::PersonId">
18796       <webidl>  typedef DOMString PersonId;</webidl>
18797       <descriptive>
18798           <brief>
18799  The person identifier.
18800           </brief>
18801           <version>
18802  2.0
18803           </version>
18804       </descriptive>
18805       <Type type="DOMString"/>
18806     </Typedef>
18807     <Typedef name="ContactGroupId" id="::Contact::ContactGroupId">
18808       <webidl>  typedef DOMString ContactGroupId;</webidl>
18809       <descriptive>
18810           <brief>
18811  The group identifier.
18812           </brief>
18813           <version>
18814  2.0
18815           </version>
18816       </descriptive>
18817       <Type type="DOMString"/>
18818     </Typedef>
18819     <Enum name="ContactTextFormat" id="::Contact::ContactTextFormat">
18820       <webidl>  enum ContactTextFormat {&quot;VCARD_30&quot;};</webidl>
18821       <descriptive>
18822           <brief>
18823  An enumerator that indicates the contact format that is used for export.   * The possible values are:
18824           </brief>
18825          <description>
18826           <ul>
18827             <li>
18828 VCARD_30 - vCard v3.0 format            </li>
18829           </ul>
18830           <p>
18831 Currently, vCard v3.0 is the only format supported by the Tizen platform.
18832           </p>
18833          </description>
18834           <version>
18835  1.0
18836           </version>
18837       </descriptive>
18838       <EnumValue stringvalue="VCARD_30">
18839         <webidl>&quot;VCARD_30</webidl>
18840       </EnumValue>
18841     </Enum>
18842     <Interface name="ContactManagerObject" id="::Contact::ContactManagerObject">
18843       <webidl>  [NoInterfaceObject] interface ContactManagerObject {
18844     readonly attribute <ref>ContactManager</ref> contact;
18845   };</webidl>
18846       <descriptive>
18847           <brief>
18848  Defines what is instantiated by the <em>Tizen </em>object from the Tizen Platform.
18849           </brief>
18850          <description>
18851           <p>
18852 There is a <em>tizen.contact </em>object that allows access to the Contact API functionality.
18853           </p>
18854          </description>
18855           <version>
18856  1.0
18857           </version>
18858       </descriptive>
18859       <ExtendedAttributeList>
18860         <ExtendedAttribute name="NoInterfaceObject">
18861           <webidl>NoInterfaceObject</webidl>
18862         </ExtendedAttribute>
18863       </ExtendedAttributeList>
18864       <Attribute readonly="readonly" name="contact" id="::Contact::ContactManagerObject::contact">
18865         <webidl>    readonly attribute <ref>ContactManager</ref> contact;</webidl>
18866         <Type name="ContactManager"/>
18867       </Attribute>
18868     </Interface>
18869     <Implements name1="Tizen" name2="ContactManagerObject">
18870       <webidl>  <ref>Tizen</ref> implements <ref>ContactManagerObject</ref>;</webidl>
18871     </Implements>
18872     <Interface name="ContactManager" id="::Contact::ContactManager">
18873       <webidl>  [NoInterfaceObject] interface ContactManager {
18874
18875     void getAddressBooks(<ref>AddressBookArraySuccessCallback</ref> successCallback,
18876                          optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
18877
18878     <ref>AddressBook</ref> getUnifiedAddressBook() raises(<ref>WebAPIException</ref>);
18879
18880     <ref>AddressBook</ref> getDefaultAddressBook() raises(<ref>WebAPIException</ref>);
18881
18882     <ref>AddressBook</ref> getAddressBook(<ref>AddressBookId</ref> addressBookId) raises(<ref>WebAPIException</ref>);
18883
18884     <ref>Person</ref> get(<ref>PersonId</ref> personId) raises(<ref>WebAPIException</ref>);
18885
18886     void update(<ref>Person</ref> person) raises(<ref>WebAPIException</ref>);
18887
18888     void updateBatch(<ref>Person</ref>[] persons,
18889                      optional <ref>SuccessCallback</ref>? successCallback,
18890                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
18891
18892     void remove(<ref>PersonId</ref> personId) raises(<ref>WebAPIException</ref>);
18893
18894     void removeBatch(<ref>PersonId</ref>[] personIds,
18895                      optional <ref>SuccessCallback</ref>? successCallback,
18896                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
18897
18898     void find(<ref>PersonArraySuccessCallback</ref> successCallback,
18899               optional <ref>ErrorCallback</ref>? errorCallback,
18900               optional <ref>AbstractFilter</ref>? filter,
18901               optional <ref>SortMode</ref>? sortMode) raises(<ref>WebAPIException</ref>);
18902
18903     long addChangeListener(<ref>PersonsChangeCallback</ref> successCallback) raises(<ref>WebAPIException</ref>);
18904
18905     void removeChangeListener(long watchId) raises(<ref>WebAPIException</ref>);
18906   };</webidl>
18907       <descriptive>
18908           <brief>
18909  This interface provides access to the API functionality.
18910           </brief>
18911          <description>
18912           <p>
18913 This interface offers a method to retrieve the address books objects.
18914 The address book objects can be manipulated with the provided functionalities to add, remove, and update the contained information.
18915           </p>
18916          </description>
18917           <version>
18918  1.0
18919           </version>
18920       </descriptive>
18921       <ExtendedAttributeList>
18922         <ExtendedAttribute name="NoInterfaceObject">
18923           <webidl>NoInterfaceObject</webidl>
18924         </ExtendedAttribute>
18925       </ExtendedAttributeList>
18926       <Operation name="getAddressBooks" id="::Contact::ContactManager::getAddressBooks">
18927         <webidl>    void getAddressBooks(<ref>AddressBookArraySuccessCallback</ref> successCallback,
18928                          optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
18929         <descriptive>
18930             <brief>
18931  Gets the available address books.
18932             </brief>
18933            <description>
18934             <p>
18935 If the operation completes successfully, the successCallback must
18936 be invoked with the phone address book and the SIM address book (if any).
18937 Other address books present in the device should also be returned.
18938             </p>
18939             <p>
18940 If no address book is present, the <em>successCallback</em> will be invoked with an empty array.
18941             </p>
18942             <p>
18943 The errorCallback is launched with these error types:
18944             </p>
18945             <ul>
18946               <li>
18947 InvalidValuesError - If the event given in argument is not a recurring event.              </li>
18948               <li>
18949 UnknownError - If any other error occurs while trying to get the address books.              </li>
18950             </ul>
18951            </description>
18952             <version>
18953  1.0
18954             </version>
18955             <privilegelevel>
18956  public
18957             </privilegelevel>
18958             <privilege>
18959  http://tizen.org/privilege/contact.read
18960             </privilege>
18961             <Code>  var addressbook;
18962
18963   // Define the error callback for all the asynchronous calls
18964   function errorCB(err) {
18965     console.log( 'The following error occurred: ' +  err.name);
18966   }
18967
18968   function contactsFoundCB(contacts) {
18969     // The contact has been successfully found
18970     // Let's try to change the first name
18971     contacts[0].name.firstName = 'Jeffrey Ross';
18972     try {
18973       addressbook.update(contacts[0]);
18974     } catch (err) {
18975       console.log( 'The following error occurred while updating: ' +  err.name);
18976     }
18977     console.log('First contact was updated');
18978   }
18979
18980   // Define the success callback for retrieving all the
18981   // Address Books
18982   function addressBooksCB(addressbooks) {
18983     if(addressbooks.length > 0) {
18984       addressbook = addressbooks[0];
18985       console.log('The addressbook type is ' + addressbook.type +
18986             ' and name ' + addressbook.name);
18987
18988       var contact = new tizen.Contact(
18989                          {name: new tizen.ContactName({firstName:'Jeffrey',
18990                                  lastName:'Hyman',
18991                                  nicknames:['joey ramone']}),
18992                           emails:[new tizen.ContactEmailAddress('user@domain.com')],
18993                           phoneNumbers:[new tizen.ContactPhoneNumber('123456789')]});
18994
18995       addressbook.add(contact);
18996
18997       // The contact has been successfully added
18998       // Checks whether the added contact can be retrieved from the address book or not.
18999       // If the address book is empty, only the item added through saveContact
19000       // should be returned
19001       var filter = new tizen.AttributeFilter('name.firstName', 'CONTAINS', 'Jeffrey');
19002       try {
19003         addressbook.find(contactsFoundCB, errorCB, filter);
19004       } catch (err) {
19005         console.log( 'The following error occurred while finding: ' +  err.name);
19006       }
19007     }
19008   }
19009
19010   // Get a list of available address books.
19011   tizen.contact.getAddressBooks(addressBooksCB, errorCB);
19012  </Code>
19013         </descriptive>
19014         <Type type="void"/>
19015         <ArgumentList>
19016           <Argument name="successCallback">
19017             <descriptive>
19018                 <description><p>
19019  The method to call when the invocation ends successfully.
19020                 </p></description>
19021             </descriptive>
19022             <Type name="AddressBookArraySuccessCallback"/>
19023           </Argument>
19024           <Argument optional="optional" name="errorCallback">
19025             <descriptive>
19026                 <description><p>
19027  The method to call when an error occurs.
19028                 </p></description>
19029             </descriptive>
19030             <Type name="ErrorCallback" nullable="nullable"/>
19031           </Argument>
19032         </ArgumentList>
19033         <Raises>
19034           <RaiseException name="WebAPIException">
19035             <descriptive>
19036                 <description><p>
19037  with error type TypeMismatchError, if any input parameter
19038 is not compatible with the expected type for that parameter.
19039                 </p></description>
19040                 <description><p>
19041  with error type SecurityError, if the application does not have the privilege to call this method.
19042                 </p></description>
19043                 <description><p>
19044  with error type NotSupportedError, if the feature
19045 is not supported.
19046                 </p></description>
19047             </descriptive>
19048           </RaiseException>
19049         </Raises>
19050       </Operation>
19051       <Operation name="getUnifiedAddressBook" id="::Contact::ContactManager::getUnifiedAddressBook">
19052         <webidl>    <ref>AddressBook</ref> getUnifiedAddressBook() raises(<ref>WebAPIException</ref>);</webidl>
19053         <descriptive>
19054             <brief>
19055  Gets the aggregation of all address books.
19056             </brief>
19057            <description>
19058             <p>
19059 The unified address book is a logical address book that represents an aggregation of all address books
19060 that are obtained by getAddressBooks() and contains all contacts in the address books.
19061 Note that the unified address book does not have an address book ID
19062 and it is set to <var>null</var>.
19063             </p>
19064            </description>
19065             <version>
19066  2.1
19067             </version>
19068             <privilegelevel>
19069  public
19070             </privilegelevel>
19071             <privilege>
19072  http://tizen.org/privilege/contact.read
19073             </privilege>
19074             <Code>  var addressbook;
19075
19076   // Define the error callback
19077   function errorCB(err) {
19078     console.log( 'The following error occurred: ' +  err.name);
19079   }
19080
19081   function contactsFoundCB(contacts) {
19082     // The contact has been successfully found
19083     // Let's try to change the first name
19084     contacts[0].name.firstName = 'Jeffrey Ross';
19085     try {
19086       addressbook.update(contacts[0]);
19087       console.log('First contact was updated');
19088     } catch (err) {
19089       console.log( 'The following error occurred while updating: ' +  err.name);
19090     }
19091   }
19092
19093   // Get unified address book.
19094   addressbook = tizen.contact.getUnifiedAddressBook();
19095
19096   // Add a new contact
19097   var contact = new tizen.Contact(
19098                      {name: new tizen.ContactName({firstName:'Jeffrey',
19099                              lastName:'Hyman',
19100                              nicknames:['joey ramone']}),
19101                       emails:[new tizen.ContactEmailAddress('user@domain.com')],
19102                       phoneNumbers:[new tizen.ContactPhoneNumber('123456789')]});
19103
19104   try {
19105     addressbook.add(contact);
19106   } catch (err) {
19107     console.log( 'The following error occurred while adding: ' +  err.name);
19108   }
19109
19110   // The contact has been successfully added
19111   // Let's try to check if we can retrieve the added
19112   // contact from the address book. If the address book
19113   // was empty only the item added through saveContact should
19114   // be returned
19115   var filter = new tizen.AttributeFiilter('name.firstName', 'CONTAINS', 'Jeffrey');
19116   try {
19117     addressbook.find(contactsFoundCB, errorCB, filter);
19118   } catch (err) {
19119     console.log( 'The following error occurred while finding: ' +  err.name);
19120   }
19121  </Code>
19122         </descriptive>
19123         <Type name="AddressBook">
19124           <descriptive>
19125               <description><p>
19126  AddressBook The unified AddressBook object.
19127               </p></description>
19128           </descriptive>
19129         </Type>
19130         <ArgumentList/>
19131         <Raises>
19132           <RaiseException name="WebAPIException">
19133             <descriptive>
19134                 <description><p>
19135  with error type SecurityError, if the application does not have the privilege to call this method.
19136                 </p></description>
19137                 <description><p>
19138  with error type NotSupportedError, if the feature
19139 is not supported.
19140                 </p></description>
19141                 <description><p>
19142  with error type UnknownError in any other error case.
19143                 </p></description>
19144             </descriptive>
19145           </RaiseException>
19146         </Raises>
19147       </Operation>
19148       <Operation name="getDefaultAddressBook" id="::Contact::ContactManager::getDefaultAddressBook">
19149         <webidl>    <ref>AddressBook</ref> getDefaultAddressBook() raises(<ref>WebAPIException</ref>);</webidl>
19150         <descriptive>
19151             <brief>
19152  Gets the default address book.
19153             </brief>
19154            <description>
19155             <p>
19156 The default address book is the appointed addressbook from platform or operator.
19157 This is one of addressBooks and it has the address book ID.
19158             </p>
19159             <p>
19160 If the operation completes successfully, it must return the
19161 default address book.
19162             </p>
19163            </description>
19164             <version>
19165  1.0
19166             </version>
19167             <privilegelevel>
19168  public
19169             </privilegelevel>
19170             <privilege>
19171  http://tizen.org/privilege/contact.read
19172             </privilege>
19173             <Code>  var addressbook;
19174
19175   // Define the error callback
19176   function errorCB(err) {
19177     console.log( 'The following error occurred: ' +  err.name);
19178   }
19179
19180   function contactsFoundCB(contacts) {
19181     // The contact has been successfully found
19182     // Let's try to change the first name
19183     contacts[0].name.firstName = 'Jeffrey Ross';
19184     try {
19185       addressbook.update(contacts[0]);
19186       console.log('First contact was updated');
19187     } catch (err) {
19188       console.log( 'The following error occurred while updating: ' +  err.name);
19189     }
19190   }
19191
19192   // Get default address book.
19193   addressbook = tizen.contact.getDefaultAddressBook();
19194
19195   // Add a new contact
19196   var contact = new tizen.Contact(
19197                      {name: new tizen.ContactName({firstName:'Jeffrey',
19198                              lastName:'Hyman',
19199                              nicknames:['joey ramone']}),
19200                       emails:[new tizen.ContactEmailAddress('user@domain.com')],
19201                       phoneNumbers:[new tizen.ContactPhoneNumber('123456789')]});
19202
19203   try {
19204     addressbook.add(contact);
19205   } catch (err) {
19206     console.log( 'The following error occurred while adding: ' +  err.name);
19207   }
19208
19209   // The contact has been successfully added
19210   // Checks whether the added contact can be retrieved from the address book or not.
19211   // If the address book is empty, only the item added
19212   // through em>saveContact /em>should be returned
19213   var filter = new tizen.AttributeFiilter('name.firstName', 'CONTAINS', 'Jeffrey');
19214   try {
19215     addressbook.find(contactsFoundCB, errorCB, filter);
19216   } catch (err) {
19217     console.log( 'The following error occurred while finding: ' +  err.name);
19218   }
19219  </Code>
19220         </descriptive>
19221         <Type name="AddressBook">
19222           <descriptive>
19223               <description><p>
19224  AddressBook The default AddressBook object.
19225               </p></description>
19226           </descriptive>
19227         </Type>
19228         <ArgumentList/>
19229         <Raises>
19230           <RaiseException name="WebAPIException">
19231             <descriptive>
19232                 <description><p>
19233  with error type SecurityError, if the application does not have the privilege to call this method.
19234                 </p></description>
19235                 <description><p>
19236  with error type NotSupportedError, if the feature
19237 is not supported.
19238                 </p></description>
19239                 <description><p>
19240  with error type UnknownError in any other error case.
19241                 </p></description>
19242             </descriptive>
19243           </RaiseException>
19244         </Raises>
19245       </Operation>
19246       <Operation name="getAddressBook" id="::Contact::ContactManager::getAddressBook">
19247         <webidl>    <ref>AddressBook</ref> getAddressBook(<ref>AddressBookId</ref> addressBookId) raises(<ref>WebAPIException</ref>);</webidl>
19248         <descriptive>
19249             <brief>
19250  Gets the address book with the specified identifier.
19251             </brief>
19252            <description>
19253             <p>
19254 If the operation completes successfully, it must return the
19255 address book with the specified identifier.
19256             </p>
19257            </description>
19258             <version>
19259  1.0
19260             </version>
19261             <privilegelevel>
19262  public
19263             </privilegelevel>
19264             <privilege>
19265  http://tizen.org/privilege/contact.read
19266             </privilege>
19267             <Code> var contactRef; // ContactRef supposed to be initialized
19268  try {
19269    // Retrieves the Contact corresponding to a given ContactRef.
19270    var addressBook = tizen.contact.getAddressBook(contactRef.addressBookId);
19271    var contact = addressBook.get(contactRef.contactId);
19272    console.log(&quot;Successfully resolved contact with id: &quot; + contactRef.contactId);
19273  } catch(err) {
19274    console.log(&quot;Error: &quot; + err.name);
19275  }
19276  </Code>
19277         </descriptive>
19278         <Type name="AddressBook">
19279           <descriptive>
19280               <description><p>
19281  AddressBook The matching AddressBook object.
19282               </p></description>
19283           </descriptive>
19284         </Type>
19285         <ArgumentList>
19286           <Argument name="addressBookId">
19287             <descriptive>
19288                 <description><p>
19289  The address book identifier.
19290                 </p></description>
19291             </descriptive>
19292             <Type name="AddressBookId"/>
19293           </Argument>
19294         </ArgumentList>
19295         <Raises>
19296           <RaiseException name="WebAPIException">
19297             <descriptive>
19298                 <description><p>
19299  with error type NotFoundError, if there is no address book
19300 with the given identifier.
19301                 </p></description>
19302                 <description><p>
19303  with error type TypeMismatchError, if any input parameter
19304 is not compatible with the expected type for that parameter.
19305                 </p></description>
19306                 <description><p>
19307  with error type InvalidValuesError, if any of the input
19308 parameters contain an invalid value.
19309                 </p></description>
19310                 <description><p>
19311  with error type SecurityError, if the application does not have the privilege to call this method.
19312                 </p></description>
19313                 <description><p>
19314  with error type NotSupportedError, if the feature
19315 is not supported.
19316                 </p></description>
19317                 <description><p>
19318  with error type UnknownError in any other error case.
19319                 </p></description>
19320             </descriptive>
19321           </RaiseException>
19322         </Raises>
19323       </Operation>
19324       <Operation name="get" id="::Contact::ContactManager::get">
19325         <webidl>    <ref>Person</ref> get(<ref>PersonId</ref> personId) raises(<ref>WebAPIException</ref>);</webidl>
19326         <descriptive>
19327             <brief>
19328  Gets the person with the specified identifier.
19329             </brief>
19330            <description>
19331             <p>
19332 If the operation completes successfully, it must return the
19333 person with the specified identifier.
19334             </p>
19335            </description>
19336             <version>
19337  2.0
19338             </version>
19339             <privilegelevel>
19340  public
19341             </privilegelevel>
19342             <privilege>
19343  http://tizen.org/privilege/contact.read
19344             </privilege>
19345             <Code> var contactRef; // ContactRef supposed to be initialized
19346  try {
19347    // Retrieves the Person corresponding to a Contact.
19348    var addressBook = tizen.contact.getAddressBook(contactRef.addressBookId);
19349    var contact = addressBook.get(contactRef.contactId);
19350    var person = tizen.contact.get(contact.personId);
19351    console.log(&quot;Successfully resolved person with id: &quot; + contact.personId);
19352  } catch(err) {
19353    console.log(&quot;Error: &quot; + err.name);
19354  }
19355  </Code>
19356         </descriptive>
19357         <Type name="Person">
19358           <descriptive>
19359               <description><p>
19360  Person The matching Person object.
19361               </p></description>
19362           </descriptive>
19363         </Type>
19364         <ArgumentList>
19365           <Argument name="personId">
19366             <descriptive>
19367                 <description><p>
19368  The Person identifier.
19369                 </p></description>
19370             </descriptive>
19371             <Type name="PersonId"/>
19372           </Argument>
19373         </ArgumentList>
19374         <Raises>
19375           <RaiseException name="WebAPIException">
19376             <descriptive>
19377                 <description><p>
19378  with error type NotFoundError, if there is no person
19379 with the given identifier.
19380                 </p></description>
19381                 <description><p>
19382  with error type TypeMismatchError, if any input parameter
19383 is not compatible with the expected type for that parameter.
19384                 </p></description>
19385                 <description><p>
19386  with error type InvalidValuesError, if any of the input
19387 parameters contain an invalid value.
19388                 </p></description>
19389                 <description><p>
19390  with error type SecurityError, if the application does not have the privilege to call this method.
19391                 </p></description>
19392                 <description><p>
19393  with error type NotSupportedError, if the feature
19394 is not supported.
19395                 </p></description>
19396                 <description><p>
19397  with error type UnknownError in any other error case.
19398                 </p></description>
19399             </descriptive>
19400           </RaiseException>
19401         </Raises>
19402       </Operation>
19403       <Operation name="update" id="::Contact::ContactManager::update">
19404         <webidl>    void update(<ref>Person</ref> person) raises(<ref>WebAPIException</ref>);</webidl>
19405         <descriptive>
19406             <brief>
19407  Updates a person in the address book synchronously.
19408             </brief>
19409             <version>
19410  2.0
19411             </version>
19412             <privilegelevel>
19413  public
19414             </privilegelevel>
19415             <privilege>
19416  http://tizen.org/privilege/contact.write
19417             </privilege>
19418             <Code>  // Define the error callback
19419   function errorCB(err) {
19420     console.log( 'The following error occurred: ' +  err.name);
19421   }
19422
19423   function personsFoundCB(persons) {
19424     // The person has been successfully found
19425     // Let's try to change the isFavorite attribute
19426     persons[0].isFavorite = true;
19427     try {
19428       tizen.contact.update(persons[0]);
19429       console.log('First person was updated');
19430     } catch (err) {
19431       console.log( 'The following error occurred while updating: ' +  err.name);
19432     }
19433   }
19434
19435   try {
19436     tizen.contact.find(personsFoundCB, errorCB);
19437   } catch (err) {
19438     console.log( 'The following error occurred while finding: ' +  err.name);
19439   }
19440  </Code>
19441         </descriptive>
19442         <Type type="void"/>
19443         <ArgumentList>
19444           <Argument name="person">
19445             <descriptive>
19446                 <description><p>
19447  The person object to be updated.
19448                 </p></description>
19449             </descriptive>
19450             <Type name="Person"/>
19451           </Argument>
19452         </ArgumentList>
19453         <Raises>
19454           <RaiseException name="WebAPIException">
19455             <descriptive>
19456                 <description><p>
19457  with error type NotFoundError, if the identifier does not match.
19458                 </p></description>
19459                 <description><p>
19460  with error type TypeMismatchError, if any input parameter
19461 is not compatible with the expected type for that parameter.
19462                 </p></description>
19463                 <description><p>
19464  with error type InvalidValuesError, if any input parameter
19465 contains invalid values.
19466                 </p></description>
19467                 <description><p>
19468  with error type SecurityError, if the application does not have the privilege to call this method.
19469                 </p></description>
19470                 <description><p>
19471  with error type NotSupportedError, if the feature
19472 is not supported.
19473                 </p></description>
19474                 <description><p>
19475  with error type UnknownError, if the person could not be updated
19476 to an unknown error.
19477                 </p></description>
19478             </descriptive>
19479           </RaiseException>
19480         </Raises>
19481       </Operation>
19482       <Operation name="updateBatch" id="::Contact::ContactManager::updateBatch">
19483         <webidl>    void updateBatch(<ref>Person</ref>[] persons,
19484                      optional <ref>SuccessCallback</ref>? successCallback,
19485                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
19486         <descriptive>
19487             <brief>
19488  Updates several existing persons in the contact DB asynchronously.
19489             </brief>
19490            <description>
19491             <p>
19492 The <em>errorCallback()</em> is launched with these error types:
19493             </p>
19494             <ul>
19495               <li>
19496 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>
19497               <li>
19498 InvalidValuesError - If any of the input parameters contain an invalid value.              </li>
19499               <li>
19500 UnknownError - If any other error occurs, while trying to add the persons.              </li>
19501             </ul>
19502             <p>
19503 If the details of any persons cannot be updated, the error callback function that was passed in the invocation will be called.
19504             </p>
19505            </description>
19506             <version>
19507  2.0
19508             </version>
19509             <privilegelevel>
19510  public
19511             </privilegelevel>
19512             <privilege>
19513  http://tizen.org/privilege/contact.write
19514             </privilege>
19515             <Code>  // Define the error callback for all the asynchronous calls
19516   function errorCB(err) {
19517     console.log('The following error occurred: ' +  err.name);
19518   }
19519
19520   function personsUpdatedCB() {
19521     console.log('Contacts were updated');
19522   }
19523
19524   function personsFoundCB(persons) {
19525     // The person has been successfully found
19526     for(var i = 0; i &#60; persons.length; i++) {
19527       persons[i].isFavorite = true;
19528     }
19529     try {
19530       tizen.contact.updateBatch(persons, personsUpdatedCB, errorCB);
19531     } catch (err) {
19532       console.log('The following error occurred while updating: ' +  err.name);
19533     }
19534   }
19535
19536   try {
19537     tizen.contact.find(personsFoundCB, errorCB);
19538   } catch (err) {
19539     console.log('The following error occurred while finding: ' +  err.name);
19540   }
19541  </Code>
19542         </descriptive>
19543         <Type type="void"/>
19544         <ArgumentList>
19545           <Argument name="persons">
19546             <descriptive>
19547                 <description><p>
19548  A list of Person objects to be saved in the terminal storage.
19549                 </p></description>
19550             </descriptive>
19551             <Type type="array">
19552               <Type name="Person"/>
19553             </Type>
19554           </Argument>
19555           <Argument optional="optional" name="successCallback">
19556             <descriptive>
19557                 <description><p>
19558  The method to call when the invocation ends successfully.
19559                 </p></description>
19560             </descriptive>
19561             <Type name="SuccessCallback" nullable="nullable"/>
19562           </Argument>
19563           <Argument optional="optional" name="errorCallback">
19564             <descriptive>
19565                 <description><p>
19566  The method to call when the request to update the details of a person fail.
19567                 </p></description>
19568             </descriptive>
19569             <Type name="ErrorCallback" nullable="nullable"/>
19570           </Argument>
19571         </ArgumentList>
19572         <Raises>
19573           <RaiseException name="WebAPIException">
19574             <descriptive>
19575                 <description><p>
19576  with error type TypeMismatchError, if the input parameter
19577 is not compatible with the expected type for that parameter.
19578                 </p></description>
19579                 <description><p>
19580  with error type SecurityError, if the application does not have the privilege to call this method.
19581                 </p></description>
19582                 <description><p>
19583  with error type NotSupportedError, if this feature is not supported.
19584                 </p></description>
19585             </descriptive>
19586           </RaiseException>
19587         </Raises>
19588       </Operation>
19589       <Operation name="remove" id="::Contact::ContactManager::remove">
19590         <webidl>    void remove(<ref>PersonId</ref> personId) raises(<ref>WebAPIException</ref>);</webidl>
19591         <descriptive>
19592             <brief>
19593  Removes a person from the contact DB synchronously.
19594             </brief>
19595            <description>
19596             <p>
19597 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.
19598             </p>
19599            </description>
19600             <version>
19601  2.0
19602             </version>
19603             <privilegelevel>
19604  public
19605             </privilegelevel>
19606             <privilege>
19607  http://tizen.org/privilege/contact.write
19608             </privilege>
19609             <Code>  // Define the error callback
19610   function errorCB(err) {
19611     console.log('The following error occurred: ' +  err.name);
19612   }
19613
19614   function personsFoundCB(persons) {
19615     // The person has been successfully found
19616     if(persons.length > 0) {
19617       try {
19618         tizen.contact.remove(persons[0].id);
19619         console.log('First person was removed');
19620       } catch (err) {
19621         console.log('The following error occurred while removing: ' +  err.name);
19622       }
19623     } else {
19624       console.log( 'No persons.');
19625     }
19626   }
19627
19628   try {
19629     tizen.contact.find(personsFoundCB, errorCB);
19630   } catch (err) {
19631     console.log( 'The following error occurred while finding: ' +  err.name);
19632   }
19633  </Code>
19634         </descriptive>
19635         <Type type="void"/>
19636         <ArgumentList>
19637           <Argument name="personId">
19638             <descriptive>
19639                 <description><p>
19640  An identifier (ID attribute) of the Person object to delete.
19641                 </p></description>
19642             </descriptive>
19643             <Type name="PersonId"/>
19644           </Argument>
19645         </ArgumentList>
19646         <Raises>
19647           <RaiseException name="WebAPIException">
19648             <descriptive>
19649                 <description><p>
19650  with error type NotFoundError, if the identifier does not match
19651 any persons.
19652                 </p></description>
19653                 <description><p>
19654  with error type TypeMismatchError, if any input parameter
19655 is not compatible with the expected type for that parameter.
19656                 </p></description>
19657                 <description><p>
19658  with error type InvalidValuesError, if any input parameter
19659 contains invalid values.
19660                 </p></description>
19661                 <description><p>
19662  with error type SecurityError, if the application does not have the privilege to call this method.
19663                 </p></description>
19664                 <description><p>
19665  with error type NotSupportedError, if the feature
19666 is not supported.
19667                 </p></description>
19668                 <description><p>
19669  with error type UnknownError, if the person could not be removed
19670 to an unknown error.
19671                 </p></description>
19672             </descriptive>
19673           </RaiseException>
19674         </Raises>
19675       </Operation>
19676       <Operation name="removeBatch" id="::Contact::ContactManager::removeBatch">
19677         <webidl>    void removeBatch(<ref>PersonId</ref>[] personIds,
19678                      optional <ref>SuccessCallback</ref>? successCallback,
19679                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
19680         <descriptive>
19681             <brief>
19682  Removes persons from contact DB asynchronously.
19683             </brief>
19684            <description>
19685             <p>
19686 Removes the persons that correspond to the specified identifiers as well as the contacts related to them.
19687             </p>
19688             <p>
19689 The <em>errorCallback() </em>is launched with these error types:
19690             </p>
19691             <ul>
19692               <li>
19693 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>
19694               <li>
19695 InvalidValuesError - If any of the input parameters contain an invalid value.              </li>
19696               <li>
19697 UnknownError - If any other error occurs while trying to remove the persons.              </li>
19698             </ul>
19699            </description>
19700             <version>
19701  2.0
19702             </version>
19703             <privilegelevel>
19704  public
19705             </privilegelevel>
19706             <privilege>
19707  http://tizen.org/privilege/contact.write
19708             </privilege>
19709             <Code>  // Define the error callback
19710   function errorCB(err) {
19711     console.log( 'The following error occurred: ' +  err.name);
19712   }
19713
19714   function personsRemovedCB() {
19715     console.log('Contacts were removed');
19716   }
19717
19718   function personsFoundCB(persons) {
19719     // The person has been successfully found
19720     if(persons.length > 2) {
19721       try {
19722         tizen.contact.removeBatch([persons[0].id, persons[1].id], personsRemovedCB, errorCB);
19723       } catch (err) {
19724         console.log( 'The following error occurred while removing: ' +  err.name);
19725       }
19726     } else {
19727       console.log( 'Not enough persons.');
19728     }
19729   }
19730
19731   try {
19732     tizen.contact.find(personsFoundCB, errorCB);
19733   } catch (err) {
19734     console.log( 'The following error occurred while finding: ' +  err.name);
19735   }
19736  </Code>
19737         </descriptive>
19738         <Type type="void"/>
19739         <ArgumentList>
19740           <Argument name="personIds">
19741             <descriptive>
19742                 <description><p>
19743  A list of identifiers (id attribute) for the Person objects to delete.
19744                 </p></description>
19745             </descriptive>
19746             <Type type="array">
19747               <Type name="PersonId"/>
19748             </Type>
19749           </Argument>
19750           <Argument optional="optional" name="successCallback">
19751             <descriptive>
19752                 <description><p>
19753  The method to call when the invocation ends successfully.
19754                 </p></description>
19755             </descriptive>
19756             <Type name="SuccessCallback" nullable="nullable"/>
19757           </Argument>
19758           <Argument optional="optional" name="errorCallback">
19759             <descriptive>
19760                 <description><p>
19761  The method to call when the request to delete persons fails.
19762                 </p></description>
19763             </descriptive>
19764             <Type name="ErrorCallback" nullable="nullable"/>
19765           </Argument>
19766         </ArgumentList>
19767         <Raises>
19768           <RaiseException name="WebAPIException">
19769             <descriptive>
19770                 <description><p>
19771  with error type TypeMismatchError, if any input parameter
19772 is not compatible with the expected type for that parameter.
19773                 </p></description>
19774                 <description><p>
19775  with error type SecurityError, if the application does not have the privilege to call this method.
19776                 </p></description>
19777                 <description><p>
19778  with error type NotSupportedError, if the feature
19779 is not supported.
19780                 </p></description>
19781             </descriptive>
19782           </RaiseException>
19783         </Raises>
19784       </Operation>
19785       <Operation name="find" id="::Contact::ContactManager::find">
19786         <webidl>    void find(<ref>PersonArraySuccessCallback</ref> successCallback,
19787               optional <ref>ErrorCallback</ref>? errorCallback,
19788               optional <ref>AbstractFilter</ref>? filter,
19789               optional <ref>SortMode</ref>? sortMode) raises(<ref>WebAPIException</ref>);</webidl>
19790         <descriptive>
19791             <brief>
19792  Gets an array of all <em>Person </em>objects from the contact DB or the ones that match the optionally supplied filter.
19793             </brief>
19794            <description>
19795             <p>
19796 If the filter is passed and contains valid values, only those values in the
19797 address book that match the filter criteria as specified in the AbstractFilter
19798 interface will be returned in the successCallback. If no filter is passed, the filter
19799 contains any invalid values, the filter is <var>null </var> or undefined, then
19800 the implementation must return the full list of contact items
19801 in the successCallback. If no persons are available in the contact DB or no
19802 person matches the filter criteria, the successCallback will be invoked
19803 with an empty array.
19804             </p>
19805             <p>
19806 The <em>errorCallback() </em>is launched with these error types:
19807             </p>
19808             <ul>
19809               <li>
19810 InvalidValuesError - If any of the input parameters contain an invalid value.              </li>
19811               <li>
19812 UnknownError - If any other error occurs while trying to retrieve the persons.              </li>
19813             </ul>
19814            </description>
19815             <version>
19816  2.0
19817             </version>
19818             <privilegelevel>
19819  public
19820             </privilegelevel>
19821             <privilege>
19822  http://tizen.org/privilege/contact.read
19823             </privilege>
19824             <Code>  // Define the error callback.
19825   function errorCB(err) {
19826     console.log( 'The following error occurred: ' +  err.name);
19827   }
19828
19829   // Define the person search success callback.
19830   function personsFoundCB(persons) {
19831     console.log(persons.length + ' results found.');
19832   }
19833
19834   // Finds all the persons in the contact DB that have the word Ramone in their display name
19835   var filter = new tizen.AttributeFilter('displayName', 'CONTAINS', 'Ramone');
19836
19837   // The persons returned by the find() query will be sorted in the ascending order of their display name.
19838   var sortingMode =  new tizen.SortMode('displayName', 'ASC');
19839   try {
19840     tizen.contact.find(personsFoundCB, errorCB,
19841                      filter, sortingMode);
19842   } catch (err) {
19843     console.log( 'The following error occurred while finding: ' +  err.name);
19844   }
19845  </Code>
19846         </descriptive>
19847         <Type type="void"/>
19848         <ArgumentList>
19849           <Argument name="successCallback">
19850             <descriptive>
19851                 <description><p>
19852  The method to call when the invocation ends successfully.
19853                 </p></description>
19854             </descriptive>
19855             <Type name="PersonArraySuccessCallback"/>
19856           </Argument>
19857           <Argument optional="optional" name="errorCallback">
19858             <descriptive>
19859                 <description><p>
19860  The method to call when an error occurs.
19861                 </p></description>
19862             </descriptive>
19863             <Type name="ErrorCallback" nullable="nullable"/>
19864           </Argument>
19865           <Argument optional="optional" name="filter">
19866             <descriptive>
19867                 <description><p>
19868  A filter to select which persons are returned.
19869                 </p></description>
19870             </descriptive>
19871             <Type name="AbstractFilter" nullable="nullable"/>
19872           </Argument>
19873           <Argument optional="optional" name="sortMode">
19874             <descriptive>
19875                 <description><p>
19876  A variable to determine the sort order in which the persons are returned.
19877                 </p></description>
19878             </descriptive>
19879             <Type name="SortMode" nullable="nullable"/>
19880           </Argument>
19881         </ArgumentList>
19882         <Raises>
19883           <RaiseException name="WebAPIException">
19884             <descriptive>
19885                 <description><p>
19886  with error type TypeMismatchError, if any input parameter
19887 is not compatible with the expected type for that parameter.
19888                 </p></description>
19889                 <description><p>
19890  with error type SecurityError, if the application does not have the privilege to call this method.
19891                 </p></description>
19892                 <description><p>
19893  with error type NotSupportedError, if the feature
19894 is not supported.
19895                 </p></description>
19896             </descriptive>
19897           </RaiseException>
19898         </Raises>
19899       </Operation>
19900       <Operation name="addChangeListener" id="::Contact::ContactManager::addChangeListener">
19901         <webidl>    long addChangeListener(<ref>PersonsChangeCallback</ref> successCallback) raises(<ref>WebAPIException</ref>);</webidl>
19902         <descriptive>
19903             <brief>
19904  Subscribes to receive notifications about persons' changes.
19905             </brief>
19906            <description>
19907             <p>
19908 When executed, the implementation must immediately return a subscription identifier that identifies
19909 the watch operation. After returning the identifier, the watch operation is started
19910 asynchronously.
19911             </p>
19912            </description>
19913             <version>
19914  2.0
19915             </version>
19916             <privilegelevel>
19917  public
19918             </privilegelevel>
19919             <privilege>
19920  http://tizen.org/privilege/contact.read
19921             </privilege>
19922             <Code> var watcherId = 0; // watcher identifier
19923
19924  var watcher = {
19925    onpersonsadded: function(persons) {
19926      console.log(persons.length + ' persons were added');
19927    },
19928    onpersonsupdated: function(persons) {
19929      console.log(persons.length + ' persons were updated');
19930    },
19931    onpersonsremoved: function(ids) {
19932      console.log(ids.length + ' persons were deleted');
19933    }
19934  };
19935
19936  // registers to be notified when the persons' changes
19937  watcherId = tizen.contact.addChangeListener(watcher);
19938  </Code>
19939         </descriptive>
19940         <Type type="long">
19941           <descriptive>
19942               <description><p>
19943  long Identifier used to clear the watch subscription.
19944               </p></description>
19945           </descriptive>
19946         </Type>
19947         <ArgumentList>
19948           <Argument name="successCallback">
19949             <descriptive>
19950                 <description><p>
19951  Contains the methods for different types of change notifications.
19952                 </p></description>
19953             </descriptive>
19954             <Type name="PersonsChangeCallback"/>
19955           </Argument>
19956         </ArgumentList>
19957         <Raises>
19958           <RaiseException name="WebAPIException">
19959             <descriptive>
19960                 <description><p>
19961  with error type TypeMismatchError, if any input parameter
19962 is not compatible with the expected type for that parameter.
19963                 </p></description>
19964                 <description><p>
19965  with error type InvalidValuesError, if any of the input parameters
19966 contain an invalid value.
19967                 </p></description>
19968                 <description><p>
19969  with error type SecurityError, if the application does not have the privilege to call this method.
19970                 </p></description>
19971                 <description><p>
19972  with error type NotSupportedError, if the feature
19973 is not supported.
19974                 </p></description>
19975                 <description><p>
19976  with error type UnknownError in any other case.
19977                 </p></description>
19978             </descriptive>
19979           </RaiseException>
19980         </Raises>
19981       </Operation>
19982       <Operation name="removeChangeListener" id="::Contact::ContactManager::removeChangeListener">
19983         <webidl>    void removeChangeListener(long watchId) raises(<ref>WebAPIException</ref>);</webidl>
19984         <descriptive>
19985             <brief>
19986  Unsubscribes a persons' changes watch operation.
19987             </brief>
19988            <description>
19989             <p>
19990 If the watchId argument is valid and corresponds to a subscription already in
19991 place, the watch process must immediately stop and no further callbacks MUST be
19992 invoked. If the watchId argument is not valid or does not correspond to a
19993 valid subscription, the method should return without any further action.
19994             </p>
19995            </description>
19996             <version>
19997  2.0
19998             </version>
19999             <privilegelevel>
20000  public
20001             </privilegelevel>
20002             <privilege>
20003  http://tizen.org/privilege/contact.read
20004             </privilege>
20005             <Code> var watcherId = 0; // watcher identifier
20006
20007  // Receives persons' changes
20008  var watcher = {
20009    onpersonsadded: function(persons) {
20010      console.log(persons.length + ' persons were added');
20011    },
20012    onpersonsupdated: function(persons) {
20013      console.log(persons.length + ' persons were updated');
20014    },
20015    onpersonsremoved: function(ids) {
20016      console.log(ids.length + ' persons were removed');
20017    }
20018  };
20019
20020  // Cancel the watch operation
20021  function cancelWatch() {
20022     tizen.contact.removeChangeListener(watcherId);
20023  }
20024
20025  // registers to be notified when the persons' changes
20026  watcherId = tizen.contact.addChangeListener(watcher);
20027  </Code>
20028         </descriptive>
20029         <Type type="void"/>
20030         <ArgumentList>
20031           <Argument name="watchId">
20032             <descriptive>
20033                 <description><p>
20034  A subscription Identifier.
20035                 </p></description>
20036             </descriptive>
20037             <Type type="long"/>
20038           </Argument>
20039         </ArgumentList>
20040         <Raises>
20041           <RaiseException name="WebAPIException">
20042             <descriptive>
20043                 <description><p>
20044  with error type TypeMismatchError, if any input parameter
20045 is not compatible with the expected type for that parameter.
20046                 </p></description>
20047                 <description><p>
20048  with error type InvalidValuesError, if any of the input
20049 parameters contain an invalid value.
20050                 </p></description>
20051                 <description><p>
20052  with error type NotFoundError, if there is no listener
20053 with the given identifier.
20054                 </p></description>
20055                 <description><p>
20056  with error type SecurityError, if the application does not have the privilege to call this method.
20057                 </p></description>
20058                 <description><p>
20059  with error type NotSupportedError, if the feature
20060 is not supported.
20061                 </p></description>
20062                 <description><p>
20063  with error type UnknownError in any other error case.
20064                 </p></description>
20065             </descriptive>
20066           </RaiseException>
20067         </Raises>
20068       </Operation>
20069     </Interface>
20070     <Interface name="AddressBook" id="::Contact::AddressBook">
20071       <webidl>  [NoInterfaceObject] interface AddressBook {
20072
20073     readonly attribute <ref>AddressBookId</ref>? id;
20074
20075     readonly attribute DOMString name;
20076
20077     readonly attribute boolean readOnly;
20078
20079     <ref>Contact</ref> get(<ref>ContactId</ref> id) raises(<ref>WebAPIException</ref>);
20080
20081     void add(<ref>Contact</ref> contact) raises(<ref>WebAPIException</ref>);
20082
20083     void addBatch(<ref>Contact</ref>[] contacts,
20084                   optional <ref>ContactArraySuccessCallback</ref>? successCallback,
20085                   optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
20086
20087     void update(<ref>Contact</ref> contact) raises(<ref>WebAPIException</ref>);
20088
20089     void updateBatch(<ref>Contact</ref>[] contacts,
20090                      optional <ref>SuccessCallback</ref>? successCallback,
20091                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
20092
20093     void remove(<ref>ContactId</ref> id) raises(<ref>WebAPIException</ref>);
20094
20095     void removeBatch(<ref>ContactId</ref>[] ids,
20096                      optional <ref>SuccessCallback</ref>? successCallback,
20097                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
20098
20099     void find(<ref>ContactArraySuccessCallback</ref> successCallback,
20100               optional <ref>ErrorCallback</ref>? errorCallback,
20101               optional <ref>AbstractFilter</ref>? filter,
20102               optional <ref>SortMode</ref>? sortMode) raises(<ref>WebAPIException</ref>);
20103
20104     long addChangeListener(<ref>AddressBookChangeCallback</ref> successCallback,
20105                            optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
20106
20107     void removeChangeListener(long watchId) raises(<ref>WebAPIException</ref>);
20108
20109     <ref>ContactGroup</ref> getGroup(<ref>ContactGroupId</ref> groupId) raises(<ref>WebAPIException</ref>);
20110
20111     void addGroup(<ref>ContactGroup</ref> group) raises(<ref>WebAPIException</ref>);
20112
20113     void updateGroup(<ref>ContactGroup</ref> group) raises(<ref>WebAPIException</ref>);
20114
20115     void removeGroup(<ref>ContactGroupId</ref> groupId) raises(<ref>WebAPIException</ref>);
20116
20117     <ref>ContactGroup</ref>[] getGroups() raises(<ref>WebAPIException</ref>);
20118   };</webidl>
20119       <descriptive>
20120           <brief>
20121  This interface provides methods to manage an address book.
20122           </brief>
20123          <description>
20124           <p>
20125 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:
20126           </p>
20127           <ul>
20128             <li>
20129  <em>get()</em> - To get contacts that have a specific ID            </li>
20130             <li>
20131  <em>find()</em> - To find contacts using filters            </li>
20132             <li>
20133  <em>add() </em>or <em>addBatch()</em> - To add contacts to a specific address book            </li>
20134             <li>
20135  <em>update() </em>or <em>updateBatch()</em> - To update contacts in a specific address book            </li>
20136             <li>
20137  <em>remove() </em>or <em>removeBatch() </em> - To remove existing contacts            </li>
20138             <li>
20139  <em>addChangeListener() </em>or <em>removeChangeListener() </em> - To watch for address book changes            </li>
20140           </ul>
20141           <p>
20142 This interface also offers methods to manipulate groups within the address book, such as:
20143           </p>
20144           <ul>
20145             <li>
20146  <em>getGroup()</em> - To get a group having specific ID            </li>
20147             <li>
20148  <em>getGroups()</em> - To get groups in a specific address book            </li>
20149             <li>
20150  <em>addGroup() </em> - To add groups to a specific address book             </li>
20151             <li>
20152  <em>updateGroup() </em> - To update groups in a specific address book            </li>
20153             <li>
20154  <em>removeGroup() </em> - To remove existing groups            </li>
20155           </ul>
20156          </description>
20157           <version>
20158  1.0
20159           </version>
20160       </descriptive>
20161       <ExtendedAttributeList>
20162         <ExtendedAttribute name="NoInterfaceObject">
20163           <webidl>NoInterfaceObject</webidl>
20164         </ExtendedAttribute>
20165       </ExtendedAttributeList>
20166       <Attribute readonly="readonly" name="id" id="::Contact::AddressBook::id">
20167         <webidl>    readonly attribute <ref>AddressBookId</ref>? id;</webidl>
20168         <descriptive>
20169             <brief>
20170  An attribute to uniquely identify the address book.
20171             </brief>
20172            <description>
20173             <p>
20174 The value of this attribute shall be <var>null </var> if the address book
20175 is the unified address book.
20176             </p>
20177            </description>
20178             <version>
20179  1.0
20180             </version>
20181         </descriptive>
20182         <Type name="AddressBookId" nullable="nullable"/>
20183       </Attribute>
20184       <Attribute readonly="readonly" name="name" id="::Contact::AddressBook::name">
20185         <webidl>    readonly attribute DOMString name;</webidl>
20186         <descriptive>
20187             <brief>
20188  The address book descriptive name.
20189             </brief>
20190             <version>
20191  1.0
20192             </version>
20193         </descriptive>
20194         <Type type="DOMString"/>
20195       </Attribute>
20196       <Attribute readonly="readonly" name="readOnly" id="::Contact::AddressBook::readOnly">
20197         <webidl>    readonly attribute boolean readOnly;</webidl>
20198         <descriptive>
20199             <brief>
20200  An attribute to indicate if the address book is read-only.
20201             </brief>
20202            <description>
20203             <p>
20204 Some on line address books cannot be edited and will have this
20205 flag set to <var>true</var>.
20206             </p>
20207            </description>
20208             <version>
20209  1.0
20210             </version>
20211         </descriptive>
20212         <Type type="boolean"/>
20213       </Attribute>
20214       <Operation name="get" id="::Contact::AddressBook::get">
20215         <webidl>    <ref>Contact</ref> get(<ref>ContactId</ref> id) raises(<ref>WebAPIException</ref>);</webidl>
20216         <descriptive>
20217             <brief>
20218  Gets the contact with the specified identifier.
20219             </brief>
20220            <description>
20221             <p>
20222 If the operation completes successfully, it must return the
20223 contact with the specified identifier.
20224             </p>
20225            </description>
20226             <version>
20227  1.0
20228             </version>
20229             <privilegelevel>
20230  public
20231             </privilegelevel>
20232             <privilege>
20233  http://tizen.org/privilege/contact.read
20234             </privilege>
20235             <Code> var contactRef; // ContactRef supposed to be initialized
20236  try {
20237    // Retrieves the Contact corresponding to a given ContactRef.
20238    var addressBook = tizen.contact.getAddressBook(contactRef.addressBookId);
20239    var contact = addressBook.get(contactRef.contactId);
20240    console.log(&quot;Successfully resolved contact with id: &quot; + contactRef.contactId);
20241  } catch(err) {
20242    console.log(&quot;Error: &quot; + err.name);
20243  }
20244  </Code>
20245         </descriptive>
20246         <Type name="Contact">
20247           <descriptive>
20248               <description><p>
20249  Contact The matching Contact object.
20250               </p></description>
20251           </descriptive>
20252         </Type>
20253         <ArgumentList>
20254           <Argument name="id">
20255             <descriptive>
20256                 <description><p>
20257  A contact identifier.
20258                 </p></description>
20259             </descriptive>
20260             <Type name="ContactId"/>
20261           </Argument>
20262         </ArgumentList>
20263         <Raises>
20264           <RaiseException name="WebAPIException">
20265             <descriptive>
20266                 <description><p>
20267  with error type NotFoundError, if there is no contact
20268 with the given identifier.
20269                 </p></description>
20270                 <description><p>
20271  with error type TypeMismatchError, if any input parameter
20272 is not compatible with the expected type for that parameter.
20273                 </p></description>
20274                 <description><p>
20275  with error type InvalidValuesError, if any of the input
20276 parameters contain an invalid value.
20277                 </p></description>
20278                 <description><p>
20279  with error type SecurityError, if the application does not have the privilege to call this method.
20280                 </p></description>
20281                 <description><p>
20282  with error type NotSupportedError, if the feature
20283 is not supported.
20284                 </p></description>
20285                 <description><p>
20286  with error type UnknownError in any other error case.
20287                 </p></description>
20288             </descriptive>
20289           </RaiseException>
20290         </Raises>
20291       </Operation>
20292       <Operation name="add" id="::Contact::AddressBook::add">
20293         <webidl>    void add(<ref>Contact</ref> contact) raises(<ref>WebAPIException</ref>);</webidl>
20294         <descriptive>
20295             <brief>
20296  Adds a contact to the address book synchronously.
20297             </brief>
20298            <description>
20299             <p>
20300 If the contact is successfully inserted in the addressbook, the Contact object
20301 will have its identifier (id attribute) set when the function returns.
20302 This operation is done successfully, new person object is also generated automatically.
20303             </p>
20304             <p>
20305 If you wish to update an
20306 existing contact, call the update() method instead. If you wish to add a copy
20307 of an existing Contact object, call Contact.clone() method first and pass the
20308 clone to the add() method.
20309             </p>
20310             <p>
20311 The contact shall be added to default address book if the address book
20312 is the unified address book.
20313             </p>
20314            </description>
20315             <version>
20316  1.0
20317             </version>
20318             <privilegelevel>
20319  public
20320             </privilegelevel>
20321             <privilege>
20322  http://tizen.org/privilege/contact.write
20323             </privilege>
20324             <Code>  var addressbook;
20325
20326   // Get default address book
20327   addressbook = tizen.contact.getDefaultAddressBook();
20328
20329   try {
20330     var contact = new tizen.Contact({name: new tizen.ContactName({firstName:'Jeffrey',
20331                                           lastName:'Hyman',
20332                                           nicknames:['joey ramone']}),
20333                                     emails:[new tizen.ContactEmailAddress('user@domain.com')],
20334                                     phoneNumbers:[new tizen.ContactPhoneNumber('123456789')]});
20335     addressbook.add(contact);
20336     console.log('Contact added with id ' + contact.id);
20337   } catch (err) {
20338     console.log( 'The following error occurred while adding: ' +  err.name);
20339   }
20340  </Code>
20341         </descriptive>
20342         <Type type="void"/>
20343         <ArgumentList>
20344           <Argument name="contact">
20345             <descriptive>
20346                 <description><p>
20347  A contact to be added.
20348                 </p></description>
20349             </descriptive>
20350             <Type name="Contact"/>
20351           </Argument>
20352         </ArgumentList>
20353         <Raises>
20354           <RaiseException name="WebAPIException">
20355             <descriptive>
20356                 <description><p>
20357  with error type TypeMismatchError, if any input parameter
20358 is not compatible with the expected type for that parameter.
20359                 </p></description>
20360                 <description><p>
20361  with error type InvalidValuesError, if any input parameter
20362 contains invalid values.
20363                 </p></description>
20364                 <description><p>
20365  with error type SecurityError, if the application does not have the privilege to call this method.
20366                 </p></description>
20367                 <description><p>
20368  with error type NotSupportedError, if the feature
20369 is not supported.
20370                 </p></description>
20371                 <description><p>
20372  with error type UnknownError, if any other error occurs while trying to insert the contact.
20373                 </p></description>
20374             </descriptive>
20375           </RaiseException>
20376         </Raises>
20377       </Operation>
20378       <Operation name="addBatch" id="::Contact::AddressBook::addBatch">
20379         <webidl>    void addBatch(<ref>Contact</ref>[] contacts,
20380                   optional <ref>ContactArraySuccessCallback</ref>? successCallback,
20381                   optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
20382         <descriptive>
20383             <brief>
20384  Adds several contacts to the address book asynchronously.
20385             </brief>
20386            <description>
20387             <p>
20388 If all the contacts are successfully added to the address book,
20389 the success callback will be invoked, passing the list of Contact objects
20390 that were added, with their identifier set (id attribute).
20391             </p>
20392             <p>
20393 The <em>errorCallback()</em> is launched with these error types:
20394             </p>
20395             <ul>
20396               <li>
20397 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>
20398               <li>
20399 UnknownError - If any other error occurs, while trying to add the contacts.              </li>
20400             </ul>
20401             <p>
20402 If you wish to update an
20403 existing contact, call the update() method instead. If you wish to add a copy
20404 of an existing Contact object, call Contact.clone() method first and pass the
20405 clone to the add() method.
20406             </p>
20407             <p>
20408 If any of the contacts cannot be added, the error callback
20409 function that was passed in the invocation will be called.
20410             </p>
20411             <p>
20412 The contacts shall be added to local phone address book if the address book
20413 is the default address book.
20414             </p>
20415            </description>
20416             <version>
20417  1.0
20418             </version>
20419             <privilegelevel>
20420  public
20421             </privilegelevel>
20422             <privilege>
20423  http://tizen.org/privilege/contact.write
20424             </privilege>
20425             <Code>  var addressbook;
20426
20427   // Define the error callback
20428   function errorCB(err) {
20429     console.log( 'The following error occurred: ' +  err.name);
20430   }
20431
20432   // Define the add contact success callback
20433   function contactsAddedCB(contacts) {
20434     console.log( contacts.length + ' contact(s) were successfully added to an Address Book' );
20435   };
20436
20437   // Get default address book
20438   addressbook = tizen.contact.getDefaultAddressBook();
20439
20440   var c1 = new tizen.Contact({name: new tizen.ContactName({firstName:'Jeffrey',
20441                              lastName:'Hyman',
20442                              nicknames:['joey ramone']}),
20443                              emails:[new tizen.ContactEmailAddress('user1@domain.com')],
20444                              phoneNumbers:[new tizen.ContactPhoneNumber('123456789')]});
20445
20446   var c2 = new tizen.Contact({name: new tizen.ContactName({firstName:'Elton',
20447                              lastName:'John',
20448                              nicknames:['El']}),
20449                              emails:[new tizen.ContactEmailAddress('user2@domain.com')],
20450                              phoneNumbers:[new tizen.ContactPhoneNumber('987654321')]});
20451
20452   try {
20453     addressbook.addBatch([c1, c2], contactsAddedCB, errorCB);
20454   } catch (err) {
20455     console.log( 'The following error occurred while adding: ' +  err.name);
20456   }
20457  </Code>
20458         </descriptive>
20459         <Type type="void"/>
20460         <ArgumentList>
20461           <Argument name="contacts">
20462             <descriptive>
20463                 <description><p>
20464  A list of contacts to add.
20465                 </p></description>
20466             </descriptive>
20467             <Type type="array">
20468               <Type name="Contact"/>
20469             </Type>
20470           </Argument>
20471           <Argument optional="optional" name="successCallback">
20472             <descriptive>
20473                 <description><p>
20474  The method to call when the invocation ends successfully.
20475                 </p></description>
20476             </descriptive>
20477             <Type name="ContactArraySuccessCallback" nullable="nullable"/>
20478           </Argument>
20479           <Argument optional="optional" name="errorCallback">
20480             <descriptive>
20481                 <description><p>
20482  The method to call when the request fails.
20483                 </p></description>
20484             </descriptive>
20485             <Type name="ErrorCallback" nullable="nullable"/>
20486           </Argument>
20487         </ArgumentList>
20488         <Raises>
20489           <RaiseException name="WebAPIException">
20490             <descriptive>
20491                 <description><p>
20492  with error type TypeMismatchError, if the input parameter
20493 is not compatible with the expected type for that parameter.
20494                 </p></description>
20495                 <description><p>
20496  with error type SecurityError, if the application does not have the privilege to call this method.
20497                 </p></description>
20498                 <description><p>
20499  with error type NotSupportedError, if this feature is not supported.
20500                 </p></description>
20501             </descriptive>
20502           </RaiseException>
20503         </Raises>
20504       </Operation>
20505       <Operation name="update" id="::Contact::AddressBook::update">
20506         <webidl>    void update(<ref>Contact</ref> contact) raises(<ref>WebAPIException</ref>);</webidl>
20507         <descriptive>
20508             <brief>
20509  Updates a contact in the address book synchronously.
20510             </brief>
20511             <version>
20512  1.0
20513             </version>
20514             <privilegelevel>
20515  public
20516             </privilegelevel>
20517             <privilege>
20518  http://tizen.org/privilege/contact.write
20519             </privilege>
20520             <Code>  var addressbook;
20521
20522   // Define the error callback
20523   function errorCB(err) {
20524     console.log( 'The following error occurred: ' +  err.name);
20525   }
20526
20527   function contactsFoundCB(contacts) {
20528     // The contact has been successfully found
20529     // Let's try to change the first name
20530     contacts[0].name.firstName = 'Christopher';
20531     try {
20532       addressbook.update(contacts[0]);
20533       console.log('First contact was updated');
20534     } catch (err) {
20535       console.log( 'The following error occurred while updating: ' +  err.name);
20536     }
20537   }
20538
20539   // Get default address book.
20540   addressbook = tizen.contact.getDefaultAddressBook();
20541
20542   var filter = new tizen.AttributeFilter('name.firstName', 'CONTAINS', 'Chris');
20543   try {
20544     addressbook.find(contactsFoundCB, errorCB, filter);
20545   } catch (err) {
20546     console.log( 'The following error occurred while finding: ' +  err.name);
20547   }
20548  </Code>
20549         </descriptive>
20550         <Type type="void"/>
20551         <ArgumentList>
20552           <Argument name="contact">
20553             <descriptive>
20554                 <description><p>
20555  A contact object to update.
20556                 </p></description>
20557             </descriptive>
20558             <Type name="Contact"/>
20559           </Argument>
20560         </ArgumentList>
20561         <Raises>
20562           <RaiseException name="WebAPIException">
20563             <descriptive>
20564                 <description><p>
20565  with error type NotFoundError, if the identifier does not match.
20566                 </p></description>
20567                 <description><p>
20568  with error type TypeMismatchError, if any input parameter
20569 is not compatible with the expected type for that parameter.
20570                 </p></description>
20571                 <description><p>
20572  with error type InvalidValuesError, if any input parameter
20573 contains invalid values.
20574                 </p></description>
20575                 <description><p>
20576  with error type SecurityError, if the application does not have the privilege to call this method.
20577                 </p></description>
20578                 <description><p>
20579  with error type NotSupportedError, if the feature
20580 is not supported.
20581                 </p></description>
20582                 <description><p>
20583  with error type UnknownError, if the contact could not be updated
20584 to an unknown error.
20585                 </p></description>
20586             </descriptive>
20587           </RaiseException>
20588         </Raises>
20589       </Operation>
20590       <Operation name="updateBatch" id="::Contact::AddressBook::updateBatch">
20591         <webidl>    void updateBatch(<ref>Contact</ref>[] contacts,
20592                      optional <ref>SuccessCallback</ref>? successCallback,
20593                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
20594         <descriptive>
20595             <brief>
20596  Updates several existing contacts in the address book asynchronously.
20597             </brief>
20598            <description>
20599             <p>
20600 The <em>errorCallback()</em> is launched with these error types:
20601             </p>
20602             <ul>
20603               <li>
20604 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>
20605               <li>
20606 InvalidValuesError - If any of the input parameters contain an invalid value.              </li>
20607               <li>
20608 UnknownError - If any other error occurs, while trying to add the contacts.              </li>
20609             </ul>
20610             <p>
20611 If any of the contacts could not be updated, the error callback
20612 function that was passed in the invocation will be called.
20613             </p>
20614            </description>
20615             <version>
20616  1.0
20617             </version>
20618             <privilegelevel>
20619  public
20620             </privilegelevel>
20621             <privilege>
20622  http://tizen.org/privilege/contact.write
20623             </privilege>
20624             <Code>  var addressbook;
20625
20626   // Define the error callback for all the asynchronous calls
20627   function errorCB(err) {
20628     console.log('The following error occurred: ' +  err.name);
20629   }
20630
20631   function contactsUpdatedCB() {
20632     console.log('Contacts were updated');
20633   }
20634
20635   function contactsFoundCB(contacts) {
20636     // The contact has been successfully found
20637     for(var i = 0; i &#60; contacts.length; i++) {
20638       contacts[i].name.firstName = 'Christopher';
20639     }
20640     try {
20641       addressbook.updateBatch(contacts, contactsUpdatedCB, errorCB);
20642     } catch (err) {
20643       console.log('The following error occurred while updating: ' +  err.name);
20644     }
20645   }
20646
20647   // Get default address book.
20648   addressbook = tizen.contact.getDefaultAddressBook();
20649
20650   var filter = new tizen.AttributeFilter('name.firstName', 'CONTAINS', 'Chris');
20651   try {
20652     addressbook.find(contactsFoundCB, errorCB, filter);
20653   } catch (err) {
20654     console.log('The following error occurred while finding: ' +  err.name);
20655   }
20656  </Code>
20657         </descriptive>
20658         <Type type="void"/>
20659         <ArgumentList>
20660           <Argument name="contacts">
20661             <descriptive>
20662                 <description><p>
20663  A list of contact objects to be saved in the terminal storage.
20664                 </p></description>
20665             </descriptive>
20666             <Type type="array">
20667               <Type name="Contact"/>
20668             </Type>
20669           </Argument>
20670           <Argument optional="optional" name="successCallback">
20671             <descriptive>
20672                 <description><p>
20673  The method to call when the invocation ends successfully.
20674                 </p></description>
20675             </descriptive>
20676             <Type name="SuccessCallback" nullable="nullable"/>
20677           </Argument>
20678           <Argument optional="optional" name="errorCallback">
20679             <descriptive>
20680                 <description><p>
20681  The method to call when the request to update contacts fails.
20682                 </p></description>
20683             </descriptive>
20684             <Type name="ErrorCallback" nullable="nullable"/>
20685           </Argument>
20686         </ArgumentList>
20687         <Raises>
20688           <RaiseException name="WebAPIException">
20689             <descriptive>
20690                 <description><p>
20691  with error type TypeMismatchError, if the input parameter
20692 is not compatible with the expected type for that parameter.
20693                 </p></description>
20694                 <description><p>
20695  with error type SecurityError, if the application does not have the privilege to call this method.
20696                 </p></description>
20697                 <description><p>
20698  with error type NotSupportedError, if this feature is not supported.
20699                 </p></description>
20700             </descriptive>
20701           </RaiseException>
20702         </Raises>
20703       </Operation>
20704       <Operation name="remove" id="::Contact::AddressBook::remove">
20705         <webidl>    void remove(<ref>ContactId</ref> id) raises(<ref>WebAPIException</ref>);</webidl>
20706         <descriptive>
20707             <brief>
20708  Removes a contact from the address book synchronously.
20709             </brief>
20710            <description>
20711             <p>
20712 Removes the contact in the address book that corresponds to the specified
20713 identifier. This function will throw an exception if it failed to
20714 remove the specified contact.
20715             </p>
20716            </description>
20717             <version>
20718  1.0
20719             </version>
20720             <privilegelevel>
20721  public
20722             </privilegelevel>
20723             <privilege>
20724  http://tizen.org/privilege/contact.write
20725             </privilege>
20726             <Code>  var addressbook;
20727
20728   // Define the error callback
20729   function errorCB(err) {
20730     console.log('The following error occurred: ' +  err.name);
20731   }
20732
20733   function contactsFoundCB(contacts) {
20734     // The contact has been successfully found
20735     if(contacts.length > 0) {
20736       try {
20737         addressbook.remove(contacts[0].id);
20738         console.log('First contact was removed');
20739       } catch (err) {
20740         console.log('The following error occurred while removing: ' +  err.name);
20741       }
20742     } else {
20743       console.log( 'No contacts.');
20744     }
20745   }
20746
20747   // Get default address book.
20748   addressbook = tizen.contact.getDefaultAddressBook();
20749
20750   var filter = new tizen.AttributeFilter('name.firstName', 'CONTAINS', 'Chris');
20751   try {
20752     addressbook.find(contactsFoundCB, errorCB, filter);
20753   } catch (err) {
20754     console.log( 'The following error occurred while finding: ' +  err.name);
20755   }
20756  </Code>
20757         </descriptive>
20758         <Type type="void"/>
20759         <ArgumentList>
20760           <Argument name="id">
20761             <descriptive>
20762                 <description><p>
20763  An identifier (id attribute) of the contact object to delete.
20764                 </p></description>
20765             </descriptive>
20766             <Type name="ContactId"/>
20767           </Argument>
20768         </ArgumentList>
20769         <Raises>
20770           <RaiseException name="WebAPIException">
20771             <descriptive>
20772                 <description><p>
20773  with error type NotFoundError, if the identifier does not match
20774 any contact in the address book.
20775                 </p></description>
20776                 <description><p>
20777  with error type TypeMismatchError, if any input parameter
20778 is not compatible with the expected type for that parameter.
20779                 </p></description>
20780                 <description><p>
20781  with error type InvalidValuesError, if any input parameter
20782 contains invalid values.
20783                 </p></description>
20784                 <description><p>
20785  with error type SecurityError, if the application does not have the privilege to call this method.
20786                 </p></description>
20787                 <description><p>
20788  with error type NotSupportedError, if the feature
20789 is not supported.
20790                 </p></description>
20791                 <description><p>
20792  with error type UnknownError, if the contact could not be removed
20793 to an unknown error.
20794                 </p></description>
20795             </descriptive>
20796           </RaiseException>
20797         </Raises>
20798       </Operation>
20799       <Operation name="removeBatch" id="::Contact::AddressBook::removeBatch">
20800         <webidl>    void removeBatch(<ref>ContactId</ref>[] ids,
20801                      optional <ref>SuccessCallback</ref>? successCallback,
20802                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
20803         <descriptive>
20804             <brief>
20805  Removes several contacts from the address book asynchronously.
20806             </brief>
20807            <description>
20808             <p>
20809 The <em>errorCallback()</em> is launched with these error types:
20810             </p>
20811             <ul>
20812               <li>
20813 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>
20814               <li>
20815 InvalidValuesError - If any of the input parameters contain an invalid value.              </li>
20816               <li>
20817 UnknownError - If any other error occurs while trying to remove the contacts.              </li>
20818             </ul>
20819            </description>
20820             <version>
20821  1.0
20822             </version>
20823             <privilegelevel>
20824  public
20825             </privilegelevel>
20826             <privilege>
20827  http://tizen.org/privilege/contact.write
20828             </privilege>
20829             <Code>  var addressbook;
20830
20831   // Define the error callback
20832   function errorCB(err) {
20833     console.log( 'The following error occurred: ' +  err.name);
20834   }
20835
20836   function contactsRemovedCB() {
20837     console.log('Contacts were removed');
20838   }
20839
20840   function contactsFoundCB(contacts) {
20841     // The contact has been successfully found
20842     if(contacts.length > 2) {
20843       try {
20844         addressbook.removeBatch([contacts[0].id, contacts[1].id], contactsRemovedCB, errorCB);
20845       } catch (err) {
20846         console.log( 'The following error occurred while removing: ' +  err.name);
20847       }
20848     } else {
20849       console.log( 'Not enough contacts.');
20850     }
20851   }
20852
20853   // Get default address book.
20854   addressbook = tizen.contact.getDefaultAddressBook();
20855
20856   var filter = new tizen.AttributeFilter('name.firstName', 'CONTAINS', 'Chris');
20857   try {
20858     addressbook.find(contactsFoundCB, errorCB, filter);
20859   } catch (err) {
20860     console.log( 'The following error occurred while finding: ' +  err.name);
20861   }
20862  </Code>
20863         </descriptive>
20864         <Type type="void"/>
20865         <ArgumentList>
20866           <Argument name="ids">
20867             <descriptive>
20868                 <description><p>
20869  A list of identifiers (id attribute) for the contact objects to be deleted.
20870                 </p></description>
20871             </descriptive>
20872             <Type type="array">
20873               <Type name="ContactId"/>
20874             </Type>
20875           </Argument>
20876           <Argument optional="optional" name="successCallback">
20877             <descriptive>
20878                 <description><p>
20879  The method to call when the invocation ends successfully.
20880                 </p></description>
20881             </descriptive>
20882             <Type name="SuccessCallback" nullable="nullable"/>
20883           </Argument>
20884           <Argument optional="optional" name="errorCallback">
20885             <descriptive>
20886                 <description><p>
20887  The method to call when the request to delete contacts fails.
20888                 </p></description>
20889             </descriptive>
20890             <Type name="ErrorCallback" nullable="nullable"/>
20891           </Argument>
20892         </ArgumentList>
20893         <Raises>
20894           <RaiseException name="WebAPIException">
20895             <descriptive>
20896                 <description><p>
20897  with error type TypeMismatchError, if any input parameter
20898 is not compatible with the expected type for that parameter.
20899                 </p></description>
20900                 <description><p>
20901  with error type SecurityError, if the application does not have the privilege to call this method.
20902                 </p></description>
20903                 <description><p>
20904  with error type NotSupportedError, if the feature
20905 is not supported.
20906                 </p></description>
20907             </descriptive>
20908           </RaiseException>
20909         </Raises>
20910       </Operation>
20911       <Operation name="find" id="::Contact::AddressBook::find">
20912         <webidl>    void find(<ref>ContactArraySuccessCallback</ref> successCallback,
20913               optional <ref>ErrorCallback</ref>? errorCallback,
20914               optional <ref>AbstractFilter</ref>? filter,
20915               optional <ref>SortMode</ref>? sortMode) raises(<ref>WebAPIException</ref>);</webidl>
20916         <descriptive>
20917             <brief>
20918  Finds an array of all Contact objects from the specified address book or an array of
20919 Contact objects that match the optionally supplied filter.
20920             </brief>
20921            <description>
20922             <p>
20923 If the filter is passed and contains valid values, only those values in the
20924 address book that match the filter criteria as specified in the AbstractFilter
20925 interface will be returned in the successCallback. If no filter is passed, the filter
20926 contains any invalid values, the filter is <var>null</var> or undefined, then
20927 the implementation MUST return the full list of contact items
20928 in the successCallback. If no contacts are available in the address book or no
20929 contact matches the filter criteria, the successCallback will be invoked
20930 with an empty array.
20931             </p>
20932             <p>
20933 The <em>errorCallback() </em>is launched with these error types:
20934             </p>
20935             <ul>
20936               <li>
20937 InvalidValuesError - If any of the input parameters contain an invalid value.              </li>
20938               <li>
20939 UnknownError - If any other error occurs while trying to retrieve the contacts.              </li>
20940             </ul>
20941            </description>
20942             <version>
20943  1.0
20944             </version>
20945             <privilegelevel>
20946  public
20947             </privilegelevel>
20948             <privilege>
20949  http://tizen.org/privilege/contact.read
20950             </privilege>
20951             <Code>  var addressbook;
20952
20953   // Define the error callback.
20954   function errorCB(err) {
20955     console.log( 'The following error occurred: ' +  err.name);
20956   }
20957
20958   // Define the contact search success callback.
20959   function contactsFoundCB(contacts) {
20960      console.log(contacts.length + ' results found.');
20961   }
20962
20963   // Get default address book
20964   addressbook = tizen.contact.getDefaultAddressBook();
20965
20966   // Find all contacts in the address book that have &quot;Ramone&quot; in the nick name.
20967   var filter = new tizen.AttributeFilter('name.nicknames', 'CONTAINS', 'Ramone');
20968
20969   // The contacts returned by the find() query will be sorted by
20970   // ascending last name.
20971   var sortingMode =  new tizen.SortMode('name.lastName', 'ASC');
20972   try {
20973     addressbook.find(contactsFoundCB, errorCB,
20974                      filter, sortingModes);
20975   } catch (err) {
20976     console.log( 'The following error occurred while finding: ' +  err.name);
20977   }
20978  </Code>
20979         </descriptive>
20980         <Type type="void"/>
20981         <ArgumentList>
20982           <Argument name="successCallback">
20983             <descriptive>
20984                 <description><p>
20985  The method to call when the invocation ends successfully.
20986                 </p></description>
20987             </descriptive>
20988             <Type name="ContactArraySuccessCallback"/>
20989           </Argument>
20990           <Argument optional="optional" name="errorCallback">
20991             <descriptive>
20992                 <description><p>
20993  The method to call when an error occurs.
20994                 </p></description>
20995             </descriptive>
20996             <Type name="ErrorCallback" nullable="nullable"/>
20997           </Argument>
20998           <Argument optional="optional" name="filter">
20999             <descriptive>
21000                 <description><p>
21001  A filter used to select which contacts are returned.
21002                 </p></description>
21003             </descriptive>
21004             <Type name="AbstractFilter" nullable="nullable"/>
21005           </Argument>
21006           <Argument optional="optional" name="sortMode">
21007             <descriptive>
21008                 <description><p>
21009  A variable to determine the sort order in which the contacts are returned.
21010                 </p></description>
21011             </descriptive>
21012             <Type name="SortMode" nullable="nullable"/>
21013           </Argument>
21014         </ArgumentList>
21015         <Raises>
21016           <RaiseException name="WebAPIException">
21017             <descriptive>
21018                 <description><p>
21019  with error type TypeMismatchError, if any input parameter
21020 is not compatible with the expected type for that parameter.
21021                 </p></description>
21022                 <description><p>
21023  with error type SecurityError, if the application does not have the privilege to call this method.
21024                 </p></description>
21025                 <description><p>
21026  with error type NotSupportedError, if the feature
21027 is not supported.
21028                 </p></description>
21029             </descriptive>
21030           </RaiseException>
21031         </Raises>
21032       </Operation>
21033       <Operation name="addChangeListener" id="::Contact::AddressBook::addChangeListener">
21034         <webidl>    long addChangeListener(<ref>AddressBookChangeCallback</ref> successCallback,
21035                            optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
21036         <descriptive>
21037             <brief>
21038  Subscribes to receive notifications about address book changes.
21039             </brief>
21040            <description>
21041             <p>
21042 When executed, the implementation must immediately return a subscription identifier that identifies
21043 the watch operation. After returning the identifier, the watch operation is started
21044 asynchronously.
21045             </p>
21046            </description>
21047             <version>
21048  1.0
21049             </version>
21050             <privilegelevel>
21051  public
21052             </privilegelevel>
21053             <privilege>
21054  http://tizen.org/privilege/contact.read
21055             </privilege>
21056             <Code> var watcherId = 0; // watcher identifier
21057  var addressbook; // This example assumes addressbook is initialized
21058
21059  var watcher = {
21060    oncontactsadded: function(contacts) {
21061      console.log(contacts.length + ' contacts were added');
21062    },
21063    oncontactsupdated: function(contacts) {
21064      console.log(contacts.length + ' contacts were updated');
21065    },
21066    oncontactsremoved: function(ids) {
21067      console.log(ids.length + ' contacts were deleted');
21068    }
21069  };
21070
21071  // Registers to be notified when the address book changes
21072  watcherId = addressbook.addChangeListener(watcher);
21073  </Code>
21074         </descriptive>
21075         <Type type="long">
21076           <descriptive>
21077               <description><p>
21078  long An identifier used to clear the watch subscription.
21079               </p></description>
21080           </descriptive>
21081         </Type>
21082         <ArgumentList>
21083           <Argument name="successCallback">
21084             <descriptive>
21085                 <description><p>
21086  The method to call when different types of address book change notifications are received.
21087                 </p></description>
21088             </descriptive>
21089             <Type name="AddressBookChangeCallback"/>
21090           </Argument>
21091           <Argument optional="optional" name="errorCallback">
21092             <descriptive>
21093                 <description><p>
21094  The method to call if address book changes cannot be watched.
21095                 </p></description>
21096             </descriptive>
21097             <Type name="ErrorCallback" nullable="nullable"/>
21098           </Argument>
21099         </ArgumentList>
21100         <Raises>
21101           <RaiseException name="WebAPIException">
21102             <descriptive>
21103                 <description><p>
21104  with error type TypeMismatchError, if any input parameter
21105 is not compatible with the expected type for that parameter.
21106                 </p></description>
21107                 <description><p>
21108  with error type InvalidValuesError, if any of the input parameters
21109 contain an invalid value.
21110                 </p></description>
21111                 <description><p>
21112  with error type SecurityError, if the application does not have the privilege to call this method.
21113                 </p></description>
21114                 <description><p>
21115  with error type NotSupportedError, if the feature
21116 is not supported.
21117                 </p></description>
21118                 <description><p>
21119  with error type UnknownError in any other case.
21120                 </p></description>
21121             </descriptive>
21122           </RaiseException>
21123         </Raises>
21124       </Operation>
21125       <Operation name="removeChangeListener" id="::Contact::AddressBook::removeChangeListener">
21126         <webidl>    void removeChangeListener(long watchId) raises(<ref>WebAPIException</ref>);</webidl>
21127         <descriptive>
21128             <brief>
21129  Unsubscribes an address book changes watch operation.
21130             </brief>
21131            <description>
21132             <p>
21133 If the watchId argument is valid and corresponds to a subscription already in
21134 place, the watch process MUST immediately stop and no further callbacks MUST be
21135 invoked. If the watchId argument is not valid or does not correspond to a
21136 valid subscription, the method should return without any further action.
21137             </p>
21138            </description>
21139             <version>
21140  1.0
21141             </version>
21142             <privilegelevel>
21143  public
21144             </privilegelevel>
21145             <privilege>
21146  http://tizen.org/privilege/contact.read
21147             </privilege>
21148             <Code> var watcherId = 0; // watcher identifier
21149  var addressbook; // This example assumes addressbook is initialized
21150
21151  // Receives address book changes
21152  var watcher = {
21153    oncontactsadded: function(contacts) {
21154      console.log(contacts.length + ' contacts were added');
21155    },
21156    oncontactsupdated: function(contacts) {
21157      console.log(contacts.length + ' contacts were updated');
21158    },
21159    oncontactsremoved: function(ids) {
21160      console.log(ids.length + ' contacts were removed');
21161    }
21162  };
21163
21164  // Cancel the watch operation
21165  function cancelWatch() {
21166     addressbook.removeChangeListener(watcherId);
21167  }
21168
21169  // registers to be notified when the address book changes
21170  watcherId = addressbook.addChangeListener(watcher);
21171  </Code>
21172         </descriptive>
21173         <Type type="void"/>
21174         <ArgumentList>
21175           <Argument name="watchId">
21176             <descriptive>
21177                 <description><p>
21178  A subscription identifier.
21179                 </p></description>
21180             </descriptive>
21181             <Type type="long"/>
21182           </Argument>
21183         </ArgumentList>
21184         <Raises>
21185           <RaiseException name="WebAPIException">
21186             <descriptive>
21187                 <description><p>
21188  with error type TypeMismatchError, if any input parameter
21189 is not compatible with the expected type for that parameter.
21190                 </p></description>
21191                 <description><p>
21192  with error type InvalidValuesError, if any of the input
21193 parameters contain an invalid value.
21194                 </p></description>
21195                 <description><p>
21196  with error type NotFoundError, if there is no listener
21197 with the given identifier.
21198                 </p></description>
21199                 <description><p>
21200  with error type SecurityError, if the application does not have the privilege to call this method.
21201                 </p></description>
21202                 <description><p>
21203  with error type NotSupportedError, if the feature
21204 is not supported.
21205                 </p></description>
21206                 <description><p>
21207  with error type UnknownError in any other error case.
21208                 </p></description>
21209             </descriptive>
21210           </RaiseException>
21211         </Raises>
21212       </Operation>
21213       <Operation name="getGroup" id="::Contact::AddressBook::getGroup">
21214         <webidl>    <ref>ContactGroup</ref> getGroup(<ref>ContactGroupId</ref> groupId) raises(<ref>WebAPIException</ref>);</webidl>
21215         <descriptive>
21216             <brief>
21217  Gets the group with the specified identifier.
21218             </brief>
21219            <description>
21220             <p>
21221 If the operation completes successfully, it must return the
21222 group with the given identifier.
21223             </p>
21224            </description>
21225             <version>
21226  2.0
21227             </version>
21228             <privilegelevel>
21229  public
21230             </privilegelevel>
21231             <privilege>
21232  http://tizen.org/privilege/contact.read
21233             </privilege>
21234             <Code> try {
21235    // Retrieves the Person corresponding to a Contact.
21236    var addressBook = tizen.contact.getAddressBook(contactRef.addressBookId);
21237    var contact = addressBook.get(contactRef.contactId);
21238    var group = addressBook.getGroup(contact.groupIds[0].id);
21239    console.log(&quot;Successfully resolved group with id: &quot; + contact.groupIds[0].id);
21240  } catch(err) {
21241    console.log(&quot;Error: &quot; + err.name);
21242  }
21243  </Code>
21244         </descriptive>
21245         <Type name="ContactGroup">
21246           <descriptive>
21247               <description><p>
21248  ContactGroup The matching ContactGroup object.
21249               </p></description>
21250           </descriptive>
21251         </Type>
21252         <ArgumentList>
21253           <Argument name="groupId">
21254             <descriptive>
21255                 <description><p>
21256  A group identifier.
21257                 </p></description>
21258             </descriptive>
21259             <Type name="ContactGroupId"/>
21260           </Argument>
21261         </ArgumentList>
21262         <Raises>
21263           <RaiseException name="WebAPIException">
21264             <descriptive>
21265                 <description><p>
21266  with error type NotFoundError, if there is no contact
21267 with the given identifier.
21268                 </p></description>
21269                 <description><p>
21270  with error type TypeMismatchError, if any input parameter
21271 is not compatible with the expected type for that parameter.
21272                 </p></description>
21273                 <description><p>
21274  with error type InvalidValuesError, if any of the input
21275 parameters contain an invalid value.
21276                 </p></description>
21277                 <description><p>
21278  with error type SecurityError, if the application does not have the privilege to call this method.
21279                 </p></description>
21280                 <description><p>
21281  with error type NotSupportedError, if the feature
21282 is not supported.
21283                 </p></description>
21284                 <description><p>
21285  with error type UnknownError in any other error case.
21286                 </p></description>
21287             </descriptive>
21288           </RaiseException>
21289         </Raises>
21290       </Operation>
21291       <Operation name="addGroup" id="::Contact::AddressBook::addGroup">
21292         <webidl>    void addGroup(<ref>ContactGroup</ref> group) raises(<ref>WebAPIException</ref>);</webidl>
21293         <descriptive>
21294             <brief>
21295  Adds a group to the address book.
21296             </brief>
21297            <description>
21298             <p>
21299 If the group is successfully inserted in the addressbook, the Group object
21300 will have its identifier (id attribute) set when the function returns.
21301             </p>
21302             <p>
21303 The group shall be added to local phone address book if the address book
21304 is the default address book.
21305             </p>
21306            </description>
21307             <version>
21308  2.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   // Get address book
21319   var addressbooks = tizen.contact.getAddressBooks();
21320   addressbook = addressbooks[0];
21321
21322   try {
21323     var group = new tizen.ContactGroup('Company');
21324     addressbook.addGroup(group);
21325     console.log('Group added with id ' + group.id);
21326   } catch (err) {
21327     console.log( 'The following error occurred while adding: ' +  err.name);
21328   }
21329  </Code>
21330         </descriptive>
21331         <Type type="void"/>
21332         <ArgumentList>
21333           <Argument name="group">
21334             <descriptive>
21335                 <description><p>
21336  A ContactGroup object to be added.
21337                 </p></description>
21338             </descriptive>
21339             <Type name="ContactGroup"/>
21340           </Argument>
21341         </ArgumentList>
21342         <Raises>
21343           <RaiseException name="WebAPIException">
21344             <descriptive>
21345                 <description><p>
21346  with error type TypeMismatchError, if any input parameter
21347 is not compatible with the expected type for that parameter.
21348                 </p></description>
21349                 <description><p>
21350  with error type InvalidValuesError, if any input parameter
21351 contains invalid values.
21352                 </p></description>
21353                 <description><p>
21354  with error type SecurityError, if the application does not have the privilege to call this method.
21355                 </p></description>
21356                 <description><p>
21357  with error type NotSupportedError, if the feature
21358 is not supported.
21359                 </p></description>
21360                 <description><p>
21361  with error type UnknownError, if any other error occurs while trying to insert the contact.
21362                 </p></description>
21363             </descriptive>
21364           </RaiseException>
21365         </Raises>
21366       </Operation>
21367       <Operation name="updateGroup" id="::Contact::AddressBook::updateGroup">
21368         <webidl>    void updateGroup(<ref>ContactGroup</ref> group) raises(<ref>WebAPIException</ref>);</webidl>
21369         <descriptive>
21370             <brief>
21371  Updates a group in the address book.
21372             </brief>
21373             <version>
21374  2.0
21375             </version>
21376             <privilegelevel>
21377  public
21378             </privilegelevel>
21379             <privilege>
21380  http://tizen.org/privilege/contact.write
21381             </privilege>
21382             <Code>  var addressbook;
21383
21384   // Get address book.
21385   var addressbooks = tizen.contact.getAddressBooks();
21386   addressbook = addressbooks[0];
21387
21388   try {
21389     groups = addressbook.getGroups();
21390     groups[0].name = 'Friends';
21391     addressbook.updateGroup(groups[0]);
21392     console.log('First group was updated');
21393   } catch (err) {
21394     console.log( 'The following error occurred while adding: ' +  err.name);
21395   }
21396  </Code>
21397         </descriptive>
21398         <Type type="void"/>
21399         <ArgumentList>
21400           <Argument name="group">
21401             <descriptive>
21402                 <description><p>
21403  A ContactGroup object to be updated.
21404                 </p></description>
21405             </descriptive>
21406             <Type name="ContactGroup"/>
21407           </Argument>
21408         </ArgumentList>
21409         <Raises>
21410           <RaiseException name="WebAPIException">
21411             <descriptive>
21412                 <description><p>
21413  with error type TypeMismatchError, if any input parameter
21414 is not compatible with the expected type for that parameter.
21415                 </p></description>
21416                 <description><p>
21417  with error type InvalidValuesError, if any input parameter
21418 contains invalid values.
21419                 </p></description>
21420                 <description><p>
21421  with error type SecurityError, if the application does not have the privilege to call this method.
21422                 </p></description>
21423                 <description><p>
21424  with error type NotSupportedError, if the feature
21425 is not supported.
21426                 </p></description>
21427                 <description><p>
21428  with error type UnknownError, if the group could not be updated
21429 to an unknown error.
21430                 </p></description>
21431             </descriptive>
21432           </RaiseException>
21433         </Raises>
21434       </Operation>
21435       <Operation name="removeGroup" id="::Contact::AddressBook::removeGroup">
21436         <webidl>    void removeGroup(<ref>ContactGroupId</ref> groupId) raises(<ref>WebAPIException</ref>);</webidl>
21437         <descriptive>
21438             <brief>
21439  Removes a group from the address book.
21440             </brief>
21441            <description>
21442             <p>
21443 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.
21444             </p>
21445            </description>
21446             <version>
21447  2.0
21448             </version>
21449             <privilegelevel>
21450  public
21451             </privilegelevel>
21452             <privilege>
21453  http://tizen.org/privilege/contact.write
21454             </privilege>
21455             <Code>  var addressbook;
21456
21457   // Get default address book.
21458   var addressbooks = tizen.contact.getAddressBooks();
21459   addressbook = addressbooks[0];
21460
21461   try {
21462     groups = addressbook.getGroups();
21463     addressbook.removeGroup(groups[0].id);
21464     console.log('First group was removed');
21465   } catch (err) {
21466     console.log( 'The following error occurred while finding: ' +  err.name);
21467   }
21468  </Code>
21469         </descriptive>
21470         <Type type="void"/>
21471         <ArgumentList>
21472           <Argument name="groupId">
21473             <descriptive>
21474                 <description><p>
21475  An identifier (id attribute) of the ContactGroup object to be deleted.
21476                 </p></description>
21477             </descriptive>
21478             <Type name="ContactGroupId"/>
21479           </Argument>
21480         </ArgumentList>
21481         <Raises>
21482           <RaiseException name="WebAPIException">
21483             <descriptive>
21484                 <description><p>
21485  with error type NotFoundError, if the identifier does not match
21486 any contact in the address book.
21487                 </p></description>
21488                 <description><p>
21489  with error type TypeMismatchError, if any input parameter
21490 is not compatible with the expected type for that parameter.
21491                 </p></description>
21492                 <description><p>
21493  with error type InvalidValuesError, if any input parameter
21494 contains invalid values.
21495                 </p></description>
21496                 <description><p>
21497  with error type SecurityError, if the application does not have the privilege to call this method.
21498                 </p></description>
21499                 <description><p>
21500  with error type NotSupportedError, if the feature
21501 is not supported.
21502                 </p></description>
21503                 <description><p>
21504  with error type UnknownError, if the group could not be removed
21505 to an unknown error.
21506                 </p></description>
21507             </descriptive>
21508           </RaiseException>
21509         </Raises>
21510       </Operation>
21511       <Operation name="getGroups" id="::Contact::AddressBook::getGroups">
21512         <webidl>    <ref>ContactGroup</ref>[] getGroups() raises(<ref>WebAPIException</ref>);</webidl>
21513         <descriptive>
21514             <brief>
21515  Gets an array of all ContactGroup objects from the specified address book.
21516             </brief>
21517             <version>
21518  2.0
21519             </version>
21520             <privilegelevel>
21521  public
21522             </privilegelevel>
21523             <privilege>
21524  http://tizen.org/privilege/contact.read
21525             </privilege>
21526             <Code>  var addressbook;
21527
21528   // Get default address book.
21529   var addressbooks = tizen.contact.getAddressBooks();
21530   addressbook = addressbooks[0];
21531
21532   try {
21533     groups = addressbook.getGroups();
21534     console.log('Number of groups is ' + groups.length);
21535   } catch (err) {
21536     console.log( 'The following error occurred while finding: ' +  err.name);
21537   }
21538  </Code>
21539         </descriptive>
21540         <Type type="array">
21541           <descriptive>
21542               <description><p>
21543  ContactGroup[] The array of ContactGroup object from this address book.
21544               </p></description>
21545           </descriptive>
21546           <Type name="ContactGroup"/>
21547         </Type>
21548         <ArgumentList/>
21549         <Raises>
21550           <RaiseException name="WebAPIException">
21551             <descriptive>
21552                 <description><p>
21553  with error type NotFoundError, if the identifier does not match
21554 any contact in the address book.
21555                 </p></description>
21556                 <description><p>
21557  with error type TypeMismatchError, if any input parameter
21558 is not compatible with the expected type for that parameter.
21559                 </p></description>
21560                 <description><p>
21561  with error type InvalidValuesError, if any input parameter
21562 contains invalid values.
21563                 </p></description>
21564                 <description><p>
21565  with error type SecurityError, if the application does not have the privilege to call this method.
21566                 </p></description>
21567                 <description><p>
21568  with error type NotSupportedError, if the feature
21569 is not supported.
21570                 </p></description>
21571                 <description><p>
21572  with error type UnknownError, if the group could not be retrieved due
21573 to an unknown error.
21574                 </p></description>
21575             </descriptive>
21576           </RaiseException>
21577         </Raises>
21578       </Operation>
21579     </Interface>
21580     <Interface name="Person" id="::Contact::Person">
21581       <webidl>  [NoInterfaceObject] interface Person {
21582     readonly attribute <ref>PersonId</ref> id;
21583
21584     readonly attribute DOMString displayName;
21585
21586     readonly attribute long contactCount;
21587
21588     readonly attribute boolean hasPhoneNumber;
21589
21590     readonly attribute boolean hasEmail;
21591
21592     attribute boolean isFavorite;
21593
21594     attribute DOMString? photoURI;
21595
21596     attribute DOMString? ringtoneURI;
21597
21598     attribute <ref>ContactId</ref> displayContactId;
21599
21600     void link(<ref>PersonId</ref> personId) raises(<ref>WebAPIException</ref>);
21601
21602     <ref>Person</ref> unlink(<ref>ContactId</ref> contactId) raises(<ref>WebAPIException</ref>);
21603   };</webidl>
21604       <descriptive>
21605           <brief>
21606  The person object.
21607           </brief>
21608           <version>
21609  2.0
21610           </version>
21611       </descriptive>
21612       <ExtendedAttributeList>
21613         <ExtendedAttribute name="NoInterfaceObject">
21614           <webidl>NoInterfaceObject</webidl>
21615         </ExtendedAttribute>
21616       </ExtendedAttributeList>
21617       <Attribute readonly="readonly" name="id" id="::Contact::Person::id">
21618         <webidl>    readonly attribute <ref>PersonId</ref> id;</webidl>
21619         <descriptive>
21620             <brief>
21621  The identifier of the person.
21622             </brief>
21623             <version>
21624  2.0
21625             </version>
21626         </descriptive>
21627         <Type name="PersonId"/>
21628       </Attribute>
21629       <Attribute readonly="readonly" name="displayName" id="::Contact::Person::displayName">
21630         <webidl>    readonly attribute DOMString displayName;</webidl>
21631         <descriptive>
21632             <brief>
21633  An attribute to identify a person by storing the display name in a string.
21634 It is selected from the contacts' display names.
21635             </brief>
21636             <version>
21637  2.0
21638             </version>
21639         </descriptive>
21640         <Type type="DOMString"/>
21641       </Attribute>
21642       <Attribute readonly="readonly" name="contactCount" id="::Contact::Person::contactCount">
21643         <webidl>    readonly attribute long contactCount;</webidl>
21644         <descriptive>
21645             <brief>
21646  An attribute to count the number of the contacts that belong to a person.
21647             </brief>
21648             <version>
21649  2.0
21650             </version>
21651         </descriptive>
21652         <Type type="long"/>
21653       </Attribute>
21654       <Attribute readonly="readonly" name="hasPhoneNumber" id="::Contact::Person::hasPhoneNumber">
21655         <webidl>    readonly attribute boolean hasPhoneNumber;</webidl>
21656         <descriptive>
21657             <brief>
21658  An attribute to indicate if a person has a phone number.
21659             </brief>
21660             <version>
21661  2.0
21662             </version>
21663         </descriptive>
21664         <Type type="boolean"/>
21665       </Attribute>
21666       <Attribute readonly="readonly" name="hasEmail" id="::Contact::Person::hasEmail">
21667         <webidl>    readonly attribute boolean hasEmail;</webidl>
21668         <descriptive>
21669             <brief>
21670  An attribute to indicate if the person has an email addresses.
21671             </brief>
21672             <version>
21673  2.0
21674             </version>
21675         </descriptive>
21676         <Type type="boolean"/>
21677       </Attribute>
21678       <Attribute name="isFavorite" id="::Contact::Person::isFavorite">
21679         <webidl>    attribute boolean isFavorite;</webidl>
21680         <descriptive>
21681             <brief>
21682  An attribute to indicate whether the contact is a favorite or not.
21683             </brief>
21684            <description>
21685             <p>
21686 Indicates if the person was marked as <em>Favorite</em> or not.
21687             </p>
21688             <p>
21689 By default, this attribute is set to <var>false</var>.
21690             </p>
21691            </description>
21692             <version>
21693  2.0
21694             </version>
21695         </descriptive>
21696         <Type type="boolean"/>
21697       </Attribute>
21698       <Attribute name="photoURI" id="::Contact::Person::photoURI">
21699         <webidl>    attribute DOMString? photoURI;</webidl>
21700         <descriptive>
21701             <brief>
21702  The URI of a picture of a person.
21703             </brief>
21704            <description>
21705             <p>
21706 This attribute is used to store a URI that points to an image that can represent the
21707 person object. This attribute only contains a local file URI.
21708 Person's photoURI is bounded to linked contacts' valid photoURI.
21709 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
21710             </p>
21711             <p>
21712 By default, this attribute is set to <var>null</var>.
21713             </p>
21714            </description>
21715             <version>
21716  2.0
21717             </version>
21718         </descriptive>
21719         <Type type="DOMString" nullable="nullable"/>
21720       </Attribute>
21721       <Attribute name="ringtoneURI" id="::Contact::Person::ringtoneURI">
21722         <webidl>    attribute DOMString? ringtoneURI;</webidl>
21723         <descriptive>
21724             <brief>
21725  An attribute to specify and store the URI of a custom ringtone for a contact.
21726             </brief>
21727            <description>
21728             <p>
21729 By default, this attribute is initialized to <var>null</var>.
21730 This attribute only contains a local file URI.
21731             </p>
21732            </description>
21733             <version>
21734  2.0
21735             </version>
21736         </descriptive>
21737         <Type type="DOMString" nullable="nullable"/>
21738       </Attribute>
21739       <Attribute name="displayContactId" id="::Contact::Person::displayContactId">
21740         <webidl>    attribute <ref>ContactId</ref> displayContactId;</webidl>
21741         <descriptive>
21742             <brief>
21743  The ID of a contact that represents information of the person.
21744             </brief>
21745            <description>
21746             <p>
21747 The contact, this value is indicating, is used to show detailed information of the person.
21748             </p>
21749            </description>
21750             <version>
21751  2.0
21752             </version>
21753         </descriptive>
21754         <Type name="ContactId"/>
21755       </Attribute>
21756       <Operation name="link" id="::Contact::Person::link">
21757         <webidl>    void link(<ref>PersonId</ref> personId) raises(<ref>WebAPIException</ref>);</webidl>
21758         <descriptive>
21759             <brief>
21760  Aggregates another person to this person.
21761             </brief>
21762            <description>
21763             <p>
21764 Person is a meta object which aggregates contacts and to make a person, user should combine related contacts.
21765 For this operation, link method is provided.
21766 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;.
21767 After this function returns, the target &quot;Person A&quot; is removed from DB.
21768             </p>
21769            </description>
21770             <version>
21771  2.0
21772             </version>
21773             <privilegelevel>
21774  public
21775             </privilegelevel>
21776             <privilege>
21777  http://tizen.org/privilege/contact.write
21778             </privilege>
21779             <Code>  // Define the error callback for all the asynchronous calls
21780   function errorCB(err) {
21781     console.log( 'The following error occurred: ' +  err.name);
21782   }
21783
21784   function personsFoundCB(persons) {
21785     // The persons has been successfully found
21786     try {
21787       persons[0].link(persons[1].id);
21788       console.log('Second person was merged to the first person.');
21789     } catch (err) {
21790       console.log( 'The following error occurred while updating: ' +  err.name);
21791     }
21792   }
21793
21794   try {
21795     tizen.contact.find(personsFoundCB, errorCB);
21796   } catch (err) {
21797     console.log( 'The following error occurred while adding: ' +  err.name);
21798   }
21799  </Code>
21800         </descriptive>
21801         <Type type="void"/>
21802         <ArgumentList>
21803           <Argument name="personId">
21804             <descriptive>
21805                 <description><p>
21806  The ID of person to be merged.
21807                 </p></description>
21808             </descriptive>
21809             <Type name="PersonId"/>
21810           </Argument>
21811         </ArgumentList>
21812         <Raises>
21813           <RaiseException name="WebAPIException">
21814             <descriptive>
21815                 <description><p>
21816  with error type TypeMismatchError, if any input parameter
21817 is not compatible with the expected type for that parameter.
21818                 </p></description>
21819                 <description><p>
21820  with error type InvalidValuesError, if any input parameter
21821 contains invalid values.
21822                 </p></description>
21823                 <description><p>
21824  with error type SecurityError, if the application does not have the privilege to call this method.
21825                 </p></description>
21826                 <description><p>
21827  with error type NotSupportedError, if the feature
21828 is not supported.
21829                 </p></description>
21830                 <description><p>
21831  with error type UnknownError, if any other error occurs while trying to insert the contact.
21832                 </p></description>
21833             </descriptive>
21834           </RaiseException>
21835         </Raises>
21836       </Operation>
21837       <Operation name="unlink" id="::Contact::Person::unlink">
21838         <webidl>    <ref>Person</ref> unlink(<ref>ContactId</ref> contactId) raises(<ref>WebAPIException</ref>);</webidl>
21839         <descriptive>
21840             <brief>
21841  Separates a contact from this person.
21842             </brief>
21843            <description>
21844             <p>
21845 Person is aggregated contacts and if a user wants to detach one contact from person, unlink method is provided.
21846 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.
21847 This function returns a newly created Person object that indicates the separated contact.
21848             </p>
21849            </description>
21850             <version>
21851  2.0
21852             </version>
21853             <privilegelevel>
21854  public
21855             </privilegelevel>
21856             <privilege>
21857  http://tizen.org/privilege/contact.write
21858             </privilege>
21859             <Code>  var myPersonId = '1'; //ID of modified
21860
21861   var addressbook; // Default addressbook
21862   var person;    // Existing person obtained from addressbook
21863   var newPerson; // New person, which will be created during unlink
21864
21865   // Define the error callback.
21866   function errorCB(err) {
21867     console.log( 'The following error occurred: ' +  err.name);
21868   }
21869
21870   // Define the contact search success callback.
21871   function contactsFoundCB(contacts) {
21872     if (contacts.length > 1) {
21873       try {
21874         // unlink first contact
21875         newPerson = person.unlink(contacts[0].id);
21876       } catch (err) {
21877         console.log( 'The following error occurred while unlink: ' +  err.name);
21878       }
21879     } else {
21880         console.log( 'Not enough contacts ');
21881     }
21882   }
21883
21884   try {
21885     // Get person
21886     person = tizen.contact.get(myPersonId);
21887
21888     // Get default address book
21889     addressbook = tizen.contact.getDefaultAddressBook();
21890
21891     // Find all contacts in the default address book that personId
21892     // is exactly myPersonId
21893     var filter = new tizen.AttributeFilter('personId', 'EXACTLY', myPersonId);
21894
21895     addressbook.find(contactsFoundCB, errorCB, filter);
21896   } catch (err) {
21897     console.log( 'The following error occurred while processing: ' +  err.name);
21898   }
21899  </Code>
21900         </descriptive>
21901         <Type name="Person"/>
21902         <ArgumentList>
21903           <Argument name="contactId">
21904             <descriptive>
21905                 <description><p>
21906  The ID of contact to unlink.
21907                 </p></description>
21908             </descriptive>
21909             <Type name="ContactId"/>
21910           </Argument>
21911         </ArgumentList>
21912         <Raises>
21913           <RaiseException name="WebAPIException">
21914             <descriptive>
21915                 <description><p>
21916  with error type TypeMismatchError, if any input parameter
21917 is not compatible with the expected type for that parameter.
21918                 </p></description>
21919                 <description><p>
21920  with error type InvalidValuesError, if any input parameter
21921 contains invalid values.
21922                 </p></description>
21923                 <description><p>
21924  with error type SecurityError, if the application does not have the privilege to call this method.
21925                 </p></description>
21926                 <description><p>
21927  with error type NotSupportedError, if the feature
21928 is not supported.
21929                 </p></description>
21930                 <description><p>
21931  with error type UnknownError, if any other error occurs while trying to insert the contact.
21932                 </p></description>
21933             </descriptive>
21934           </RaiseException>
21935         </Raises>
21936       </Operation>
21937     </Interface>
21938     <Dictionary name="ContactInit" id="::Contact::ContactInit">
21939       <webidl>  dictionary ContactInit {
21940     <ref>ContactName</ref> name;
21941     <ref>ContactAddress</ref>[] addresses;
21942     DOMString photoURI;
21943     <ref>ContactPhoneNumber</ref>[] phoneNumbers;
21944     <ref>ContactEmailAddress</ref>[] emails;
21945     Date birthday;
21946     <ref>ContactAnniversary</ref>[] anniversaries;
21947     <ref>ContactOrganization</ref>[] organizations;
21948     DOMString[] notes;
21949     <ref>ContactWebSite</ref>[] urls;
21950     DOMString ringtoneURI;
21951     <ref>ContactGroupId</ref>[] groupIds;
21952   };</webidl>
21953       <descriptive>
21954           <brief>
21955  Provides a dictionary for specifying contact attributes upon contact creation.
21956           </brief>
21957          <description>
21958           <p>
21959 This dictionary is used to input parameters when contacts are created.
21960           </p>
21961          </description>
21962           <version>
21963  1.0
21964           </version>
21965       </descriptive>
21966       <DictionaryMember name="name" id="::Contact::ContactInit::name">
21967         <webidl>    <ref>ContactName</ref> name;</webidl>
21968         <Type name="ContactName"/>
21969       </DictionaryMember>
21970       <DictionaryMember name="addresses" id="::Contact::ContactInit::addresses">
21971         <webidl>    <ref>ContactAddress</ref>[] addresses;</webidl>
21972         <Type type="array">
21973           <Type name="ContactAddress"/>
21974         </Type>
21975       </DictionaryMember>
21976       <DictionaryMember name="photoURI" id="::Contact::ContactInit::photoURI">
21977         <webidl>    DOMString photoURI;</webidl>
21978         <Type type="DOMString"/>
21979       </DictionaryMember>
21980       <DictionaryMember name="phoneNumbers" id="::Contact::ContactInit::phoneNumbers">
21981         <webidl>    <ref>ContactPhoneNumber</ref>[] phoneNumbers;</webidl>
21982         <Type type="array">
21983           <Type name="ContactPhoneNumber"/>
21984         </Type>
21985       </DictionaryMember>
21986       <DictionaryMember name="emails" id="::Contact::ContactInit::emails">
21987         <webidl>    <ref>ContactEmailAddress</ref>[] emails;</webidl>
21988         <Type type="array">
21989           <Type name="ContactEmailAddress"/>
21990         </Type>
21991       </DictionaryMember>
21992       <DictionaryMember name="birthday" id="::Contact::ContactInit::birthday">
21993         <webidl>    Date birthday;</webidl>
21994         <Type type="Date"/>
21995       </DictionaryMember>
21996       <DictionaryMember name="anniversaries" id="::Contact::ContactInit::anniversaries">
21997         <webidl>    <ref>ContactAnniversary</ref>[] anniversaries;</webidl>
21998         <Type type="array">
21999           <Type name="ContactAnniversary"/>
22000         </Type>
22001       </DictionaryMember>
22002       <DictionaryMember name="organizations" id="::Contact::ContactInit::organizations">
22003         <webidl>    <ref>ContactOrganization</ref>[] organizations;</webidl>
22004         <Type type="array">
22005           <Type name="ContactOrganization"/>
22006         </Type>
22007       </DictionaryMember>
22008       <DictionaryMember name="notes" id="::Contact::ContactInit::notes">
22009         <webidl>    DOMString[] notes;</webidl>
22010         <Type type="array">
22011           <Type type="DOMString"/>
22012         </Type>
22013       </DictionaryMember>
22014       <DictionaryMember name="urls" id="::Contact::ContactInit::urls">
22015         <webidl>    <ref>ContactWebSite</ref>[] urls;</webidl>
22016         <Type type="array">
22017           <Type name="ContactWebSite"/>
22018         </Type>
22019       </DictionaryMember>
22020       <DictionaryMember name="ringtoneURI" id="::Contact::ContactInit::ringtoneURI">
22021         <webidl>    DOMString ringtoneURI;</webidl>
22022         <Type type="DOMString"/>
22023       </DictionaryMember>
22024       <DictionaryMember name="groupIds" id="::Contact::ContactInit::groupIds">
22025         <webidl>    <ref>ContactGroupId</ref>[] groupIds;</webidl>
22026         <Type type="array">
22027           <Type name="ContactGroupId"/>
22028         </Type>
22029       </DictionaryMember>
22030     </Dictionary>
22031     <Interface name="Contact" id="::Contact::Contact">
22032       <webidl>  [Constructor(optional <ref>ContactInit</ref>? ContactInitDict),
22033    Constructor(DOMString stringRepresentation)]
22034   interface Contact {
22035     readonly attribute <ref>ContactId</ref>? id;
22036
22037     readonly attribute <ref>PersonId</ref>? personId;
22038
22039     readonly attribute <ref>AddressBookId</ref>? addressBookId;
22040
22041     readonly attribute Date? lastUpdated;
22042
22043     readonly attribute boolean isFavorite;
22044
22045     attribute <ref>ContactName</ref>? name setraises(<ref>WebAPIException</ref>);
22046
22047     attribute <ref>ContactAddress</ref>[] addresses setraises(<ref>WebAPIException</ref>);
22048
22049     attribute DOMString? photoURI setraises(<ref>WebAPIException</ref>);
22050
22051     attribute <ref>ContactPhoneNumber</ref>[] phoneNumbers setraises(<ref>WebAPIException</ref>);
22052
22053     attribute <ref>ContactEmailAddress</ref>[] emails setraises(<ref>WebAPIException</ref>);
22054
22055     attribute Date? birthday setraises(<ref>WebAPIException</ref>);
22056
22057     attribute <ref>ContactAnniversary</ref>[] anniversaries setraises(<ref>WebAPIException</ref>);
22058
22059     attribute <ref>ContactOrganization</ref>[] organizations setraises(<ref>WebAPIException</ref>);
22060
22061     attribute DOMString[] notes setraises(<ref>WebAPIException</ref>);
22062
22063     attribute <ref>ContactWebSite</ref>[] urls setraises(<ref>WebAPIException</ref>);
22064
22065     attribute DOMString? ringtoneURI setraises(<ref>WebAPIException</ref>);
22066
22067     attribute <ref>ContactGroupId</ref>[] groupIds setraises(<ref>WebAPIException</ref>);
22068
22069     DOMString convertToString(optional <ref>ContactTextFormat</ref>? format) raises(<ref>WebAPIException</ref>);
22070
22071     <ref>Contact</ref> clone() raises(<ref>WebAPIException</ref>);
22072   };</webidl>
22073       <descriptive>
22074           <brief>
22075  This interface is used to create a <em>Contact </em>object.
22076           </brief>
22077           <version>
22078  1.0
22079           </version>
22080           <Code>  // Get the default address book
22081   var addressbook = tizen.contact.getDefaultAddressBook();
22082
22083   var contact = null;
22084
22085   try {
22086     contact = new tizen.Contact(
22087                       &quot;BEGIN:VCARD\n&quot;+
22088                       &quot;VERSION:3.0\n&quot;+
22089                       &quot;N:Gump;Forrest\n&quot;+
22090                       &quot;FN:Forrest Gump\n&quot;+
22091                       &quot;ORG:Bubba Gump Shrimp Co.\n&quot;+
22092                       &quot;TITLE:Shrimp Man\n&quot;+
22093                       &quot;TEL;WORK:(111) 555-1212\n&quot;+
22094                       &quot;TEL;HOME:(404) 555-1212\n&quot;+
22095                       &quot;EMAIL;WORK;PREF:forrestgump@example.com\n&quot;+
22096                       &quot;END:VCARD&quot;);
22097   } catch (err) {
22098     console.log( 'The following error occurred while converting: ' +  err.name);
22099   }
22100
22101   try {
22102     if (contact) {
22103       addressbook.add(contact);
22104       console.log('Contact was added with ID ' + contact.id);
22105     }
22106   } catch (err) {
22107     console.log( 'The following error occurred while adding: ' +  err.name);
22108   }
22109  </Code>
22110       </descriptive>
22111       <ExtendedAttributeList>
22112         <ExtendedAttribute name="Constructor">
22113           <webidl>Constructor(optional <ref>ContactInit</ref>? ContactInitDict)</webidl>
22114           <ArgumentList>
22115             <Argument optional="optional" name="ContactInitDict">
22116               <Type name="ContactInit" nullable="nullable"/>
22117             </Argument>
22118           </ArgumentList>
22119         </ExtendedAttribute>
22120         <ExtendedAttribute name="Constructor">
22121           <webidl>   Constructor(DOMString stringRepresentation)</webidl>
22122           <ArgumentList>
22123             <Argument name="stringRepresentation">
22124               <Type type="DOMString"/>
22125             </Argument>
22126           </ArgumentList>
22127         </ExtendedAttribute>
22128       </ExtendedAttributeList>
22129       <Attribute readonly="readonly" name="id" id="::Contact::Contact::id">
22130         <webidl>    readonly attribute <ref>ContactId</ref>? id;</webidl>
22131         <descriptive>
22132             <brief>
22133  An attribute to identify a raw contact.
22134             </brief>
22135            <description>
22136             <p>
22137 By default, this attribute is set to <var>null</var>.
22138             </p>
22139            </description>
22140             <version>
22141  1.0
22142             </version>
22143         </descriptive>
22144         <Type name="ContactId" nullable="nullable"/>
22145       </Attribute>
22146       <Attribute readonly="readonly" name="personId" id="::Contact::Contact::personId">
22147         <webidl>    readonly attribute <ref>PersonId</ref>? personId;</webidl>
22148         <descriptive>
22149             <brief>
22150  The identifier of the person corresponding to the raw contact.
22151             </brief>
22152            <description>
22153             <p>
22154 By default, this attribute is set to <var>null</var>.
22155             </p>
22156            </description>
22157             <version>
22158  2.0
22159             </version>
22160         </descriptive>
22161         <Type name="PersonId" nullable="nullable"/>
22162       </Attribute>
22163       <Attribute readonly="readonly" name="addressBookId" id="::Contact::Contact::addressBookId">
22164         <webidl>    readonly attribute <ref>AddressBookId</ref>? addressBookId;</webidl>
22165         <descriptive>
22166             <brief>
22167  The identifier of the address book that corresponds to the raw contact.
22168 By default, this attribute is set to <var>null</var>.
22169             </brief>
22170             <version>
22171  2.0
22172             </version>
22173         </descriptive>
22174         <Type name="AddressBookId" nullable="nullable"/>
22175       </Attribute>
22176       <Attribute readonly="readonly" name="lastUpdated" id="::Contact::Contact::lastUpdated">
22177         <webidl>    readonly attribute Date? lastUpdated;</webidl>
22178         <descriptive>
22179             <brief>
22180  The timestamp for the last update of a contact.
22181             </brief>
22182            <description>
22183             <p>
22184 Specifies revision information about the contact.
22185             </p>
22186             <p>
22187 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.
22188 For more details, see RFC 2426, Section 3.6.4.
22189             </p>
22190            </description>
22191             <version>
22192  1.0
22193             </version>
22194         </descriptive>
22195         <Type type="Date" nullable="nullable"/>
22196       </Attribute>
22197       <Attribute readonly="readonly" name="isFavorite" id="::Contact::Contact::isFavorite">
22198         <webidl>    readonly attribute boolean isFavorite;</webidl>
22199         <descriptive>
22200             <brief>
22201  An attribute to indicate whether a contact is favorite or not.
22202             </brief>
22203            <description>
22204             <p>
22205 This value is associated with the <em>isFavorite</em> attribute of Person that this contact indicates.
22206             </p>
22207             <p>
22208 By default, this attribute is set to <var>false</var>.
22209             </p>
22210            </description>
22211             <version>
22212  1.0
22213             </version>
22214             <Code>   if (contact.isFavorite) {
22215      // ...
22216    }
22217  </Code>
22218         </descriptive>
22219         <Type type="boolean"/>
22220       </Attribute>
22221       <Attribute name="name" id="::Contact::Contact::name">
22222         <webidl>    attribute <ref>ContactName</ref>? name setraises(<ref>WebAPIException</ref>);</webidl>
22223         <descriptive>
22224             <brief>
22225  An attribute to store the name of a contact.
22226             </brief>
22227             <version>
22228  1.0
22229             </version>
22230         </descriptive>
22231         <Type name="ContactName" nullable="nullable"/>
22232         <SetRaises>
22233           <RaiseException name="WebAPIException"/>
22234         </SetRaises>
22235       </Attribute>
22236       <Attribute name="addresses" id="::Contact::Contact::addresses">
22237         <webidl>    attribute <ref>ContactAddress</ref>[] addresses setraises(<ref>WebAPIException</ref>);</webidl>
22238         <descriptive>
22239             <brief>
22240  The contact addresses.
22241             </brief>
22242            <description>
22243             <p>
22244 By default, this attribute is set to an empty array.
22245             </p>
22246            </description>
22247             <version>
22248  1.0
22249             </version>
22250             <Code> var contactInit = {};
22251  var contactAddr = new tizen.ContactAddres({streetAddress:'Gran Via, 32',
22252                                             postalCode:'50013',
22253                                                   city:'Zaragoza',
22254                                                   country:'ES'});
22255  contactInit.addresses = [contactAddr];
22256  </Code>
22257         </descriptive>
22258         <Type type="array">
22259           <Type name="ContactAddress"/>
22260         </Type>
22261         <SetRaises>
22262           <RaiseException name="WebAPIException"/>
22263         </SetRaises>
22264       </Attribute>
22265       <Attribute name="photoURI" id="::Contact::Contact::photoURI">
22266         <webidl>    attribute DOMString? photoURI setraises(<ref>WebAPIException</ref>);</webidl>
22267         <descriptive>
22268             <brief>
22269  The URI to the picture of the contact.
22270             </brief>
22271            <description>
22272             <p>
22273 This attribute is used to store a URI that points to an image that can represent the
22274 contact object. This attribute only contains a local file URI.
22275 See RFC 2426, Section 3.1.4.
22276             </p>
22277             <p>
22278 By default, this attribute is set to <var>null</var>.
22279             </p>
22280            </description>
22281             <version>
22282  1.0
22283             </version>
22284             <Code>  var contactInit = {};
22285   contactInit.photoURI = 'file:///opt/media/Downloads/mypicture.jpg';
22286  </Code>
22287         </descriptive>
22288         <Type type="DOMString" nullable="nullable"/>
22289         <SetRaises>
22290           <RaiseException name="WebAPIException"/>
22291         </SetRaises>
22292       </Attribute>
22293       <Attribute name="phoneNumbers" id="::Contact::Contact::phoneNumbers">
22294         <webidl>    attribute <ref>ContactPhoneNumber</ref>[] phoneNumbers setraises(<ref>WebAPIException</ref>);</webidl>
22295         <descriptive>
22296             <brief>
22297  The telephone numbers of the contact.
22298             </brief>
22299            <description>
22300             <p>
22301 By default, this attribute is set to empty array.
22302             </p>
22303            </description>
22304             <version>
22305  1.0
22306             </version>
22307             <Code>   var contactInit = {};
22308    var phoneNumber = new tizen.ContactPhoneNumber('123456789');
22309    contactInit.phoneNumbers = [phoneNumber];
22310  </Code>
22311         </descriptive>
22312         <Type type="array">
22313           <Type name="ContactPhoneNumber"/>
22314         </Type>
22315         <SetRaises>
22316           <RaiseException name="WebAPIException"/>
22317         </SetRaises>
22318       </Attribute>
22319       <Attribute name="emails" id="::Contact::Contact::emails">
22320         <webidl>    attribute <ref>ContactEmailAddress</ref>[] emails setraises(<ref>WebAPIException</ref>);</webidl>
22321         <descriptive>
22322             <brief>
22323  The email addresses of the contact.
22324             </brief>
22325            <description>
22326             <p>
22327 By default, this attribute is set to empty array.
22328             </p>
22329            </description>
22330             <version>
22331  1.0
22332             </version>
22333             <Code>   var contactInit = {};
22334    var email = new tizen.ContactEmailAddress('deedee@ramones.com');
22335    contactInit.emails = [email];
22336  </Code>
22337         </descriptive>
22338         <Type type="array">
22339           <Type name="ContactEmailAddress"/>
22340         </Type>
22341         <SetRaises>
22342           <RaiseException name="WebAPIException"/>
22343         </SetRaises>
22344       </Attribute>
22345       <Attribute name="birthday" id="::Contact::Contact::birthday">
22346         <webidl>    attribute Date? birthday setraises(<ref>WebAPIException</ref>);</webidl>
22347         <descriptive>
22348             <brief>
22349  The birthday of the contact.
22350             </brief>
22351            <description>
22352             <p>
22353 Defines specify the birthday of the contact (see RFC 2426 -
22354 Section 3.1.5).
22355             </p>
22356             <p>
22357 By default, this attribute is set to <var>null</var>.
22358             </p>
22359            </description>
22360             <version>
22361  1.0
22362             </version>
22363             <Code>   var contactInit = {};
22364    contactInit.birthday = new Date(1996, 4, 15);
22365  </Code>
22366         </descriptive>
22367         <Type type="Date" nullable="nullable"/>
22368         <SetRaises>
22369           <RaiseException name="WebAPIException"/>
22370         </SetRaises>
22371       </Attribute>
22372       <Attribute name="anniversaries" id="::Contact::Contact::anniversaries">
22373         <webidl>    attribute <ref>ContactAnniversary</ref>[] anniversaries setraises(<ref>WebAPIException</ref>);</webidl>
22374         <descriptive>
22375             <brief>
22376  The list of anniversaries for the contact.
22377             </brief>
22378            <description>
22379             <p>
22380 Defines specify arbitrary anniversaries for the contact (in addition to the birthday).
22381             </p>
22382             <p>
22383 By default, this attribute is set to empty array.
22384             </p>
22385            </description>
22386             <version>
22387  1.0
22388             </version>
22389             <Code>   var contactInit = {};
22390    var marriage_anniv = new tizen.ContactAnniversary(new Date(1976, 11, 2), 'Marriage');
22391    contactInit.anniversaries = [marriage_anniv];
22392  </Code>
22393         </descriptive>
22394         <Type type="array">
22395           <Type name="ContactAnniversary"/>
22396         </Type>
22397         <SetRaises>
22398           <RaiseException name="WebAPIException"/>
22399         </SetRaises>
22400       </Attribute>
22401       <Attribute name="organizations" id="::Contact::Contact::organizations">
22402         <webidl>    attribute <ref>ContactOrganization</ref>[] organizations setraises(<ref>WebAPIException</ref>);</webidl>
22403         <descriptive>
22404             <brief>
22405  The organizations the contact belongs to.
22406             </brief>
22407            <description>
22408             <p>
22409 Contains information related to the contact's company or organization.
22410             </p>
22411             <p>
22412 For more details, see RFC 2426, Section 3.5.
22413             </p>
22414            </description>
22415             <version>
22416  1.0
22417             </version>
22418         </descriptive>
22419         <Type type="array">
22420           <Type name="ContactOrganization"/>
22421         </Type>
22422         <SetRaises>
22423           <RaiseException name="WebAPIException"/>
22424         </SetRaises>
22425       </Attribute>
22426       <Attribute name="notes" id="::Contact::Contact::notes">
22427         <webidl>    attribute DOMString[] notes setraises(<ref>WebAPIException</ref>);</webidl>
22428         <descriptive>
22429             <brief>
22430  The notes associated to the contact.
22431             </brief>
22432            <description>
22433             <p>
22434 To specify supplemental information or a comment related to the contact.
22435             </p>
22436             <p>
22437 For more details, see RFC 2426, Section 3.6.2.
22438             </p>
22439            </description>
22440             <version>
22441  2.0
22442             </version>
22443         </descriptive>
22444         <Type type="array">
22445           <Type type="DOMString"/>
22446         </Type>
22447         <SetRaises>
22448           <RaiseException name="WebAPIException"/>
22449         </SetRaises>
22450       </Attribute>
22451       <Attribute name="urls" id="::Contact::Contact::urls">
22452         <webidl>    attribute <ref>ContactWebSite</ref>[] urls setraises(<ref>WebAPIException</ref>);</webidl>
22453         <descriptive>
22454             <brief>
22455  The URLs associated to the contact.
22456             </brief>
22457            <description>
22458             <p>
22459 By default, this attribute is initialized to an empty array.
22460             </p>
22461             <p>
22462 In case multiple URLs are available, the first one is the default one.
22463 For more details, see RFC 2426, Section 3.6.8.
22464             </p>
22465            </description>
22466             <version>
22467  1.0
22468             </version>
22469         </descriptive>
22470         <Type type="array">
22471           <Type name="ContactWebSite"/>
22472         </Type>
22473         <SetRaises>
22474           <RaiseException name="WebAPIException"/>
22475         </SetRaises>
22476       </Attribute>
22477       <Attribute name="ringtoneURI" id="::Contact::Contact::ringtoneURI">
22478         <webidl>    attribute DOMString? ringtoneURI setraises(<ref>WebAPIException</ref>);</webidl>
22479         <descriptive>
22480             <brief>
22481  The URI to the custom ringtone for the contact.
22482             </brief>
22483            <description>
22484             <p>
22485 To specify a custom ringtone for the contact.
22486             </p>
22487             <p>
22488 By default, this attribute is initialized to <var>null</var>.
22489 This attribute only contains a local file URI scheme;
22490 For more details, see RFC 2426, Section 3.6.6.
22491             </p>
22492            </description>
22493             <version>
22494  1.0
22495             </version>
22496         </descriptive>
22497         <Type type="DOMString" nullable="nullable"/>
22498         <SetRaises>
22499           <RaiseException name="WebAPIException"/>
22500         </SetRaises>
22501       </Attribute>
22502       <Attribute name="groupIds" id="::Contact::Contact::groupIds">
22503         <webidl>    attribute <ref>ContactGroupId</ref>[] groupIds setraises(<ref>WebAPIException</ref>);</webidl>
22504         <descriptive>
22505             <brief>
22506  The groups the contact belongs to.
22507             </brief>
22508            <description>
22509             <p>
22510 To associate groups to the contact.
22511             </p>
22512             <p>
22513 By default, this attribute is initialized to an empty array.
22514             </p>
22515             <p>
22516 In a case where multiple categories are available, the first one is the default one.
22517 See RFC 2426, Section 3.6.1.
22518             </p>
22519            </description>
22520             <version>
22521  2.0
22522             </version>
22523         </descriptive>
22524         <Type type="array">
22525           <Type name="ContactGroupId"/>
22526         </Type>
22527         <SetRaises>
22528           <RaiseException name="WebAPIException"/>
22529         </SetRaises>
22530       </Attribute>
22531       <Operation name="convertToString" id="::Contact::Contact::convertToString">
22532         <webidl>    DOMString convertToString(optional <ref>ContactTextFormat</ref>? format) raises(<ref>WebAPIException</ref>);</webidl>
22533         <descriptive>
22534             <brief>
22535  Converts the Contact item to a string format.
22536             </brief>
22537            <description>
22538             <p>
22539 A textual representation for the contact will be generated and returned synchronously.
22540 The export format is set via the format parameter.
22541             </p>
22542            </description>
22543             <version>
22544  1.0
22545             </version>
22546             <Code>  var addressbook;
22547
22548   // Define the error callback.
22549   function errorCB(err) {
22550     console.log( 'The following error occurred: ' +  err.name);
22551   }
22552
22553   // Define the contact find success callback.
22554   function contactsFoundCB(contacts) {
22555     try {
22556       // Convert the first contact to vCard 3.0 format
22557       var vcard = contacts[0].convertToString(&quot;VCARD_30&quot;);
22558       console.log('textual representation of the contact is: ' + vcard);
22559     } catch (err) {
22560       console.log( 'The following error occurred while converting: ' +  err.name);
22561     }
22562   }
22563
22564   // Get the default address book
22565   addressbook = tizen.contact.getDefaultAddressBook();
22566
22567   // Find all contact in the address book whose first name contains the string 'Chris'.
22568   var filter = new tizen.AttributeFilter('firstName', 'CONTAINS', 'Chris');
22569   try {
22570     addressbook.find(contactsFoundCB, errorCB, filter);
22571   } catch (err) {
22572     console.log( 'The following error occurred while finding: ' +  err.name);
22573   }
22574  </Code>
22575         </descriptive>
22576         <Type type="DOMString">
22577           <descriptive>
22578               <description><p>
22579  DOMString The string representation of the Contact item.
22580               </p></description>
22581           </descriptive>
22582         </Type>
22583         <ArgumentList>
22584           <Argument optional="optional" name="format">
22585             <descriptive>
22586                 <description><p>
22587  Format to use for export. If this value is <var>null</var> or empty, it converts to platform default format.
22588                 </p></description>
22589             </descriptive>
22590             <Type name="ContactTextFormat" nullable="nullable"/>
22591           </Argument>
22592         </ArgumentList>
22593         <Raises>
22594           <RaiseException name="WebAPIException">
22595             <descriptive>
22596                 <description><p>
22597  with error type TypeMismatchError, if any input parameter
22598 is not compatible with the expected type for that parameter.
22599                 </p></description>
22600                 <description><p>
22601  with error type SecurityError, if the functionality
22602 is not allowed.
22603                 </p></description>
22604                 <description><p>
22605  with error type NotSupportedError, if the feature
22606 is not supported.
22607                 </p></description>
22608                 <description><p>
22609  with error type UnknownError in any other error case.
22610                 </p></description>
22611             </descriptive>
22612           </RaiseException>
22613         </Raises>
22614       </Operation>
22615       <Operation name="clone" id="::Contact::Contact::clone">
22616         <webidl>    <ref>Contact</ref> clone() raises(<ref>WebAPIException</ref>);</webidl>
22617         <descriptive>
22618            <description>
22619             <p>
22620 Creates a clone of the Contact object, detached from any address book.
22621             </p>
22622             <p>
22623 The Contact object returned by the <var>clone()</var> method will have its identifier
22624 set to <var>null</var> and will be detached from any address book.
22625             </p>
22626            </description>
22627             <version>
22628  1.0
22629             </version>
22630             <Code>  // Get default address book.
22631   var addressbook = tizen.contact.getDefaultAddressBook();
22632
22633   var bob = new tizen.Contact();
22634   bob.name = new tizen.ContactName({firstName:'Bob',
22635                                     lastName:'Smith'});
22636   addressbook.add(bob);
22637   var alice = bob.clone();
22638   contact.name.firstName = &quot;Alice&quot;; // Bob's wife
22639   addressbook.add(alice);
22640  </Code>
22641         </descriptive>
22642         <Type name="Contact">
22643           <descriptive>
22644               <description><p>
22645  Contact A new clone of the Contact object.
22646               </p></description>
22647           </descriptive>
22648         </Type>
22649         <ArgumentList/>
22650         <Raises>
22651           <RaiseException name="WebAPIException">
22652             <descriptive>
22653                 <description><p>
22654  with error type SecurityError, if the functionality
22655 is not allowed.
22656                 </p></description>
22657                 <description><p>
22658  with error type NotSupportedError, if the feature
22659 is not supported.
22660                 </p></description>
22661                 <description><p>
22662  with error type UnknownError in any other error case.
22663                 </p></description>
22664             </descriptive>
22665           </RaiseException>
22666         </Raises>
22667       </Operation>
22668     </Interface>
22669     <Interface name="ContactRef" id="::Contact::ContactRef">
22670       <webidl>  [Constructor(<ref>AddressBookId</ref> addressBookId, <ref>ContactId</ref> contactId)]
22671   interface ContactRef {
22672     attribute <ref>AddressBookId</ref> addressBookId;
22673
22674     attribute <ref>ContactId</ref> contactId;
22675   };</webidl>
22676       <descriptive>
22677           <brief>
22678  The fully-defined contact reference.
22679           </brief>
22680          <description>
22681           <p>
22682 It contains both the identifier of the address book which the contact is in, and
22683 the contact identifier within this address book.
22684           </p>
22685           <p>
22686 This interface is used by other APIs to uniquely and globally identify contacts.
22687           </p>
22688          </description>
22689           <version>
22690  1.0
22691           </version>
22692       </descriptive>
22693       <ExtendedAttributeList>
22694         <ExtendedAttribute name="Constructor">
22695           <webidl>Constructor(<ref>AddressBookId</ref> addressBookId, <ref>ContactId</ref> contactId)</webidl>
22696           <ArgumentList>
22697             <Argument name="addressBookId">
22698               <Type name="AddressBookId"/>
22699             </Argument>
22700             <Argument name="contactId">
22701               <Type name="ContactId"/>
22702             </Argument>
22703           </ArgumentList>
22704         </ExtendedAttribute>
22705       </ExtendedAttributeList>
22706       <Attribute name="addressBookId" id="::Contact::ContactRef::addressBookId">
22707         <webidl>    attribute <ref>AddressBookId</ref> addressBookId;</webidl>
22708         <descriptive>
22709             <brief>
22710  The address book identifier.
22711             </brief>
22712             <version>
22713  1.0
22714             </version>
22715         </descriptive>
22716         <Type name="AddressBookId"/>
22717       </Attribute>
22718       <Attribute name="contactId" id="::Contact::ContactRef::contactId">
22719         <webidl>    attribute <ref>ContactId</ref> contactId;</webidl>
22720         <descriptive>
22721             <brief>
22722  The contact identifier inside the address book.
22723             </brief>
22724             <version>
22725  1.0
22726             </version>
22727         </descriptive>
22728         <Type name="ContactId"/>
22729       </Attribute>
22730     </Interface>
22731     <Dictionary name="ContactNameInit" id="::Contact::ContactNameInit">
22732       <webidl>  dictionary ContactNameInit {
22733     DOMString prefix;
22734     DOMString suffix;
22735     DOMString firstName;
22736     DOMString middleName;
22737     DOMString lastName;
22738     DOMString[] nicknames;
22739     DOMString phoneticFirstName;
22740     DOMString phoneticLastName;
22741   };</webidl>
22742       <descriptive>
22743           <brief>
22744  The properties of a ContactName, to pass to the ContactName constructor.
22745           </brief>
22746          <description>
22747           <p>
22748 See ContactName interface for more information about the members.
22749           </p>
22750          </description>
22751           <version>
22752  1.0
22753           </version>
22754       </descriptive>
22755       <DictionaryMember name="prefix" id="::Contact::ContactNameInit::prefix">
22756         <webidl>    DOMString prefix;</webidl>
22757         <Type type="DOMString"/>
22758       </DictionaryMember>
22759       <DictionaryMember name="suffix" id="::Contact::ContactNameInit::suffix">
22760         <webidl>    DOMString suffix;</webidl>
22761         <Type type="DOMString"/>
22762       </DictionaryMember>
22763       <DictionaryMember name="firstName" id="::Contact::ContactNameInit::firstName">
22764         <webidl>    DOMString firstName;</webidl>
22765         <Type type="DOMString"/>
22766       </DictionaryMember>
22767       <DictionaryMember name="middleName" id="::Contact::ContactNameInit::middleName">
22768         <webidl>    DOMString middleName;</webidl>
22769         <Type type="DOMString"/>
22770       </DictionaryMember>
22771       <DictionaryMember name="lastName" id="::Contact::ContactNameInit::lastName">
22772         <webidl>    DOMString lastName;</webidl>
22773         <Type type="DOMString"/>
22774       </DictionaryMember>
22775       <DictionaryMember name="nicknames" id="::Contact::ContactNameInit::nicknames">
22776         <webidl>    DOMString[] nicknames;</webidl>
22777         <Type type="array">
22778           <Type type="DOMString"/>
22779         </Type>
22780       </DictionaryMember>
22781       <DictionaryMember name="phoneticFirstName" id="::Contact::ContactNameInit::phoneticFirstName">
22782         <webidl>    DOMString phoneticFirstName;</webidl>
22783         <Type type="DOMString"/>
22784       </DictionaryMember>
22785       <DictionaryMember name="phoneticLastName" id="::Contact::ContactNameInit::phoneticLastName">
22786         <webidl>    DOMString phoneticLastName;</webidl>
22787         <Type type="DOMString"/>
22788       </DictionaryMember>
22789     </Dictionary>
22790     <Interface name="ContactName" id="::Contact::ContactName">
22791       <webidl>  [Constructor(optional <ref>ContactNameInit</ref>? nameInitDict)]
22792   interface ContactName {
22793     attribute DOMString? prefix;
22794
22795     attribute DOMString? suffix;
22796
22797     attribute DOMString? firstName;
22798
22799     attribute DOMString? middleName;
22800
22801     attribute DOMString? lastName;
22802
22803     attribute DOMString[] nicknames;
22804
22805     attribute DOMString? phoneticFirstName;
22806
22807     attribute DOMString? phoneticLastName;
22808
22809     readonly attribute DOMString? displayName;
22810   };</webidl>
22811       <descriptive>
22812           <brief>
22813  This interface contains all information related to a contact name.
22814           </brief>
22815           <version>
22816  1.0
22817           </version>
22818       </descriptive>
22819       <ExtendedAttributeList>
22820         <ExtendedAttribute name="Constructor">
22821           <webidl>Constructor(optional <ref>ContactNameInit</ref>? nameInitDict)</webidl>
22822           <ArgumentList>
22823             <Argument optional="optional" name="nameInitDict">
22824               <Type name="ContactNameInit" nullable="nullable"/>
22825             </Argument>
22826           </ArgumentList>
22827         </ExtendedAttribute>
22828       </ExtendedAttributeList>
22829       <Attribute name="prefix" id="::Contact::ContactName::prefix">
22830         <webidl>    attribute DOMString? prefix;</webidl>
22831         <descriptive>
22832             <brief>
22833  The name prefix of a contact.
22834             </brief>
22835            <description>
22836             <p>
22837 By default, this attribute is initialized to
22838 <var>null</var>. See also RFC 2426, Section 3.1.1.
22839             </p>
22840            </description>
22841             <version>
22842  1.0
22843             </version>
22844             <Code>   contact.name.prefix = &quot;Dr.&quot;;
22845  </Code>
22846         </descriptive>
22847         <Type type="DOMString" nullable="nullable"/>
22848       </Attribute>
22849       <Attribute name="suffix" id="::Contact::ContactName::suffix">
22850         <webidl>    attribute DOMString? suffix;</webidl>
22851         <descriptive>
22852             <brief>
22853  The name suffix of a contact.
22854             </brief>
22855            <description>
22856             <p>
22857 By default, this attribute is initialized to
22858 <var>null</var>. See also RFC 2426, Section 3.1.1.
22859             </p>
22860            </description>
22861             <version>
22862  2.0
22863             </version>
22864             <Code>   contact.name.suffix = &quot;Jr.&quot;;
22865  </Code>
22866         </descriptive>
22867         <Type type="DOMString" nullable="nullable"/>
22868       </Attribute>
22869       <Attribute name="firstName" id="::Contact::ContactName::firstName">
22870         <webidl>    attribute DOMString? firstName;</webidl>
22871         <descriptive>
22872             <brief>
22873  The first (given) name of a contact.
22874             </brief>
22875            <description>
22876             <p>
22877 By default, this attribute is initialized to
22878 <var>null</var>. See also RFC 2426, Section 3.1.1.
22879             </p>
22880            </description>
22881             <version>
22882  1.0
22883             </version>
22884             <Code>   contact.name.firstName = 'Douglas';
22885  </Code>
22886         </descriptive>
22887         <Type type="DOMString" nullable="nullable"/>
22888       </Attribute>
22889       <Attribute name="middleName" id="::Contact::ContactName::middleName">
22890         <webidl>    attribute DOMString? middleName;</webidl>
22891         <descriptive>
22892             <brief>
22893  The middle name of a contact.
22894             </brief>
22895            <description>
22896             <p>
22897 By default, this attribute is initialized to
22898 <var>null</var>. See also RFC 2426, Section 3.1.1.
22899             </p>
22900            </description>
22901             <version>
22902  1.0
22903             </version>
22904             <Code>   contact.name.middleName = 'Glenn';
22905  </Code>
22906         </descriptive>
22907         <Type type="DOMString" nullable="nullable"/>
22908       </Attribute>
22909       <Attribute name="lastName" id="::Contact::ContactName::lastName">
22910         <webidl>    attribute DOMString? lastName;</webidl>
22911         <descriptive>
22912             <brief>
22913  The last (family) name of a contact.
22914             </brief>
22915            <description>
22916             <p>
22917 By default, this attribute is initialized to
22918 <var>null</var>. See also RFC 2426, Section 3.1.1.
22919             </p>
22920            </description>
22921             <version>
22922  1.0
22923             </version>
22924             <Code>   contact.name.lastName = 'Colvin';
22925  </Code>
22926         </descriptive>
22927         <Type type="DOMString" nullable="nullable"/>
22928       </Attribute>
22929       <Attribute name="nicknames" id="::Contact::ContactName::nicknames">
22930         <webidl>    attribute DOMString[] nicknames;</webidl>
22931         <descriptive>
22932             <brief>
22933  The nicknames of a contact.
22934             </brief>
22935            <description>
22936             <p>
22937 The nickname is a name used instead of, or in addition to, the given name of a contact,
22938 place, or thing. It can also be used to specify a familiar form of a proper name.
22939             </p>
22940             <p>
22941 By default, this attribute is initialized to an empty array.
22942             </p>
22943             <p>
22944 In case multiple nicknames are available the first one is the default.
22945 See RFC 2426, Section 3.1.3.
22946             </p>
22947            </description>
22948             <version>
22949  1.0
22950             </version>
22951             <Code>   contact.name.nickNames = ['Dee Dee'];
22952  </Code>
22953         </descriptive>
22954         <Type type="array">
22955           <Type type="DOMString"/>
22956         </Type>
22957       </Attribute>
22958       <Attribute name="phoneticFirstName" id="::Contact::ContactName::phoneticFirstName">
22959         <webidl>    attribute DOMString? phoneticFirstName;</webidl>
22960         <descriptive>
22961             <brief>
22962  The phonetic first name of a contact.
22963             </brief>
22964            <description>
22965             <p>
22966 Describes how the first name should be
22967 pronounced. This is very important in
22968 some languages, such as Japanese, because the
22969 same 'Kanji' may have several pronunciations.
22970             </p>
22971             <p>
22972 By default, this attribute is set to <var>null</var>.
22973             </p>
22974            </description>
22975             <version>
22976  2.0
22977             </version>
22978         </descriptive>
22979         <Type type="DOMString" nullable="nullable"/>
22980       </Attribute>
22981       <Attribute name="phoneticLastName" id="::Contact::ContactName::phoneticLastName">
22982         <webidl>    attribute DOMString? phoneticLastName;</webidl>
22983         <descriptive>
22984             <brief>
22985  The phonetic last name of a contact.
22986             </brief>
22987            <description>
22988             <p>
22989 Describes how the last name should be
22990 pronounced. This is very important in
22991 some languages, such as Japanese, because the
22992 same 'Kanji' may have several pronunciations.
22993             </p>
22994             <p>
22995 By default, this attribute is set to <var>null</var>.
22996             </p>
22997            </description>
22998             <version>
22999  2.0
23000             </version>
23001         </descriptive>
23002         <Type type="DOMString" nullable="nullable"/>
23003       </Attribute>
23004       <Attribute readonly="readonly" name="displayName" id="::Contact::ContactName::displayName">
23005         <webidl>    readonly attribute DOMString? displayName;</webidl>
23006         <descriptive>
23007             <brief>
23008  The display name of a contact.
23009             </brief>
23010            <description>
23011             <p>
23012 The string which can be displayed to identify the contact. It is composed of the first
23013 and last names if available, otherwise, it will fall back to the most adequate
23014 field available to identify the contact (such as nickname).
23015             </p>
23016             <p>
23017 By default, this attribute is set to <var>null</var>. Initially, once a contact is added to an address book, this value is composed.
23018             </p>
23019            </description>
23020             <version>
23021  1.0
23022             </version>
23023         </descriptive>
23024         <Type type="DOMString" nullable="nullable"/>
23025       </Attribute>
23026     </Interface>
23027     <Dictionary name="ContactOrganizationInit" id="::Contact::ContactOrganizationInit">
23028       <webidl>  dictionary ContactOrganizationInit {
23029     DOMString name;
23030     DOMString department;
23031     DOMString title;
23032     DOMString role;
23033     DOMString logoURI;
23034   };</webidl>
23035       <descriptive>
23036           <brief>
23037  The properties of a ContactOrganization, to pass to the ContactOrganization constructor.
23038           </brief>
23039          <description>
23040           <p>
23041 See ContactOrganization interface for information about members.
23042           </p>
23043          </description>
23044           <version>
23045  1.0
23046           </version>
23047       </descriptive>
23048       <DictionaryMember name="name" id="::Contact::ContactOrganizationInit::name">
23049         <webidl>    DOMString name;</webidl>
23050         <Type type="DOMString"/>
23051       </DictionaryMember>
23052       <DictionaryMember name="department" id="::Contact::ContactOrganizationInit::department">
23053         <webidl>    DOMString department;</webidl>
23054         <Type type="DOMString"/>
23055       </DictionaryMember>
23056       <DictionaryMember name="title" id="::Contact::ContactOrganizationInit::title">
23057         <webidl>    DOMString title;</webidl>
23058         <Type type="DOMString"/>
23059       </DictionaryMember>
23060       <DictionaryMember name="role" id="::Contact::ContactOrganizationInit::role">
23061         <webidl>    DOMString role;</webidl>
23062         <Type type="DOMString"/>
23063       </DictionaryMember>
23064       <DictionaryMember name="logoURI" id="::Contact::ContactOrganizationInit::logoURI">
23065         <webidl>    DOMString logoURI;</webidl>
23066         <Type type="DOMString"/>
23067       </DictionaryMember>
23068     </Dictionary>
23069     <Interface name="ContactOrganization" id="::Contact::ContactOrganization">
23070       <webidl>  [Constructor(optional <ref>ContactOrganizationInit</ref>? orgInitDict)]
23071   interface ContactOrganization {
23072     attribute DOMString? name;
23073
23074     attribute DOMString? department;
23075
23076     attribute DOMString? title;
23077
23078     attribute DOMString? role;
23079
23080     attribute DOMString? logoURI;
23081   };</webidl>
23082       <descriptive>
23083           <brief>
23084  This interface contains the information about the organization or
23085 company that a contact belongs to.
23086           </brief>
23087          <description>
23088           <p>
23089 By default, each of the attributes of this interface are <var>null</var>.
23090           </p>
23091           <p>
23092 For more details, see RFC 2426, Section 3.5.
23093           </p>
23094          </description>
23095           <version>
23096  1.0
23097           </version>
23098           <Code> var organization = new tizen.ContactOrganization({name: &quot;Intel&quot;, role: &quot;SW Engineer&quot;});
23099  </Code>
23100       </descriptive>
23101       <ExtendedAttributeList>
23102         <ExtendedAttribute name="Constructor">
23103           <webidl>Constructor(optional <ref>ContactOrganizationInit</ref>? orgInitDict)</webidl>
23104           <ArgumentList>
23105             <Argument optional="optional" name="orgInitDict">
23106               <Type name="ContactOrganizationInit" nullable="nullable"/>
23107             </Argument>
23108           </ArgumentList>
23109         </ExtendedAttribute>
23110       </ExtendedAttributeList>
23111       <Attribute name="name" id="::Contact::ContactOrganization::name">
23112         <webidl>    attribute DOMString? name;</webidl>
23113         <descriptive>
23114             <brief>
23115  The name of an organization.
23116             </brief>
23117            <description>
23118             <p>
23119 For more details, see RFC 2426, Section 3.5.5.
23120             </p>
23121            </description>
23122             <version>
23123  1.0
23124             </version>
23125         </descriptive>
23126         <Type type="DOMString" nullable="nullable"/>
23127       </Attribute>
23128       <Attribute name="department" id="::Contact::ContactOrganization::department">
23129         <webidl>    attribute DOMString? department;</webidl>
23130         <descriptive>
23131             <brief>
23132  The organizational unit name.
23133             </brief>
23134            <description>
23135             <p>
23136 For more details, see RFC 2426, Section 3.5.5.
23137             </p>
23138            </description>
23139             <version>
23140  1.0
23141             </version>
23142         </descriptive>
23143         <Type type="DOMString" nullable="nullable"/>
23144       </Attribute>
23145       <Attribute name="title" id="::Contact::ContactOrganization::title">
23146         <webidl>    attribute DOMString? title;</webidl>
23147         <descriptive>
23148             <brief>
23149  The job title.
23150             </brief>
23151            <description>
23152             <p>
23153 To specify the job title, functional position or function (such as 'Director,
23154 Research and Development').
23155             </p>
23156             <p>
23157 For more details, see RFC 2426, Section 3.5.1.
23158             </p>
23159            </description>
23160             <version>
23161  1.0
23162             </version>
23163         </descriptive>
23164         <Type type="DOMString" nullable="nullable"/>
23165       </Attribute>
23166       <Attribute name="role" id="::Contact::ContactOrganization::role">
23167         <webidl>    attribute DOMString? role;</webidl>
23168         <descriptive>
23169             <brief>
23170  An attribute to store the role, occupation, or business category
23171 (such as 'Programmer').
23172             </brief>
23173            <description>
23174             <p>
23175 For more details, see RFC 2426, Section 3.5.2.
23176             </p>
23177            </description>
23178             <version>
23179  1.0
23180             </version>
23181         </descriptive>
23182         <Type type="DOMString" nullable="nullable"/>
23183       </Attribute>
23184       <Attribute name="logoURI" id="::Contact::ContactOrganization::logoURI">
23185         <webidl>    attribute DOMString? logoURI;</webidl>
23186         <descriptive>
23187             <brief>
23188  The URI to the logo of a company.
23189             </brief>
23190            <description>
23191             <p>
23192 To specify a graphic image of a logo associated with an organization.
23193 This attribute only contains file URI Scheme;
23194 remote pictures could be loaded to local with Download API.
23195 For more details, see RFC 2426, Section 3.5.3.
23196             </p>
23197            </description>
23198             <version>
23199  1.0
23200             </version>
23201         </descriptive>
23202         <Type type="DOMString" nullable="nullable"/>
23203       </Attribute>
23204     </Interface>
23205     <Interface name="ContactWebSite" id="::Contact::ContactWebSite">
23206       <webidl>  [Constructor(DOMString url, optional DOMString type)]
23207   interface ContactWebSite
23208   {
23209     attribute DOMString url;
23210
23211     attribute DOMString type;
23212   };</webidl>
23213       <descriptive>
23214           <brief>
23215  The ContactWebSite object that contains the URL and the type of web site.
23216           </brief>
23217          <description>
23218           <p>
23219 For more details, see RFC 2426, Section 3.6.8.
23220           </p>
23221          </description>
23222           <version>
23223  1.0
23224           </version>
23225           <Code>  var contactInit = {}
23226   var blog = new tizen.ContactWebSite('http://www.domain.com', 'BLOG');
23227   contactInit.urls = [blog];
23228  </Code>
23229       </descriptive>
23230       <ExtendedAttributeList>
23231         <ExtendedAttribute name="Constructor">
23232           <webidl>Constructor(DOMString url, optional DOMString type)</webidl>
23233           <ArgumentList>
23234             <Argument name="url">
23235               <Type type="DOMString"/>
23236             </Argument>
23237             <Argument optional="optional" name="type">
23238               <Type type="DOMString"/>
23239             </Argument>
23240           </ArgumentList>
23241         </ExtendedAttribute>
23242       </ExtendedAttributeList>
23243       <Attribute name="url" id="::Contact::ContactWebSite::url">
23244         <webidl>    attribute DOMString url;</webidl>
23245         <descriptive>
23246             <brief>
23247  The URL for the contact's web site.
23248             </brief>
23249             <version>
23250  1.0
23251             </version>
23252         </descriptive>
23253         <Type type="DOMString"/>
23254       </Attribute>
23255       <Attribute name="type" id="::Contact::ContactWebSite::type">
23256         <webidl>    attribute DOMString type;</webidl>
23257         <descriptive>
23258             <brief>
23259  The type of web site.
23260             </brief>
23261            <description>
23262             <p>
23263 At least the following values must be supported:
23264             </p>
23265             <ul>
23266               <li>
23267 HOMEPAGE - Indicates a home page.              </li>
23268               <li>
23269 BLOG - Indicates a blog.              </li>
23270             </ul>
23271             <p>
23272 By default, this attribute is set to HOMEPAGE.
23273             </p>
23274            </description>
23275             <version>
23276  1.0
23277             </version>
23278         </descriptive>
23279         <Type type="DOMString"/>
23280       </Attribute>
23281     </Interface>
23282     <Interface name="ContactAnniversary" id="::Contact::ContactAnniversary">
23283       <webidl>  [Constructor(Date date, optional DOMString? label)]
23284   interface ContactAnniversary
23285   {
23286     attribute Date date;
23287
23288     attribute DOMString? label;
23289   };</webidl>
23290       <descriptive>
23291           <brief>
23292  This interface implements the <em>ContactAnniversary </em>object that contains the date and description of an anniversary.
23293           </brief>
23294           <version>
23295  1.0
23296           </version>
23297           <Code>  var contactInit = {}
23298   var marriage_anniv = new tizen.ContactAnniversary(new Date(1976, 11, 2), 'Marriage');
23299   contactInit.anniversaries = [marriage_anniv];
23300  </Code>
23301       </descriptive>
23302       <ExtendedAttributeList>
23303         <ExtendedAttribute name="Constructor">
23304           <webidl>Constructor(Date date, optional DOMString? label)</webidl>
23305           <ArgumentList>
23306             <Argument name="date">
23307               <Type type="Date"/>
23308             </Argument>
23309             <Argument optional="optional" name="label">
23310               <Type type="DOMString" nullable="nullable"/>
23311             </Argument>
23312           </ArgumentList>
23313         </ExtendedAttribute>
23314       </ExtendedAttributeList>
23315       <Attribute name="date" id="::Contact::ContactAnniversary::date">
23316         <webidl>    attribute Date date;</webidl>
23317         <descriptive>
23318             <brief>
23319  The date of an anniversary.
23320             </brief>
23321             <version>
23322  1.0
23323             </version>
23324         </descriptive>
23325         <Type type="Date"/>
23326       </Attribute>
23327       <Attribute name="label" id="::Contact::ContactAnniversary::label">
23328         <webidl>    attribute DOMString? label;</webidl>
23329         <descriptive>
23330             <brief>
23331  The text describing an anniversary.
23332             </brief>
23333            <description>
23334             <p>
23335 By default, this attribute is set to <var>null</var>.
23336             </p>
23337            </description>
23338             <version>
23339  1.0
23340             </version>
23341         </descriptive>
23342         <Type type="DOMString" nullable="nullable"/>
23343       </Attribute>
23344     </Interface>
23345     <Dictionary name="ContactAddressInit" id="::Contact::ContactAddressInit">
23346       <webidl>  dictionary ContactAddressInit
23347   {
23348     DOMString country;
23349     DOMString region;
23350     DOMString city;
23351     DOMString streetAddress;
23352     DOMString additionalInformation;
23353     DOMString postalCode;
23354     boolean isDefault;
23355     DOMString[] types;
23356   };</webidl>
23357       <descriptive>
23358           <brief>
23359  The properties of a ContactAddress to pass to the ContactAddress constructor.
23360           </brief>
23361          <description>
23362           <p>
23363 See ContactAddress interface for more information about the members.
23364           </p>
23365          </description>
23366           <version>
23367  1.0
23368           </version>
23369       </descriptive>
23370       <DictionaryMember name="country" id="::Contact::ContactAddressInit::country">
23371         <webidl>    DOMString country;</webidl>
23372         <Type type="DOMString"/>
23373       </DictionaryMember>
23374       <DictionaryMember name="region" id="::Contact::ContactAddressInit::region">
23375         <webidl>    DOMString region;</webidl>
23376         <Type type="DOMString"/>
23377       </DictionaryMember>
23378       <DictionaryMember name="city" id="::Contact::ContactAddressInit::city">
23379         <webidl>    DOMString city;</webidl>
23380         <Type type="DOMString"/>
23381       </DictionaryMember>
23382       <DictionaryMember name="streetAddress" id="::Contact::ContactAddressInit::streetAddress">
23383         <webidl>    DOMString streetAddress;</webidl>
23384         <Type type="DOMString"/>
23385       </DictionaryMember>
23386       <DictionaryMember name="additionalInformation" id="::Contact::ContactAddressInit::additionalInformation">
23387         <webidl>    DOMString additionalInformation;</webidl>
23388         <Type type="DOMString"/>
23389       </DictionaryMember>
23390       <DictionaryMember name="postalCode" id="::Contact::ContactAddressInit::postalCode">
23391         <webidl>    DOMString postalCode;</webidl>
23392         <Type type="DOMString"/>
23393       </DictionaryMember>
23394       <DictionaryMember name="isDefault" id="::Contact::ContactAddressInit::isDefault">
23395         <webidl>    boolean isDefault;</webidl>
23396         <Type type="boolean"/>
23397       </DictionaryMember>
23398       <DictionaryMember name="types" id="::Contact::ContactAddressInit::types">
23399         <webidl>    DOMString[] types;</webidl>
23400         <Type type="array">
23401           <Type type="DOMString"/>
23402         </Type>
23403       </DictionaryMember>
23404     </Dictionary>
23405     <Interface name="ContactAddress" id="::Contact::ContactAddress">
23406       <webidl>  [Constructor(optional <ref>ContactAddressInit</ref>? addressInitDict)]
23407   interface ContactAddress
23408   {
23409     attribute DOMString? country;
23410
23411     attribute DOMString? region;
23412
23413     attribute DOMString? city;
23414
23415     attribute DOMString? streetAddress;
23416
23417     attribute DOMString? additionalInformation;
23418
23419     attribute DOMString? postalCode;
23420
23421     attribute boolean isDefault;
23422
23423     attribute DOMString[] types;
23424   };</webidl>
23425       <descriptive>
23426           <brief>
23427  This interface contains a set of attributes that represent a particular point
23428 on the Earth's surface.
23429           </brief>
23430          <description>
23431           <p>
23432 Except isDefault and types attributes, each of the attributes of this interface are set to <var>null</var> by default.
23433           </p>
23434           <p>
23435 For more details, see RFC 2426, Section 3.2.1.
23436           </p>
23437          </description>
23438           <version>
23439  1.0
23440           </version>
23441           <Code>   var contactInit = {};
23442    var contactAddress = new tizen.ContactAddress({streetAddress:'Gran Via, 32',
23443                                                   postalCode:'50013', city:'Zaragoza',
23444                                                  country:'ES', types:['WORK']});
23445    contactInit.contactAddress = [contactAddress];
23446  </Code>
23447       </descriptive>
23448       <ExtendedAttributeList>
23449         <ExtendedAttribute name="Constructor">
23450           <webidl>Constructor(optional <ref>ContactAddressInit</ref>? addressInitDict)</webidl>
23451           <ArgumentList>
23452             <Argument optional="optional" name="addressInitDict">
23453               <Type name="ContactAddressInit" nullable="nullable"/>
23454             </Argument>
23455           </ArgumentList>
23456         </ExtendedAttribute>
23457       </ExtendedAttributeList>
23458       <Attribute name="country" id="::Contact::ContactAddress::country">
23459         <webidl>    attribute DOMString? country;</webidl>
23460         <descriptive>
23461             <brief>
23462  The country of the address.
23463             </brief>
23464            <description>
23465             <p>
23466 It is recommended that the country is specified
23467 using the two-letter [ISO 3166-1] code.
23468             </p>
23469            </description>
23470             <version>
23471  1.0
23472             </version>
23473         </descriptive>
23474         <Type type="DOMString" nullable="nullable"/>
23475       </Attribute>
23476       <Attribute name="region" id="::Contact::ContactAddress::region">
23477         <webidl>    attribute DOMString? region;</webidl>
23478         <descriptive>
23479             <brief>
23480  The name of a country subdivision.
23481             </brief>
23482            <description>
23483             <p>
23484 For example, State (United States) or Province (Spain).
23485             </p>
23486            </description>
23487             <version>
23488  1.0
23489             </version>
23490         </descriptive>
23491         <Type type="DOMString" nullable="nullable"/>
23492       </Attribute>
23493       <Attribute name="city" id="::Contact::ContactAddress::city">
23494         <webidl>    attribute DOMString? city;</webidl>
23495         <descriptive>
23496             <brief>
23497  The name of the locality. For example, the city, county, town, or village.
23498             </brief>
23499             <version>
23500  1.0
23501             </version>
23502         </descriptive>
23503         <Type type="DOMString" nullable="nullable"/>
23504       </Attribute>
23505       <Attribute name="streetAddress" id="::Contact::ContactAddress::streetAddress">
23506         <webidl>    attribute DOMString? streetAddress;</webidl>
23507         <descriptive>
23508             <brief>
23509  The street address, for example, building number and street name/number.
23510             </brief>
23511             <version>
23512  1.0
23513             </version>
23514         </descriptive>
23515         <Type type="DOMString" nullable="nullable"/>
23516       </Attribute>
23517       <Attribute name="additionalInformation" id="::Contact::ContactAddress::additionalInformation">
23518         <webidl>    attribute DOMString? additionalInformation;</webidl>
23519         <descriptive>
23520             <brief>
23521  An attribute to capture any other address details that are required for an accurate address.
23522 For example, floor number, apartment number, suite name, the name of an office occupant, etc.
23523             </brief>
23524             <version>
23525  1.0
23526             </version>
23527         </descriptive>
23528         <Type type="DOMString" nullable="nullable"/>
23529       </Attribute>
23530       <Attribute name="postalCode" id="::Contact::ContactAddress::postalCode">
23531         <webidl>    attribute DOMString? postalCode;</webidl>
23532         <descriptive>
23533             <brief>
23534  The postal code of the location (also known as the zip code in the US).
23535             </brief>
23536             <version>
23537  1.0
23538             </version>
23539         </descriptive>
23540         <Type type="DOMString" nullable="nullable"/>
23541       </Attribute>
23542       <Attribute name="isDefault" id="::Contact::ContactAddress::isDefault">
23543         <webidl>    attribute boolean isDefault;</webidl>
23544         <descriptive>
23545             <brief>
23546  The default state of an address.
23547             </brief>
23548            <description>
23549             <p>
23550 Indicates if the address was marked as <em>default</em> or not for the contact.
23551 The only one among addresses for a person can have default property,
23552 so that this attribute might be changed without explicit modification
23553 according to the policy of platform.
23554             </p>
23555             <p>
23556 It deals with the 'pref' TYPE on RFC 2426, Section 3.2.1
23557             </p>
23558             <p>
23559 By default, this attribute is set to <var>false</var>.
23560             </p>
23561            </description>
23562             <version>
23563  2.0
23564             </version>
23565         </descriptive>
23566         <Type type="boolean"/>
23567       </Attribute>
23568       <Attribute name="types" id="::Contact::ContactAddress::types">
23569         <webidl>    attribute DOMString[] types;</webidl>
23570         <descriptive>
23571             <brief>
23572  The case insensitive list of address types.
23573             </brief>
23574            <description>
23575             <p>
23576 For more details, see RFC 2426, Section 3.2.1.
23577             </p>
23578             <p>
23579 At least the following values must be supported:
23580             </p>
23581             <ul>
23582               <li>
23583 WORK - Indicates a work address              </li>
23584               <li>
23585 HOME - Indicates a home address              </li>
23586             </ul>
23587             <p>
23588 By default, this attribute is set to HOME.
23589             </p>
23590            </description>
23591             <version>
23592  1.0
23593             </version>
23594         </descriptive>
23595         <Type type="array">
23596           <Type type="DOMString"/>
23597         </Type>
23598       </Attribute>
23599     </Interface>
23600     <Interface name="ContactPhoneNumber" id="::Contact::ContactPhoneNumber">
23601       <webidl>  [Constructor(DOMString number, optional DOMString[] types, optional boolean isDefault)]
23602   interface ContactPhoneNumber
23603   {
23604     attribute DOMString number;
23605
23606     attribute boolean isDefault;
23607
23608     attribute DOMString[] types;
23609   };</webidl>
23610       <descriptive>
23611           <brief>
23612  The ContactPhoneNumber object that contains the number and the type of phone number.
23613           </brief>
23614          <description>
23615           <p>
23616 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.
23617 At searching by phoneNumber, matchflag &quot;CONTAINS&quot; provides a result set which is retrieved from normalized phoneNumber as searching value.
23618           </p>
23619           <p>
23620 For more details, see RFC 2426, Section 3.3.1
23621           </p>
23622          </description>
23623           <version>
23624  1.0
23625           </version>
23626           <Code>   var contactInit = {};
23627    var phoneNumber = new tizen.ContactPhoneNumber('123456789', ['WORK','VOICE'], true);
23628    contactInit.phoneNumbers = [phoneNumber];
23629  </Code>
23630       </descriptive>
23631       <ExtendedAttributeList>
23632         <ExtendedAttribute name="Constructor">
23633           <webidl>Constructor(DOMString number, optional DOMString[] types, optional boolean isDefault)</webidl>
23634           <ArgumentList>
23635             <Argument name="number">
23636               <Type type="DOMString"/>
23637             </Argument>
23638             <Argument optional="optional" name="types">
23639               <Type type="array">
23640                 <Type type="DOMString"/>
23641               </Type>
23642             </Argument>
23643             <Argument optional="optional" name="isDefault">
23644               <Type type="boolean"/>
23645             </Argument>
23646           </ArgumentList>
23647         </ExtendedAttribute>
23648       </ExtendedAttributeList>
23649       <Attribute name="number" id="::Contact::ContactPhoneNumber::number">
23650         <webidl>    attribute DOMString number;</webidl>
23651         <descriptive>
23652             <brief>
23653  The full phone number.
23654             </brief>
23655             <version>
23656  1.0
23657             </version>
23658         </descriptive>
23659         <Type type="DOMString"/>
23660       </Attribute>
23661       <Attribute name="isDefault" id="::Contact::ContactPhoneNumber::isDefault">
23662         <webidl>    attribute boolean isDefault;</webidl>
23663         <descriptive>
23664             <brief>
23665  The default state of the phone number.
23666             </brief>
23667            <description>
23668             <p>
23669 Indicates if the phone number was marked as <em>default</em> or not for the contact.
23670 The only one among phone numbers for a person can have default property,
23671 so that this attribute might be changed without explicit modification
23672 according to the policy of platform.
23673             </p>
23674             <p>
23675 It deals with the 'pref' TYPE on RFC 2426, Section 3.3.1
23676             </p>
23677             <p>
23678 By default, this attribute is set to false.
23679             </p>
23680            </description>
23681             <version>
23682  2.0
23683             </version>
23684         </descriptive>
23685         <Type type="boolean"/>
23686       </Attribute>
23687       <Attribute name="types" id="::Contact::ContactPhoneNumber::types">
23688         <webidl>    attribute DOMString[] types;</webidl>
23689         <descriptive>
23690             <brief>
23691  The case insensitive list of phone types, as defined in RFC 2426.
23692             </brief>
23693            <description>
23694             <p>
23695 Specifies the intended use of the phone number.
23696             </p>
23697             <p>
23698 At least the following values must be supported:
23699             </p>
23700             <ul>
23701               <li>
23702 <var>WORK</var> - Indicates a work number              </li>
23703               <li>
23704 <var>HOME</var> - Indicates a home number              </li>
23705               <li>
23706 <var>VOICE</var> - Indicates a voice number (Default)              </li>
23707               <li>
23708 <var>FAX</var> - Indicates a facsimile number              </li>
23709               <li>
23710 <var>MSG</var> - Indicates a messaging service on the number              </li>
23711               <li>
23712 <var>CELL</var> - Indicates a cellular number              </li>
23713               <li>
23714 <var>PAGER</var> - Indicates a pager number              </li>
23715               <li>
23716 <var>BBS</var> - Indicates a bulletin board service number              </li>
23717               <li>
23718 <var>MODEM</var> - Indicates a MODEM number              </li>
23719               <li>
23720 <var>CAR</var> - Indicates a car-phone number              </li>
23721               <li>
23722 <var>ISDN</var> - Indicates an ISDN number              </li>
23723               <li>
23724 <var>VIDEO</var> - Indicates a video-phone number              </li>
23725               <li>
23726 <var>PCS</var> - Personal Communication Standard               </li>
23727             </ul>
23728            </description>
23729             <version>
23730  1.0
23731             </version>
23732         </descriptive>
23733         <Type type="array">
23734           <Type type="DOMString"/>
23735         </Type>
23736       </Attribute>
23737     </Interface>
23738     <Interface name="ContactEmailAddress" id="::Contact::ContactEmailAddress">
23739       <webidl>  [Constructor(DOMString email, optional DOMString[] types, optional boolean isDefault)]
23740   interface ContactEmailAddress
23741   {
23742     attribute DOMString email;
23743
23744     attribute boolean isDefault;
23745
23746     attribute DOMString[] types;
23747   };</webidl>
23748       <descriptive>
23749           <brief>
23750  The ContactEmailAddress object that contains the email address and the type of email address.
23751           </brief>
23752          <description>
23753           <p>
23754 For more details, see RFC 2426, Section 3.3.2.
23755           </p>
23756          </description>
23757           <version>
23758  1.0
23759           </version>
23760           <Code>  var contactInit = {};
23761   var email = new tizen.ContactEmailAddress('user@domain.com', ['WORK']);
23762   contactInit.emails = [email];
23763  </Code>
23764       </descriptive>
23765       <ExtendedAttributeList>
23766         <ExtendedAttribute name="Constructor">
23767           <webidl>Constructor(DOMString email, optional DOMString[] types, optional boolean isDefault)</webidl>
23768           <ArgumentList>
23769             <Argument name="email">
23770               <Type type="DOMString"/>
23771             </Argument>
23772             <Argument optional="optional" name="types">
23773               <Type type="array">
23774                 <Type type="DOMString"/>
23775               </Type>
23776             </Argument>
23777             <Argument optional="optional" name="isDefault">
23778               <Type type="boolean"/>
23779             </Argument>
23780           </ArgumentList>
23781         </ExtendedAttribute>
23782       </ExtendedAttributeList>
23783       <Attribute name="email" id="::Contact::ContactEmailAddress::email">
23784         <webidl>    attribute DOMString email;</webidl>
23785         <descriptive>
23786             <brief>
23787  The full email address.
23788             </brief>
23789             <version>
23790  1.0
23791             </version>
23792         </descriptive>
23793         <Type type="DOMString"/>
23794       </Attribute>
23795       <Attribute name="isDefault" id="::Contact::ContactEmailAddress::isDefault">
23796         <webidl>    attribute boolean isDefault;</webidl>
23797         <descriptive>
23798             <brief>
23799  The default state of an email address.
23800             </brief>
23801            <description>
23802             <p>
23803 Indicates if the email address was marked as <em>default</em> or not for the contact.
23804 The only one among email addresses for a person can have default property,
23805 so that this attribute might be changed without explicit modification
23806 according to the policy of platform.
23807             </p>
23808             <p>
23809 It deals with the 'pref' TYPE on RFC 2426, Section 3.3.2
23810             </p>
23811             <p>
23812 By default, this attribute is set to false.
23813             </p>
23814            </description>
23815             <version>
23816  2.0
23817             </version>
23818         </descriptive>
23819         <Type type="boolean"/>
23820       </Attribute>
23821       <Attribute name="types" id="::Contact::ContactEmailAddress::types">
23822         <webidl>    attribute DOMString[] types;</webidl>
23823         <descriptive>
23824             <brief>
23825  The case insensitive list of email types.
23826             </brief>
23827            <description>
23828             <p>
23829 Specifies the intended use of the email address.
23830             </p>
23831             <p>
23832 At least the following values must be supported:
23833             </p>
23834             <ul>
23835               <li>
23836 WORK - Indicates a work email              </li>
23837               <li>
23838 HOME - Indicates a home email              </li>
23839               <li>
23840 MOBILE - Indicates a mobile email              </li>
23841             </ul>
23842             <p>
23843 By default, this attribute is set to WORK.
23844             </p>
23845            </description>
23846             <version>
23847  1.0
23848             </version>
23849         </descriptive>
23850         <Type type="array">
23851           <Type type="DOMString"/>
23852         </Type>
23853       </Attribute>
23854     </Interface>
23855     <Interface name="ContactGroup" id="::Contact::ContactGroup">
23856       <webidl>  [Constructor(DOMString name, optional DOMString? ringtoneURI, optional DOMString? photoURI)]
23857   interface ContactGroup
23858   {
23859     readonly attribute <ref>ContactGroupId</ref>? id;
23860
23861     readonly attribute <ref>AddressBookId</ref>? addressBookId;
23862
23863     attribute DOMString name;
23864
23865     attribute DOMString? ringtoneURI;
23866
23867     attribute DOMString? photoURI;
23868
23869     readonly attribute DOMString readOnly;
23870   };</webidl>
23871       <descriptive>
23872           <brief>
23873  The group object.
23874           </brief>
23875           <version>
23876  2.0
23877           </version>
23878           <Code>  var addressbook = null;
23879   var group = null;
23880
23881   // Define the error callback for all the asynchronous calls
23882   function errorCB(err) {
23883     console.log( 'The following error occurred: ' +  err.name);
23884   }
23885
23886   // Define the success callback for retrieving all the
23887   // Address Books
23888   function addressBooksCB(addressbooks) {
23889     addressbook = addressbooks[0];
23890     try {
23891       group = new tizen.ContactGroup('Family', 'file://opt/media/Downloads/ring.mp3');
23892     } catch (err) {
23893       console.log( 'The following error occurred while converting: ' +  err.name);
23894     }
23895
23896     try {
23897       if (group) {
23898         addressbook.addGroup(group);
23899         console.log('Group was added with ID ' + group.id);
23900       }
23901     } catch (err) {
23902       console.log( 'The following error occurred while adding: ' +  err.name);
23903     }
23904   }
23905
23906   tizen.contact.getAddressBooks(addressBooksCB, errorCB);
23907
23908  </Code>
23909       </descriptive>
23910       <ExtendedAttributeList>
23911         <ExtendedAttribute name="Constructor">
23912           <webidl>Constructor(DOMString name, optional DOMString? ringtoneURI, optional DOMString? photoURI)</webidl>
23913           <ArgumentList>
23914             <Argument name="name">
23915               <Type type="DOMString"/>
23916             </Argument>
23917             <Argument optional="optional" name="ringtoneURI">
23918               <Type type="DOMString" nullable="nullable"/>
23919             </Argument>
23920             <Argument optional="optional" name="photoURI">
23921               <Type type="DOMString" nullable="nullable"/>
23922             </Argument>
23923           </ArgumentList>
23924         </ExtendedAttribute>
23925       </ExtendedAttributeList>
23926       <Attribute readonly="readonly" name="id" id="::Contact::ContactGroup::id">
23927         <webidl>    readonly attribute <ref>ContactGroupId</ref>? id;</webidl>
23928         <descriptive>
23929             <brief>
23930  The identifier of a group.
23931             </brief>
23932            <description>
23933             <p>
23934 By default, this attribute is set to <var>null</var>.
23935             </p>
23936            </description>
23937             <version>
23938  2.0
23939             </version>
23940         </descriptive>
23941         <Type name="ContactGroupId" nullable="nullable"/>
23942       </Attribute>
23943       <Attribute readonly="readonly" name="addressBookId" id="::Contact::ContactGroup::addressBookId">
23944         <webidl>    readonly attribute <ref>AddressBookId</ref>? addressBookId;</webidl>
23945         <descriptive>
23946             <brief>
23947  The identifier of the address book that the group belongs to.
23948             </brief>
23949            <description>
23950             <p>
23951 By default, this attribute is set to <var>null</var>.
23952             </p>
23953            </description>
23954             <version>
23955  2.0
23956             </version>
23957         </descriptive>
23958         <Type name="AddressBookId" nullable="nullable"/>
23959       </Attribute>
23960       <Attribute name="name" id="::Contact::ContactGroup::name">
23961         <webidl>    attribute DOMString name;</webidl>
23962         <descriptive>
23963             <brief>
23964  The name of a group.
23965             </brief>
23966             <version>
23967  2.0
23968             </version>
23969         </descriptive>
23970         <Type type="DOMString"/>
23971       </Attribute>
23972       <Attribute name="ringtoneURI" id="::Contact::ContactGroup::ringtoneURI">
23973         <webidl>    attribute DOMString? ringtoneURI;</webidl>
23974         <descriptive>
23975             <brief>
23976  The URI to the custom ringtone for a group.
23977             </brief>
23978            <description>
23979             <p>
23980 To specify a custom ringtone for a group.
23981             </p>
23982             <p>
23983 By default, this attribute is initialized to <var>null</var>.
23984 This attribute only contains a local file URI.
23985             </p>
23986            </description>
23987             <version>
23988  2.0
23989             </version>
23990         </descriptive>
23991         <Type type="DOMString" nullable="nullable"/>
23992       </Attribute>
23993       <Attribute name="photoURI" id="::Contact::ContactGroup::photoURI">
23994         <webidl>    attribute DOMString? photoURI;</webidl>
23995         <descriptive>
23996             <brief>
23997  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.
23998             </brief>
23999            <description>
24000             <p>
24001 By default, this attribute is set to <var>null</var>.
24002             </p>
24003            </description>
24004             <version>
24005  2.0
24006             </version>
24007         </descriptive>
24008         <Type type="DOMString" nullable="nullable"/>
24009       </Attribute>
24010       <Attribute readonly="readonly" name="readOnly" id="::Contact::ContactGroup::readOnly">
24011         <webidl>    readonly attribute DOMString readOnly;</webidl>
24012         <descriptive>
24013             <brief>
24014  The flag indicating if the group can be modified / removed or not.
24015 Some groups cannot be edited if this flag sets to <var>true</var>.
24016             </brief>
24017            <description>
24018             <p>
24019 By default, this attribute is set to false.
24020             </p>
24021            </description>
24022             <version>
24023  2.0
24024             </version>
24025         </descriptive>
24026         <Type type="DOMString"/>
24027       </Attribute>
24028     </Interface>
24029     <Interface name="PersonArraySuccessCallback" id="::Contact::PersonArraySuccessCallback">
24030       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface PersonArraySuccessCallback {
24031     void onsuccess(<ref>Person</ref>[] persons);
24032   };</webidl>
24033       <descriptive>
24034           <brief>
24035  The success callback that is used for retrieving
24036 a list of persons.
24037           </brief>
24038          <description>
24039           <p>
24040 The success callback that takes an array of persons as an input
24041 argument. It is used in the asynchronous operation to
24042 get or save a list of persons.
24043           </p>
24044          </description>
24045           <version>
24046  2.0
24047           </version>
24048       </descriptive>
24049       <ExtendedAttributeList>
24050         <ExtendedAttribute name="Callback" value="FunctionOnly">
24051           <webidl>Callback</webidl>
24052         </ExtendedAttribute>
24053         <ExtendedAttribute name="NoInterfaceObject">
24054           <webidl> NoInterfaceObject</webidl>
24055         </ExtendedAttribute>
24056       </ExtendedAttributeList>
24057       <Operation name="onsuccess" id="::Contact::PersonArraySuccessCallback::onsuccess">
24058         <webidl>    void onsuccess(<ref>Person</ref>[] persons);</webidl>
24059         <descriptive>
24060             <brief>
24061  The method invoked when a list of persons is retrieved successfully.
24062             </brief>
24063             <version>
24064  2.0
24065             </version>
24066         </descriptive>
24067         <Type type="void"/>
24068         <ArgumentList>
24069           <Argument name="persons">
24070             <descriptive>
24071                 <description><p>
24072  List of persons.
24073                 </p></description>
24074             </descriptive>
24075             <Type type="array">
24076               <Type name="Person"/>
24077             </Type>
24078           </Argument>
24079         </ArgumentList>
24080       </Operation>
24081     </Interface>
24082     <Interface name="ContactArraySuccessCallback" id="::Contact::ContactArraySuccessCallback">
24083       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface ContactArraySuccessCallback {
24084     void onsuccess(<ref>Contact</ref>[] contacts);
24085   };</webidl>
24086       <descriptive>
24087           <brief>
24088  The success callback that is used for saving and retrieving
24089 a list of contacts.
24090           </brief>
24091          <description>
24092           <p>
24093 The success callback that takes an array of contacts as an input
24094 argument. It is used in the asynchronous operation to
24095 get or save a list of contacts.
24096           </p>
24097          </description>
24098           <version>
24099  1.0
24100           </version>
24101       </descriptive>
24102       <ExtendedAttributeList>
24103         <ExtendedAttribute name="Callback" value="FunctionOnly">
24104           <webidl>Callback</webidl>
24105         </ExtendedAttribute>
24106         <ExtendedAttribute name="NoInterfaceObject">
24107           <webidl> NoInterfaceObject</webidl>
24108         </ExtendedAttribute>
24109       </ExtendedAttributeList>
24110       <Operation name="onsuccess" id="::Contact::ContactArraySuccessCallback::onsuccess">
24111         <webidl>    void onsuccess(<ref>Contact</ref>[] contacts);</webidl>
24112         <descriptive>
24113             <brief>
24114  The method invoked when a list of contacts is retrieved successfully.
24115             </brief>
24116             <version>
24117  1.0
24118             </version>
24119         </descriptive>
24120         <Type type="void"/>
24121         <ArgumentList>
24122           <Argument name="contacts">
24123             <descriptive>
24124                 <description><p>
24125  List of contacts.
24126 The Contacts that were successfully saved must have their identifiers set.
24127                 </p></description>
24128             </descriptive>
24129             <Type type="array">
24130               <Type name="Contact"/>
24131             </Type>
24132           </Argument>
24133         </ArgumentList>
24134       </Operation>
24135     </Interface>
24136     <Interface name="AddressBookArraySuccessCallback" id="::Contact::AddressBookArraySuccessCallback">
24137       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface AddressBookArraySuccessCallback {
24138     void onsuccess(<ref>AddressBook</ref>[] addressbooks);
24139   };</webidl>
24140       <descriptive>
24141           <brief>
24142  The success callback when retrieving a list of AddressBooks.
24143           </brief>
24144          <description>
24145           <p>
24146 The success callback that takes an array of AddressBooks as an input
24147 argument. It is used in the asynchronous operation to
24148 get address books.
24149           </p>
24150          </description>
24151           <version>
24152  1.0
24153           </version>
24154       </descriptive>
24155       <ExtendedAttributeList>
24156         <ExtendedAttribute name="Callback" value="FunctionOnly">
24157           <webidl>Callback</webidl>
24158         </ExtendedAttribute>
24159         <ExtendedAttribute name="NoInterfaceObject">
24160           <webidl> NoInterfaceObject</webidl>
24161         </ExtendedAttribute>
24162       </ExtendedAttributeList>
24163       <Operation name="onsuccess" id="::Contact::AddressBookArraySuccessCallback::onsuccess">
24164         <webidl>    void onsuccess(<ref>AddressBook</ref>[] addressbooks);</webidl>
24165         <descriptive>
24166             <brief>
24167  The method invoked when a list of address books is retrieved successfully.
24168             </brief>
24169             <version>
24170  1.0
24171             </version>
24172         </descriptive>
24173         <Type type="void"/>
24174         <ArgumentList>
24175           <Argument name="addressbooks">
24176             <descriptive>
24177                 <description><p>
24178  The address books to retrieve.
24179                 </p></description>
24180             </descriptive>
24181             <Type type="array">
24182               <Type name="AddressBook"/>
24183             </Type>
24184           </Argument>
24185         </ArgumentList>
24186       </Operation>
24187     </Interface>
24188     <Interface name="AddressBookChangeCallback" id="::Contact::AddressBookChangeCallback">
24189       <webidl>  [Callback, NoInterfaceObject] interface AddressBookChangeCallback {
24190     void oncontactsadded(<ref>Contact</ref>[] contacts);
24191
24192     void oncontactsupdated(<ref>Contact</ref>[] contacts);
24193
24194     void oncontactsremoved(<ref>ContactId</ref>[] contactIds);
24195   };</webidl>
24196       <descriptive>
24197           <brief>
24198  The interface for specifying the methods to be called for address book
24199 change notifications.
24200           </brief>
24201          <description>
24202           <p>
24203 This interface specifies a set of functions that will be invoked every time an address
24204 book change occurs (contact addition/update/deletion).
24205           </p>
24206          </description>
24207           <version>
24208  1.0
24209           </version>
24210       </descriptive>
24211       <ExtendedAttributeList>
24212         <ExtendedAttribute name="Callback">
24213           <webidl>Callback</webidl>
24214         </ExtendedAttribute>
24215         <ExtendedAttribute name="NoInterfaceObject">
24216           <webidl> NoInterfaceObject</webidl>
24217         </ExtendedAttribute>
24218       </ExtendedAttributeList>
24219       <Operation name="oncontactsadded" id="::Contact::AddressBookChangeCallback::oncontactsadded">
24220         <webidl>    void oncontactsadded(<ref>Contact</ref>[] contacts);</webidl>
24221         <descriptive>
24222             <brief>
24223  The method invoked when contacts are added to the address book.
24224             </brief>
24225             <version>
24226  1.0
24227             </version>
24228         </descriptive>
24229         <Type type="void"/>
24230         <ArgumentList>
24231           <Argument name="contacts">
24232             <descriptive>
24233                 <description><p>
24234  A list of contacts to add.
24235                 </p></description>
24236             </descriptive>
24237             <Type type="array">
24238               <Type name="Contact"/>
24239             </Type>
24240           </Argument>
24241         </ArgumentList>
24242       </Operation>
24243       <Operation name="oncontactsupdated" id="::Contact::AddressBookChangeCallback::oncontactsupdated">
24244         <webidl>    void oncontactsupdated(<ref>Contact</ref>[] contacts);</webidl>
24245         <descriptive>
24246             <brief>
24247  The method invoked when contacts are updated in the address book.
24248             </brief>
24249             <version>
24250  1.0
24251             </version>
24252         </descriptive>
24253         <Type type="void"/>
24254         <ArgumentList>
24255           <Argument name="contacts">
24256             <descriptive>
24257                 <description><p>
24258  A list of contacts to update.
24259                 </p></description>
24260             </descriptive>
24261             <Type type="array">
24262               <Type name="Contact"/>
24263             </Type>
24264           </Argument>
24265         </ArgumentList>
24266       </Operation>
24267       <Operation name="oncontactsremoved" id="::Contact::AddressBookChangeCallback::oncontactsremoved">
24268         <webidl>    void oncontactsremoved(<ref>ContactId</ref>[] contactIds);</webidl>
24269         <descriptive>
24270             <brief>
24271  The method invoked when contacts are deleted from the address book.
24272             </brief>
24273             <version>
24274  1.0
24275             </version>
24276         </descriptive>
24277         <Type type="void"/>
24278         <ArgumentList>
24279           <Argument name="contactIds">
24280             <descriptive>
24281                 <description><p>
24282  A list of identifiers for the contacts to delete.
24283                 </p></description>
24284             </descriptive>
24285             <Type type="array">
24286               <Type name="ContactId"/>
24287             </Type>
24288           </Argument>
24289         </ArgumentList>
24290       </Operation>
24291     </Interface>
24292     <Interface name="PersonsChangeCallback" id="::Contact::PersonsChangeCallback">
24293       <webidl>  [Callback, NoInterfaceObject] interface PersonsChangeCallback {
24294     void onpersonsadded(<ref>Person</ref>[] persons);
24295
24296     void onpersonsupdated(<ref>Person</ref>[] persons);
24297
24298     void onpersonsremoved(<ref>PersonId</ref>[] personIds);
24299   };</webidl>
24300       <descriptive>
24301           <brief>
24302  The interface for specifying the methods to be called for change notifications.
24303           </brief>
24304          <description>
24305           <p>
24306 This interface specifies a set of functions that will be invoked every time person's
24307 list change occurs (person addition/update/deletion).
24308           </p>
24309          </description>
24310           <version>
24311  2.0
24312           </version>
24313       </descriptive>
24314       <ExtendedAttributeList>
24315         <ExtendedAttribute name="Callback">
24316           <webidl>Callback</webidl>
24317         </ExtendedAttribute>
24318         <ExtendedAttribute name="NoInterfaceObject">
24319           <webidl> NoInterfaceObject</webidl>
24320         </ExtendedAttribute>
24321       </ExtendedAttributeList>
24322       <Operation name="onpersonsadded" id="::Contact::PersonsChangeCallback::onpersonsadded">
24323         <webidl>    void onpersonsadded(<ref>Person</ref>[] persons);</webidl>
24324         <descriptive>
24325             <brief>
24326  The method invoked when persons are added to the person list.
24327             </brief>
24328             <version>
24329  2.0
24330             </version>
24331         </descriptive>
24332         <Type type="void"/>
24333         <ArgumentList>
24334           <Argument name="persons">
24335             <descriptive>
24336                 <description><p>
24337  A list of persons to add.
24338                 </p></description>
24339             </descriptive>
24340             <Type type="array">
24341               <Type name="Person"/>
24342             </Type>
24343           </Argument>
24344         </ArgumentList>
24345       </Operation>
24346       <Operation name="onpersonsupdated" id="::Contact::PersonsChangeCallback::onpersonsupdated">
24347         <webidl>    void onpersonsupdated(<ref>Person</ref>[] persons);</webidl>
24348         <descriptive>
24349             <brief>
24350  The method invoked when persons are updated in the person list.
24351             </brief>
24352             <version>
24353  2.0
24354             </version>
24355         </descriptive>
24356         <Type type="void"/>
24357         <ArgumentList>
24358           <Argument name="persons">
24359             <descriptive>
24360                 <description><p>
24361  A list of persons to update.
24362                 </p></description>
24363             </descriptive>
24364             <Type type="array">
24365               <Type name="Person"/>
24366             </Type>
24367           </Argument>
24368         </ArgumentList>
24369       </Operation>
24370       <Operation name="onpersonsremoved" id="::Contact::PersonsChangeCallback::onpersonsremoved">
24371         <webidl>    void onpersonsremoved(<ref>PersonId</ref>[] personIds);</webidl>
24372         <descriptive>
24373             <brief>
24374  The method invoked when persons are deleted from the person list.
24375             </brief>
24376             <version>
24377  2.0
24378             </version>
24379         </descriptive>
24380         <Type type="void"/>
24381         <ArgumentList>
24382           <Argument name="personIds">
24383             <descriptive>
24384                 <description><p>
24385  A list of identifiers for the persons to delete.
24386                 </p></description>
24387             </descriptive>
24388             <Type type="array">
24389               <Type name="PersonId"/>
24390             </Type>
24391           </Argument>
24392         </ArgumentList>
24393       </Operation>
24394     </Interface>
24395   </Module>
24396   <Module name="Content" id="::Content">
24397     <webidl>module Content {
24398
24399   enum ContentDirectoryStorageType { &quot;INTERNAL&quot;, &quot;EXTERNAL&quot; };
24400
24401   enum ContentType { &quot;IMAGE&quot;, &quot;VIDEO&quot;, &quot;AUDIO&quot;, &quot;OTHER&quot; };
24402
24403   enum AudioContentLyricsType { &quot;SYNCHRONIZED&quot;, &quot;UNSYNCHRONIZED&quot; };
24404
24405   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; };
24406
24407   typedef DOMString ContentId;
24408
24409   typedef DOMString ContentDirectoryId;
24410
24411   [NoInterfaceObject] interface ContentManagerObject {
24412     readonly attribute <ref>ContentManager</ref> content;
24413   };
24414   <ref>Tizen</ref> implements <ref>ContentManagerObject</ref>;
24415
24416   [NoInterfaceObject] interface ContentManager {
24417
24418     void update(<ref>Content</ref> content) raises(<ref>WebAPIException</ref>);
24419
24420     void updateBatch(<ref>Content</ref>[] contents,
24421                      optional <ref>SuccessCallback</ref>? successCallback,
24422                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
24423
24424     void getDirectories(<ref>ContentDirectoryArraySuccessCallback</ref> successCallback,
24425                         optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
24426
24427     void find(<ref>ContentArraySuccessCallback</ref> successCallback,
24428               optional <ref>ErrorCallback</ref>? errorCallback,
24429               optional <ref>ContentDirectoryId</ref>? directoryId,
24430               optional <ref>AbstractFilter</ref>? filter,
24431               optional <ref>SortMode</ref>? sortMode,
24432               optional unsigned long? count,
24433               optional unsigned long? offset) raises(<ref>WebAPIException</ref>);
24434
24435
24436     void scanFile(DOMString contentURI,
24437                   optional <ref>ContentScanSuccessCallback</ref>? successCallback,
24438                   optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
24439
24440     void setChangeListener(<ref>ContentChangeCallback</ref> changeCallback) raises(<ref>WebAPIException</ref>);
24441
24442     void unsetChangeListener() raises(<ref>WebAPIException</ref>);
24443
24444   };
24445
24446   [Callback=FunctionOnly, NoInterfaceObject] interface ContentArraySuccessCallback {
24447     void onsuccess(<ref>Content</ref>[] contents);
24448   };
24449
24450   [Callback=FunctionOnly, NoInterfaceObject] interface ContentDirectoryArraySuccessCallback {
24451     void onsuccess(<ref>ContentDirectory</ref>[] directories);
24452   };
24453
24454   [Callback=FunctionOnly, NoInterfaceObject] interface ContentScanSuccessCallback {
24455     void onsuccess(DOMString contentURI);
24456   };
24457
24458   [Callback, NoInterfaceObject] interface ContentChangeCallback {
24459     void oncontentadded(<ref>Content</ref> content);
24460
24461     void oncontentupdated(<ref>Content</ref> content);
24462
24463     void oncontentremoved(<ref>ContentId</ref> id);
24464   };
24465
24466
24467   [NoInterfaceObject] interface ContentDirectory {
24468
24469     readonly attribute <ref>ContentDirectoryId</ref> id;
24470
24471     readonly attribute DOMString directoryURI;
24472
24473     readonly attribute DOMString title;
24474
24475     readonly attribute <ref>ContentDirectoryStorageType</ref> storageType;
24476
24477     readonly attribute Date? modifiedDate;
24478
24479    };
24480
24481   [NoInterfaceObject] interface Content {
24482
24483     readonly attribute DOMString[] editableAttributes;
24484
24485     readonly attribute <ref>ContentId</ref> id;
24486
24487     attribute DOMString name;
24488
24489     readonly attribute <ref>ContentType</ref> type;
24490
24491     readonly attribute DOMString mimeType;
24492
24493     readonly attribute DOMString title;
24494
24495     readonly attribute DOMString contentURI;
24496
24497     readonly attribute DOMString[]? thumbnailURIs;
24498
24499     readonly attribute Date? releaseDate;
24500
24501     readonly attribute Date? modifiedDate;
24502
24503     readonly attribute unsigned long size;
24504
24505     attribute DOMString? description;
24506
24507     attribute unsigned long rating;
24508   };
24509
24510   [NoInterfaceObject] interface VideoContent : <ref>Content</ref> {
24511
24512     attribute <ref>SimpleCoordinates</ref>? geolocation;
24513
24514     readonly attribute DOMString? album;
24515
24516     readonly attribute DOMString[]? artists;
24517
24518     readonly attribute unsigned long duration;
24519
24520     readonly attribute unsigned long width;
24521
24522     readonly attribute unsigned long height;
24523
24524   };
24525
24526
24527   [NoInterfaceObject] interface AudioContentLyrics {
24528
24529     readonly attribute <ref>AudioContentLyricsType</ref> type;
24530
24531     readonly attribute unsigned long[] timestamps;
24532
24533     readonly attribute DOMString[] texts;
24534   };
24535
24536   [NoInterfaceObject] interface AudioContent : <ref>Content</ref> {
24537
24538     readonly attribute DOMString? album;
24539
24540     readonly attribute DOMString[]? genres;
24541
24542     readonly attribute DOMString[]? artists;
24543
24544     readonly attribute DOMString[]? composers;
24545
24546     readonly attribute <ref>AudioContentLyrics</ref>? lyrics;
24547
24548     readonly attribute DOMString? copyright;
24549
24550     readonly attribute unsigned long bitrate;
24551
24552     readonly attribute unsigned short? trackNumber;
24553
24554     readonly attribute unsigned long duration;
24555
24556   };
24557
24558   [NoInterfaceObject] interface ImageContent : <ref>Content</ref> {
24559
24560     attribute <ref>SimpleCoordinates</ref>? geolocation;
24561
24562     readonly attribute unsigned long width;
24563
24564     readonly attribute unsigned long height;
24565
24566     attribute <ref>ImageContentOrientation</ref> orientation;
24567
24568   };
24569 };</webidl>
24570     <descriptive>
24571         <brief>
24572  This API provides functionality to discover contents such as images, videos, music, or other. 
24573         </brief>
24574        <description>
24575         <p>
24576 It is possible to search for specific contents using filters.
24577 The API also supports setting attributes of specific contents.
24578         </p>
24579         <p>
24580 For more information on the Content features, see <a href="../../org.tizen.web.appprogramming/html/guide/content_guide/mediacontent.htm">Content Guide</a>.
24581         </p>
24582        </description>
24583         <version>
24584  2.0
24585         </version>
24586     </descriptive>
24587     <Enum name="ContentDirectoryStorageType" id="::Content::ContentDirectoryStorageType">
24588       <webidl>  enum ContentDirectoryStorageType { &quot;INTERNAL&quot;, &quot;EXTERNAL&quot; };</webidl>
24589       <descriptive>
24590          <description>
24591           <p>
24592 Defines whether a content directory is stored on internal or external storage (such as a removable memory card).
24593           </p>
24594          </description>
24595           <version>
24596  2.0
24597           </version>
24598       </descriptive>
24599       <EnumValue stringvalue="INTERNAL">
24600         <webidl> &quot;INTERNAL</webidl>
24601       </EnumValue>
24602       <EnumValue stringvalue="EXTERNAL">
24603         <webidl> &quot;EXTERNAL</webidl>
24604       </EnumValue>
24605     </Enum>
24606     <Enum name="ContentType" id="::Content::ContentType">
24607       <webidl>  enum ContentType { &quot;IMAGE&quot;, &quot;VIDEO&quot;, &quot;AUDIO&quot;, &quot;OTHER&quot; };</webidl>
24608       <descriptive>
24609          <description>
24610           <p>
24611 Defines the type of content such as image, video, audio and other.
24612           </p>
24613          </description>
24614           <version>
24615  2.0
24616           </version>
24617           <remark>
24618  &quot;OTHER&quot; type is added since 2.1.
24619           </remark>
24620       </descriptive>
24621       <EnumValue stringvalue="IMAGE">
24622         <webidl> &quot;IMAGE</webidl>
24623       </EnumValue>
24624       <EnumValue stringvalue="VIDEO">
24625         <webidl> &quot;VIDEO</webidl>
24626       </EnumValue>
24627       <EnumValue stringvalue="AUDIO">
24628         <webidl> &quot;AUDIO</webidl>
24629       </EnumValue>
24630       <EnumValue stringvalue="OTHER">
24631         <webidl> &quot;OTHER</webidl>
24632       </EnumValue>
24633     </Enum>
24634     <Enum name="AudioContentLyricsType" id="::Content::AudioContentLyricsType">
24635       <webidl>  enum AudioContentLyricsType { &quot;SYNCHRONIZED&quot;, &quot;UNSYNCHRONIZED&quot; };</webidl>
24636       <descriptive>
24637          <description>
24638           <p>
24639 Defines whether the lyric supplied with an audio file is time-synchronized or not.
24640           </p>
24641          </description>
24642           <version>
24643  2.0
24644           </version>
24645       </descriptive>
24646       <EnumValue stringvalue="SYNCHRONIZED">
24647         <webidl> &quot;SYNCHRONIZED</webidl>
24648       </EnumValue>
24649       <EnumValue stringvalue="UNSYNCHRONIZED">
24650         <webidl> &quot;UNSYNCHRONIZED</webidl>
24651       </EnumValue>
24652     </Enum>
24653     <Enum name="ImageContentOrientation" id="::Content::ImageContentOrientation">
24654       <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>
24655       <descriptive>
24656          <description>
24657           <p>
24658 Defines an orientation of an image.
24659           </p>
24660          </description>
24661           <version>
24662  2.0
24663           </version>
24664       </descriptive>
24665       <EnumValue stringvalue="NORMAL">
24666         <webidl> &quot;NORMAL</webidl>
24667       </EnumValue>
24668       <EnumValue stringvalue="FLIP_HORIZONTAL">
24669         <webidl> &quot;FLIP_HORIZONTAL</webidl>
24670       </EnumValue>
24671       <EnumValue stringvalue="ROTATE_180">
24672         <webidl> &quot;ROTATE_180</webidl>
24673       </EnumValue>
24674       <EnumValue stringvalue="FLIP_VERTICAL">
24675         <webidl> &quot;FLIP_VERTICAL</webidl>
24676       </EnumValue>
24677       <EnumValue stringvalue="TRANSPOSE">
24678         <webidl> &quot;TRANSPOSE</webidl>
24679       </EnumValue>
24680       <EnumValue stringvalue="ROTATE_90">
24681         <webidl> &quot;ROTATE_90</webidl>
24682       </EnumValue>
24683       <EnumValue stringvalue="TRANSVERSE">
24684         <webidl> &quot;TRANSVERSE</webidl>
24685       </EnumValue>
24686       <EnumValue stringvalue="ROTATE_270">
24687         <webidl> &quot;ROTATE_270</webidl>
24688       </EnumValue>
24689     </Enum>
24690     <Typedef name="ContentId" id="::Content::ContentId">
24691       <webidl>  typedef DOMString ContentId;</webidl>
24692       <descriptive>
24693           <brief>
24694  Content identifier.
24695           </brief>
24696           <version>
24697  2.0
24698           </version>
24699       </descriptive>
24700       <Type type="DOMString"/>
24701     </Typedef>
24702     <Typedef name="ContentDirectoryId" id="::Content::ContentDirectoryId">
24703       <webidl>  typedef DOMString ContentDirectoryId;</webidl>
24704       <descriptive>
24705           <brief>
24706  Content directory identifier.
24707           </brief>
24708           <version>
24709  2.0
24710           </version>
24711       </descriptive>
24712       <Type type="DOMString"/>
24713     </Typedef>
24714     <Interface name="ContentManagerObject" id="::Content::ContentManagerObject">
24715       <webidl>  [NoInterfaceObject] interface ContentManagerObject {
24716     readonly attribute <ref>ContentManager</ref> content;
24717   };</webidl>
24718       <descriptive>
24719           <brief>
24720  Defines what is instantiated by the Tizen object.
24721           </brief>
24722          <description>
24723           <p>
24724 There is a <em>tizen.content </em>object that allows accessing the functionality of the Content module.
24725           </p>
24726          </description>
24727           <version>
24728  2.0
24729           </version>
24730       </descriptive>
24731       <ExtendedAttributeList>
24732         <ExtendedAttribute name="NoInterfaceObject">
24733           <webidl>NoInterfaceObject</webidl>
24734         </ExtendedAttribute>
24735       </ExtendedAttributeList>
24736       <Attribute readonly="readonly" name="content" id="::Content::ContentManagerObject::content">
24737         <webidl>    readonly attribute <ref>ContentManager</ref> content;</webidl>
24738         <Type name="ContentManager"/>
24739       </Attribute>
24740     </Interface>
24741     <Implements name1="Tizen" name2="ContentManagerObject">
24742       <webidl>  <ref>Tizen</ref> implements <ref>ContentManagerObject</ref>;</webidl>
24743     </Implements>
24744     <Interface name="ContentManager" id="::Content::ContentManager">
24745       <webidl>  [NoInterfaceObject] interface ContentManager {
24746
24747     void update(<ref>Content</ref> content) raises(<ref>WebAPIException</ref>);
24748
24749     void updateBatch(<ref>Content</ref>[] contents,
24750                      optional <ref>SuccessCallback</ref>? successCallback,
24751                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
24752
24753     void getDirectories(<ref>ContentDirectoryArraySuccessCallback</ref> successCallback,
24754                         optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
24755
24756     void find(<ref>ContentArraySuccessCallback</ref> successCallback,
24757               optional <ref>ErrorCallback</ref>? errorCallback,
24758               optional <ref>ContentDirectoryId</ref>? directoryId,
24759               optional <ref>AbstractFilter</ref>? filter,
24760               optional <ref>SortMode</ref>? sortMode,
24761               optional unsigned long? count,
24762               optional unsigned long? offset) raises(<ref>WebAPIException</ref>);
24763
24764
24765     void scanFile(DOMString contentURI,
24766                   optional <ref>ContentScanSuccessCallback</ref>? successCallback,
24767                   optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
24768
24769     void setChangeListener(<ref>ContentChangeCallback</ref> changeCallback) raises(<ref>WebAPIException</ref>);
24770
24771     void unsetChangeListener() raises(<ref>WebAPIException</ref>);
24772
24773   };</webidl>
24774       <descriptive>
24775           <brief>
24776  This interface provides operations to retrieve and manipulate contents.
24777           </brief>
24778           <version>
24779  2.0
24780           </version>
24781       </descriptive>
24782       <ExtendedAttributeList>
24783         <ExtendedAttribute name="NoInterfaceObject">
24784           <webidl>NoInterfaceObject</webidl>
24785         </ExtendedAttribute>
24786       </ExtendedAttributeList>
24787       <Operation name="update" id="::Content::ContentManager::update">
24788         <webidl>    void update(<ref>Content</ref> content) raises(<ref>WebAPIException</ref>);</webidl>
24789         <descriptive>
24790             <brief>
24791  Updates attributes of the content in content database synchronously.
24792             </brief>
24793            <description>
24794             <p>
24795 When an application has changed some attributes of a content, this method allows
24796 writing it back to the content database.
24797             </p>
24798            </description>
24799             <version>
24800  2.0
24801             </version>
24802             <privilegelevel>
24803  public
24804             </privilegelevel>
24805             <privilege>
24806  http://tizen.org/privilege/content.write
24807             </privilege>
24808             <remark>
24809  The <em>editableAttributes </em>in <em>Content </em>interface indicates 
24810 the attributes that can be changed. 
24811 This API does not support updating the metadata of a file.
24812             </remark>
24813             <Code> // Assume the content is a Content object as a result of find method.
24814  // Check the description is editable, and then set a description.
24815  if (content.editableAttributes.indexOf(&quot;description&quot;) >= 0) {
24816      content.description = &quot;Sample content&quot;;
24817  }
24818  tizen.content.update(content);
24819  </Code>
24820         </descriptive>
24821         <Type type="void"/>
24822         <ArgumentList>
24823           <Argument name="content">
24824             <descriptive>
24825                 <description><p>
24826  The content to update.
24827                 </p></description>
24828             </descriptive>
24829             <Type name="Content"/>
24830           </Argument>
24831         </ArgumentList>
24832         <Raises>
24833           <RaiseException name="WebAPIException">
24834             <descriptive>
24835                 <description><p>
24836  with error type TypeMismatchError, if any input parameter
24837 is not compatible with the expected type for that parameter.
24838                 </p></description>
24839                 <description><p>
24840  with error type InvalidValuesError, if any of the input parameters
24841 contain an invalid value.
24842                 </p></description>
24843                 <description><p>
24844  with error type SecurityError, if the application does not have the privilege to call this method.
24845                 </p></description>
24846                 <description><p>
24847  with error type UnknownError in any other error case.
24848                 </p></description>
24849             </descriptive>
24850           </RaiseException>
24851         </Raises>
24852       </Operation>
24853       <Operation name="updateBatch" id="::Content::ContentManager::updateBatch">
24854         <webidl>    void updateBatch(<ref>Content</ref>[] contents,
24855                      optional <ref>SuccessCallback</ref>? successCallback,
24856                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
24857         <descriptive>
24858             <brief>
24859  Updates a batch of content attributes in the content database synchronously.
24860             </brief>
24861            <description>
24862             <p>
24863 When an application has changed any attributes in array of content, this method allows writing them
24864 back to the content database.
24865             </p>
24866             <p>
24867 The errorCallback can be launched with any of these error types:
24868             </p>
24869             <ul>
24870               <li>
24871 InvalidValuesError: If any of the input parameters contain an invalid value.              </li>
24872               <li>
24873 UnknownError: In any other error case.              </li>
24874             </ul>
24875            </description>
24876             <version>
24877  2.0
24878             </version>
24879             <privilegelevel>
24880  public
24881             </privilegelevel>
24882             <privilege>
24883  http://tizen.org/privilege/content.write
24884             </privilege>
24885             <remark>
24886  The <em>editableAttributes </em>in <em>Content </em>interface indicates 
24887 the attributes that can be changed.
24888 This API does not support updating the metadata of a file.
24889             </remark>
24890             <Code> // The following example increases rating of an content by 1
24891
24892  function errorCB(err) {
24893      console.log( 'The following error occurred: ' +  err.name);
24894  }
24895
24896  function successCB() {
24897      console.log('Attributes set successfully');
24898  }
24899
24900  // Assume the content is a Content object as a result of find method.
24901  // Check the rating is editable, and then increase by 1.
24902  if (content.editableAttributes.indexOf(&quot;rating&quot;) >= 0) {
24903      content.rating++;
24904  }
24905  tizen.content.updateBatch([content], successCB, errorCB);
24906  </Code>
24907         </descriptive>
24908         <Type type="void"/>
24909         <ArgumentList>
24910           <Argument name="contents">
24911             <descriptive>
24912                 <description><p>
24913  Array of content to change.
24914                 </p></description>
24915             </descriptive>
24916             <Type type="array">
24917               <Type name="Content"/>
24918             </Type>
24919           </Argument>
24920           <Argument optional="optional" name="successCallback">
24921             <descriptive>
24922                 <description><p>
24923  Function called when attributes have been changed.
24924                 </p></description>
24925             </descriptive>
24926             <Type name="SuccessCallback" nullable="nullable"/>
24927           </Argument>
24928           <Argument optional="optional" name="errorCallback">
24929             <descriptive>
24930                 <description><p>
24931  Function called when an error has occurred.
24932                 </p></description>
24933             </descriptive>
24934             <Type name="ErrorCallback" nullable="nullable"/>
24935           </Argument>
24936         </ArgumentList>
24937         <Raises>
24938           <RaiseException name="WebAPIException">
24939             <descriptive>
24940                 <description><p>
24941  with error type TypeMismatchError, if the input parameter
24942 is not compatible with the expected type for that parameter.
24943                 </p></description>
24944                 <description><p>
24945  with error type SecurityError, if the application does not have the privilege to call this method.
24946                 </p></description>
24947             </descriptive>
24948           </RaiseException>
24949         </Raises>
24950       </Operation>
24951       <Operation name="getDirectories" id="::Content::ContentManager::getDirectories">
24952         <webidl>    void getDirectories(<ref>ContentDirectoryArraySuccessCallback</ref> successCallback,
24953                         optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
24954         <descriptive>
24955             <brief>
24956  Gets a list of content directory.
24957             </brief>
24958            <description>
24959             <p>
24960 This method returns (via callback) a list of content directory objects. To obtain a list of contents
24961 in a specific directory, use find() method with the directory ID.
24962             </p>
24963             <p>
24964 The errorCallback is launched with this error type:
24965             </p>
24966             <ul>
24967               <li>
24968 UnknownError: In any other error case.              </li>
24969             </ul>
24970            </description>
24971             <version>
24972  2.0
24973             </version>
24974             <Code> // The following example retrieves content directories in the storage.
24975
24976  function errorCB(err) {
24977      console.log( 'The following error occurred: ' +  err.name);
24978  }
24979
24980  function printDirectory(directory, index, directories) {
24981      console.log('directoryURI: ' + directory.directoryURI + ' Title: ' + directory.title);
24982  }
24983  function getDirectoriesCB(directories) {
24984      directories.forEach(printDirectory);
24985  }
24986
24987  tizen.content.getDirectories(getDirectoriesCB, errorCB);
24988  </Code>
24989         </descriptive>
24990         <Type type="void"/>
24991         <ArgumentList>
24992           <Argument name="successCallback">
24993             <descriptive>
24994                 <description><p>
24995  Function called when content directories have been retrieved successfully.
24996                 </p></description>
24997             </descriptive>
24998             <Type name="ContentDirectoryArraySuccessCallback"/>
24999           </Argument>
25000           <Argument optional="optional" name="errorCallback">
25001             <descriptive>
25002                 <description><p>
25003  Function called when an error has occurred.
25004                 </p></description>
25005             </descriptive>
25006             <Type name="ErrorCallback" nullable="nullable"/>
25007           </Argument>
25008         </ArgumentList>
25009         <Raises>
25010           <RaiseException name="WebAPIException">
25011             <descriptive>
25012                 <description><p>
25013  with error type TypeMismatchError, if the input parameter
25014 is not compatible with the expected type for that parameter.
25015                 </p></description>
25016             </descriptive>
25017           </RaiseException>
25018         </Raises>
25019       </Operation>
25020       <Operation name="find" id="::Content::ContentManager::find">
25021         <webidl>    void find(<ref>ContentArraySuccessCallback</ref> successCallback,
25022               optional <ref>ErrorCallback</ref>? errorCallback,
25023               optional <ref>ContentDirectoryId</ref>? directoryId,
25024               optional <ref>AbstractFilter</ref>? filter,
25025               optional <ref>SortMode</ref>? sortMode,
25026               optional unsigned long? count,
25027               optional unsigned long? offset) raises(<ref>WebAPIException</ref>);</webidl>
25028         <descriptive>
25029             <brief>
25030  Finds contents that satisfy the conditions set by a filter.
25031             </brief>
25032            <description>
25033             <p>
25034 This method allows searching based on a supplied filter. For more detail on AbstractFilter, see
25035 <a href="../../org.tizen.web.device.apireference/tizen/tizen.html#::Tizen::AbstractFilter">Tizen</a> module. The filter allows precise searching such
25036 as &quot;return all songs by artist U2, ordered by name&quot;.
25037             </p>
25038             <p>
25039 The errorCallback can be launched with these error types:
25040             </p>
25041             <ul>
25042               <li>
25043 InvalidValuesError: If any of the input parameters contain an invalid value.              </li>
25044               <li>
25045 UnknownError: In any other error case.              </li>
25046             </ul>
25047            </description>
25048             <version>
25049  2.0
25050             </version>
25051             <privilegelevel>
25052  public
25053             </privilegelevel>
25054             <privilege>
25055  http://tizen.org/privilege/content.read
25056             </privilege>
25057             <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.
25058  var count = 100;
25059  var offset = 0;
25060  var sortMode = new tizen.SortMode(&quot;trackNumber&quot;, &quot;ASC&quot;);
25061  var artistFilter = new tizen.AttributeFilter(&quot;artists&quot;, &quot;EXACTLY&quot;, &quot;U2&quot;);
25062  var albumFilter = new tizen.AttributeFilter(&quot;album&quot;, &quot;EXACTLY&quot;, &quot;The Joshua Tree&quot;);
25063  var filter = new tizen.CompositeFilter(&quot;INTERSECTION&quot;, [albumFilter, artistFilter]);
25064  
25065  function errorCB(err) {
25066      console.log( 'The following error occurred: ' +  err.name);
25067  }
25068
25069  function printContent(content, index, contents) {
25070      console.log('Track: ' + content.trackNumber + ' Title: ' + content.title + 'Duration: ' + content.duration + 'URL: ' + content.contentURI + 'MIME: ' + content.mimeType);
25071  }
25072
25073  function findCB(contents) {
25074      console.log('The Joshua Tree by U2:');
25075      contents.forEach(printContent);
25076      // Increase the offset as much as the count and then find content again.
25077      if (contents.length == count) {
25078          offset += count;
25079          tizen.content.find(findCB, errorCB, null, filter, sortMode, count, offset);
25080      }
25081  }
25082
25083  tizen.content.find(findCB, errorCB, null, filter, sortMode, count, offset);
25084
25085  </Code>
25086         </descriptive>
25087         <Type type="void"/>
25088         <ArgumentList>
25089           <Argument name="successCallback">
25090             <descriptive>
25091                 <description><p>
25092  Function called when a content have been retrieved.
25093                 </p></description>
25094             </descriptive>
25095             <Type name="ContentArraySuccessCallback"/>
25096           </Argument>
25097           <Argument optional="optional" name="errorCallback">
25098             <descriptive>
25099                 <description><p>
25100  Function called when an error has occurred.
25101                 </p></description>
25102             </descriptive>
25103             <Type name="ErrorCallback" nullable="nullable"/>
25104           </Argument>
25105           <Argument optional="optional" name="directoryId">
25106             <descriptive>
25107                 <description><p>
25108  Directory ID that is use to select content to retrieve in a specified directory.
25109                 </p></description>
25110             </descriptive>
25111             <Type name="ContentDirectoryId" nullable="nullable"/>
25112           </Argument>
25113           <Argument optional="optional" name="filter">
25114             <descriptive>
25115                 <description><p>
25116  Filter that is used to select content to retrieve.
25117                 </p></description>
25118             </descriptive>
25119             <Type name="AbstractFilter" nullable="nullable"/>
25120           </Argument>
25121           <Argument optional="optional" name="sortMode">
25122             <descriptive>
25123                 <description><p>
25124  Used to determine the sort order in which the content are returned.
25125                 </p></description>
25126             </descriptive>
25127             <Type name="SortMode" nullable="nullable"/>
25128           </Argument>
25129           <Argument optional="optional" name="count">
25130             <descriptive>
25131                 <description><p>
25132  Maximum amount of content to return.
25133                 </p></description>
25134             </descriptive>
25135             <Type type="unsigned long" nullable="nullable"/>
25136           </Argument>
25137           <Argument optional="optional" name="offset">
25138             <descriptive>
25139                 <description><p>
25140  Offset of the result set.
25141                 </p></description>
25142             </descriptive>
25143             <Type type="unsigned long" nullable="nullable"/>
25144           </Argument>
25145         </ArgumentList>
25146         <Raises>
25147           <RaiseException name="WebAPIException">
25148             <descriptive>
25149                 <description><p>
25150  with error type TypeMismatchError, if the input parameter
25151 is not compatible with the expected type for that parameter.
25152                 </p></description>
25153                 <description><p>
25154  with error type SecurityError, if the application does not have the privilege to call this method.
25155                 </p></description>
25156                 <description><p>
25157  with error type NotSupportedError, if this feature is not supported.
25158                 </p></description>
25159             </descriptive>
25160           </RaiseException>
25161         </Raises>
25162       </Operation>
25163       <Operation name="scanFile" id="::Content::ContentManager::scanFile">
25164         <webidl>    void scanFile(DOMString contentURI,
25165                   optional <ref>ContentScanSuccessCallback</ref>? successCallback,
25166                   optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
25167         <descriptive>
25168             <brief>
25169  Scan a file to create or update a content in the content database.
25170             </brief>
25171            <description>
25172             <p>
25173 When an application creates or updates a content, this method allows scan it 
25174 to insert or update the content in the content database.
25175             </p>
25176            </description>
25177             <version>
25178  2.1
25179             </version>
25180             <privilegelevel>
25181  public
25182             </privilegelevel>
25183             <privilege>
25184  http://tizen.org/privilege/content.write
25185             </privilege>
25186             <Code> // The following example scan 'tizen.jpg' in media directory
25187
25188  function errorCB(err) {
25189      console.log( 'The following error occurred: ' +  err.name);
25190  }
25191
25192  function successCB(path) {
25193      console.log('scanning is completed');
25194  }
25195
25196  var path = &quot;file:///opt/usr/media/tizen.jpg&quot;;
25197  tizen.content.scanFile(path, successCB, errorCB);
25198
25199  </Code>
25200         </descriptive>
25201         <Type type="void"/>
25202         <ArgumentList>
25203           <Argument name="contentURI">
25204             <descriptive>
25205                 <description><p>
25206  The URI of content to scan.
25207                 </p></description>
25208             </descriptive>
25209             <Type type="DOMString"/>
25210           </Argument>
25211           <Argument optional="optional" name="successCallback">
25212             <descriptive>
25213                 <description><p>
25214  Function called when scanning has been completed.
25215                 </p></description>
25216             </descriptive>
25217             <Type name="ContentScanSuccessCallback" nullable="nullable"/>
25218           </Argument>
25219           <Argument optional="optional" name="errorCallback">
25220             <descriptive>
25221                 <description><p>
25222  Function called when an error has occurred.
25223                 </p></description>
25224             </descriptive>
25225             <Type name="ErrorCallback" nullable="nullable"/>
25226           </Argument>
25227         </ArgumentList>
25228         <Raises>
25229           <RaiseException name="WebAPIException">
25230             <descriptive>
25231                 <description><p>
25232  with error type TypeMismatchError, if any input parameter
25233 is not compatible with the expected type for that parameter.
25234                 </p></description>
25235                 <description><p>
25236  with error type InvalidValuesError, if any of the input parameters
25237 contain an invalid value.
25238                 </p></description>
25239                 <description><p>
25240  with error type SecurityError, if the application does not have the privilege to call this method.
25241                 </p></description>
25242                 <description><p>
25243  with error type UnknownError in any other error case.
25244                 </p></description>
25245             </descriptive>
25246           </RaiseException>
25247         </Raises>
25248       </Operation>
25249       <Operation name="setChangeListener" id="::Content::ContentManager::setChangeListener">
25250         <webidl>    void setChangeListener(<ref>ContentChangeCallback</ref> changeCallback) raises(<ref>WebAPIException</ref>);</webidl>
25251         <descriptive>
25252             <brief>
25253  Sets a listener to receive notifications about content changes.
25254             </brief>
25255             <version>
25256  2.1
25257             </version>
25258             <privilegelevel>
25259  public
25260             </privilegelevel>
25261             <privilege>
25262  http://tizen.org/privilege/content.read
25263             </privilege>
25264             <Code> var listener= {
25265     oncontentadded: function(content) {
25266         console.log(content.contentURI + ' content is added');
25267     },
25268     oncontentupdated: function(content) {
25269         console.log(content.contentURI + ' content is updated');
25270     },
25271     oncontentremoved: function(id) {
25272         console.log(id + ' is removed');
25273     }
25274  };
25275
25276  // Registers to be notified when the content changes
25277  tizen.content.setChangeListener(listener);
25278
25279  </Code>
25280         </descriptive>
25281         <Type type="void"/>
25282         <ArgumentList>
25283           <Argument name="changeCallback">
25284             <descriptive>
25285                 <description><p>
25286  A callback to be invoked for receiving content change notification.
25287                 </p></description>
25288             </descriptive>
25289             <Type name="ContentChangeCallback"/>
25290           </Argument>
25291         </ArgumentList>
25292         <Raises>
25293           <RaiseException name="WebAPIException">
25294             <descriptive>
25295                 <description><p>
25296  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
25297                 </p></description>
25298                 <description><p>
25299  with error type InvalidValuesError, if any of the input parameters contain an invalid value.
25300                 </p></description>
25301                 <description><p>
25302  with error type SecurityError, if the application does not have the privilege to call this method.
25303                 </p></description>
25304                 <description><p>
25305  with error type UnknownError, if any other error occurs.
25306                 </p></description>
25307             </descriptive>
25308           </RaiseException>
25309         </Raises>
25310       </Operation>
25311       <Operation name="unsetChangeListener" id="::Content::ContentManager::unsetChangeListener">
25312         <webidl>    void unsetChangeListener() raises(<ref>WebAPIException</ref>);</webidl>
25313         <descriptive>
25314             <brief>
25315  Unsets the listener to unsubscribes from receiving notification for any content changes.
25316             </brief>
25317             <version>
25318  2.1
25319             </version>
25320             <privilegelevel>
25321  public
25322             </privilegelevel>
25323             <privilege>
25324  http://tizen.org/privilege/content.read
25325             </privilege>
25326             <Code> tizen.content.unsetChangeListener();
25327
25328  </Code>
25329         </descriptive>
25330         <Type type="void"/>
25331         <ArgumentList/>
25332         <Raises>
25333           <RaiseException name="WebAPIException">
25334             <descriptive>
25335                 <description><p>
25336  with error type SecurityError, if the application does not have the privilege to call this method.
25337                 </p></description>
25338                 <description><p>
25339  with error type UnknownError if any other error occurs.
25340                 </p></description>
25341             </descriptive>
25342           </RaiseException>
25343         </Raises>
25344       </Operation>
25345     </Interface>
25346     <Interface name="ContentArraySuccessCallback" id="::Content::ContentArraySuccessCallback">
25347       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface ContentArraySuccessCallback {
25348     void onsuccess(<ref>Content</ref>[] contents);
25349   };</webidl>
25350       <descriptive>
25351           <brief>
25352  The callback function used to return a list of content objects.
25353           </brief>
25354           <version>
25355  2.0
25356           </version>
25357       </descriptive>
25358       <ExtendedAttributeList>
25359         <ExtendedAttribute name="Callback" value="FunctionOnly">
25360           <webidl>Callback</webidl>
25361         </ExtendedAttribute>
25362         <ExtendedAttribute name="NoInterfaceObject">
25363           <webidl> NoInterfaceObject</webidl>
25364         </ExtendedAttribute>
25365       </ExtendedAttributeList>
25366       <Operation name="onsuccess" id="::Content::ContentArraySuccessCallback::onsuccess">
25367         <webidl>    void onsuccess(<ref>Content</ref>[] contents);</webidl>
25368         <descriptive>
25369             <brief>
25370  Called when the list of content is retrieved successfully.
25371             </brief>
25372             <version>
25373  2.0
25374             </version>
25375         </descriptive>
25376         <Type type="void"/>
25377         <ArgumentList>
25378           <Argument name="contents">
25379             <descriptive>
25380                 <description><p>
25381  The array of <em>Content </em>objects.
25382                 </p></description>
25383             </descriptive>
25384             <Type type="array">
25385               <Type name="Content"/>
25386             </Type>
25387           </Argument>
25388         </ArgumentList>
25389       </Operation>
25390     </Interface>
25391     <Interface name="ContentDirectoryArraySuccessCallback" id="::Content::ContentDirectoryArraySuccessCallback">
25392       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface ContentDirectoryArraySuccessCallback {
25393     void onsuccess(<ref>ContentDirectory</ref>[] directories);
25394   };</webidl>
25395       <descriptive>
25396           <brief>
25397  The callback function used to return a list of ContentDirectory objects.
25398           </brief>
25399           <version>
25400  2.0
25401           </version>
25402       </descriptive>
25403       <ExtendedAttributeList>
25404         <ExtendedAttribute name="Callback" value="FunctionOnly">
25405           <webidl>Callback</webidl>
25406         </ExtendedAttribute>
25407         <ExtendedAttribute name="NoInterfaceObject">
25408           <webidl> NoInterfaceObject</webidl>
25409         </ExtendedAttribute>
25410       </ExtendedAttributeList>
25411       <Operation name="onsuccess" id="::Content::ContentDirectoryArraySuccessCallback::onsuccess">
25412         <webidl>    void onsuccess(<ref>ContentDirectory</ref>[] directories);</webidl>
25413         <descriptive>
25414             <brief>
25415  Called when the list of directory is retrieved successfully.
25416             </brief>
25417             <version>
25418  2.0
25419             </version>
25420         </descriptive>
25421         <Type type="void"/>
25422         <ArgumentList>
25423           <Argument name="directories">
25424             <descriptive>
25425                 <description><p>
25426  The array of <em>ContentDirectory </em>objects.
25427                 </p></description>
25428             </descriptive>
25429             <Type type="array">
25430               <Type name="ContentDirectory"/>
25431             </Type>
25432           </Argument>
25433         </ArgumentList>
25434       </Operation>
25435     </Interface>
25436     <Interface name="ContentScanSuccessCallback" id="::Content::ContentScanSuccessCallback">
25437       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface ContentScanSuccessCallback {
25438     void onsuccess(DOMString contentURI);
25439   };</webidl>
25440       <descriptive>
25441           <brief>
25442  The callback function used to return a content to scan has been completed.
25443           </brief>
25444           <version>
25445  2.1
25446           </version>
25447       </descriptive>
25448       <ExtendedAttributeList>
25449         <ExtendedAttribute name="Callback" value="FunctionOnly">
25450           <webidl>Callback</webidl>
25451         </ExtendedAttribute>
25452         <ExtendedAttribute name="NoInterfaceObject">
25453           <webidl> NoInterfaceObject</webidl>
25454         </ExtendedAttribute>
25455       </ExtendedAttributeList>
25456       <Operation name="onsuccess" id="::Content::ContentScanSuccessCallback::onsuccess">
25457         <webidl>    void onsuccess(DOMString contentURI);</webidl>
25458         <descriptive>
25459             <brief>
25460  Called when the scanning has been completed.
25461             </brief>
25462             <version>
25463  2.1
25464             </version>
25465         </descriptive>
25466         <Type type="void"/>
25467         <ArgumentList>
25468           <Argument name="contentURI">
25469             <descriptive>
25470                 <description><p>
25471  The URI of <em>Content </em>objects.
25472                 </p></description>
25473             </descriptive>
25474             <Type type="DOMString"/>
25475           </Argument>
25476         </ArgumentList>
25477       </Operation>
25478     </Interface>
25479     <Interface name="ContentChangeCallback" id="::Content::ContentChangeCallback">
25480       <webidl>  [Callback, NoInterfaceObject] interface ContentChangeCallback {
25481     void oncontentadded(<ref>Content</ref> content);
25482
25483     void oncontentupdated(<ref>Content</ref> content);
25484
25485     void oncontentremoved(<ref>ContentId</ref> id);
25486   };</webidl>
25487       <descriptive>
25488           <brief>
25489  This interface specifies a set of methods that are invoked every time a content change occurs.
25490           </brief>
25491           <version>
25492  2.1
25493           </version>
25494       </descriptive>
25495       <ExtendedAttributeList>
25496         <ExtendedAttribute name="Callback">
25497           <webidl>Callback</webidl>
25498         </ExtendedAttribute>
25499         <ExtendedAttribute name="NoInterfaceObject">
25500           <webidl> NoInterfaceObject</webidl>
25501         </ExtendedAttribute>
25502       </ExtendedAttributeList>
25503       <Operation name="oncontentadded" id="::Content::ContentChangeCallback::oncontentadded">
25504         <webidl>    void oncontentadded(<ref>Content</ref> content);</webidl>
25505         <descriptive>
25506             <brief>
25507  Called when content is added.
25508             </brief>
25509             <version>
25510  2.1
25511             </version>
25512         </descriptive>
25513         <Type type="void"/>
25514         <ArgumentList>
25515           <Argument name="content">
25516             <descriptive>
25517                 <description><p>
25518  The content to add.
25519                 </p></description>
25520             </descriptive>
25521             <Type name="Content"/>
25522           </Argument>
25523         </ArgumentList>
25524       </Operation>
25525       <Operation name="oncontentupdated" id="::Content::ContentChangeCallback::oncontentupdated">
25526         <webidl>    void oncontentupdated(<ref>Content</ref> content);</webidl>
25527         <descriptive>
25528             <brief>
25529  Called when content is updated.
25530             </brief>
25531             <version>
25532  2.1
25533             </version>
25534         </descriptive>
25535         <Type type="void"/>
25536         <ArgumentList>
25537           <Argument name="content">
25538             <descriptive>
25539                 <description><p>
25540  The content to update.
25541                 </p></description>
25542             </descriptive>
25543             <Type name="Content"/>
25544           </Argument>
25545         </ArgumentList>
25546       </Operation>
25547       <Operation name="oncontentremoved" id="::Content::ContentChangeCallback::oncontentremoved">
25548         <webidl>    void oncontentremoved(<ref>ContentId</ref> id);</webidl>
25549         <descriptive>
25550             <brief>
25551  Called when content is removed.
25552             </brief>
25553             <version>
25554  2.1
25555             </version>
25556         </descriptive>
25557         <Type type="void"/>
25558         <ArgumentList>
25559           <Argument name="id">
25560             <descriptive>
25561                 <description><p>
25562  The id of content to remove.
25563                 </p></description>
25564             </descriptive>
25565             <Type name="ContentId"/>
25566           </Argument>
25567         </ArgumentList>
25568       </Operation>
25569     </Interface>
25570     <Interface name="ContentDirectory" id="::Content::ContentDirectory">
25571       <webidl>  [NoInterfaceObject] interface ContentDirectory {
25572
25573     readonly attribute <ref>ContentDirectoryId</ref> id;
25574
25575     readonly attribute DOMString directoryURI;
25576
25577     readonly attribute DOMString title;
25578
25579     readonly attribute <ref>ContentDirectoryStorageType</ref> storageType;
25580
25581     readonly attribute Date? modifiedDate;
25582
25583    };</webidl>
25584       <descriptive>
25585           <brief>
25586  This interface that provides access to properties of a content directory.
25587           </brief>
25588           <version>
25589  2.0
25590           </version>
25591       </descriptive>
25592       <ExtendedAttributeList>
25593         <ExtendedAttribute name="NoInterfaceObject">
25594           <webidl>NoInterfaceObject</webidl>
25595         </ExtendedAttribute>
25596       </ExtendedAttributeList>
25597       <Attribute readonly="readonly" name="id" id="::Content::ContentDirectory::id">
25598         <webidl>    readonly attribute <ref>ContentDirectoryId</ref> id;</webidl>
25599         <descriptive>
25600             <brief>
25601  The opaque content directory identifier.
25602             </brief>
25603             <version>
25604  2.0
25605             </version>
25606         </descriptive>
25607         <Type name="ContentDirectoryId"/>
25608       </Attribute>
25609       <Attribute readonly="readonly" name="directoryURI" id="::Content::ContentDirectory::directoryURI">
25610         <webidl>    readonly attribute DOMString directoryURI;</webidl>
25611         <descriptive>
25612             <brief>
25613  The directory path on the device.
25614             </brief>
25615             <version>
25616  2.0
25617             </version>
25618         </descriptive>
25619         <Type type="DOMString"/>
25620       </Attribute>
25621       <Attribute readonly="readonly" name="title" id="::Content::ContentDirectory::title">
25622         <webidl>    readonly attribute DOMString title;</webidl>
25623         <descriptive>
25624             <brief>
25625  The directory name.
25626             </brief>
25627             <version>
25628  2.0
25629             </version>
25630         </descriptive>
25631         <Type type="DOMString"/>
25632       </Attribute>
25633       <Attribute readonly="readonly" name="storageType" id="::Content::ContentDirectory::storageType">
25634         <webidl>    readonly attribute <ref>ContentDirectoryStorageType</ref> storageType;</webidl>
25635         <descriptive>
25636             <brief>
25637  The type of a device storage.
25638             </brief>
25639             <version>
25640  2.0
25641             </version>
25642         </descriptive>
25643         <Type name="ContentDirectoryStorageType"/>
25644       </Attribute>
25645       <Attribute readonly="readonly" name="modifiedDate" id="::Content::ContentDirectory::modifiedDate">
25646         <webidl>    readonly attribute Date? modifiedDate;</webidl>
25647         <descriptive>
25648             <brief>
25649  The last modified date for a directory.
25650             </brief>
25651             <version>
25652  2.0
25653             </version>
25654         </descriptive>
25655         <Type type="Date" nullable="nullable"/>
25656       </Attribute>
25657     </Interface>
25658     <Interface name="Content" id="::Content::Content">
25659       <webidl>  [NoInterfaceObject] interface Content {
25660
25661     readonly attribute DOMString[] editableAttributes;
25662
25663     readonly attribute <ref>ContentId</ref> id;
25664
25665     attribute DOMString name;
25666
25667     readonly attribute <ref>ContentType</ref> type;
25668
25669     readonly attribute DOMString mimeType;
25670
25671     readonly attribute DOMString title;
25672
25673     readonly attribute DOMString contentURI;
25674
25675     readonly attribute DOMString[]? thumbnailURIs;
25676
25677     readonly attribute Date? releaseDate;
25678
25679     readonly attribute Date? modifiedDate;
25680
25681     readonly attribute unsigned long size;
25682
25683     attribute DOMString? description;
25684
25685     attribute unsigned long rating;
25686   };</webidl>
25687       <descriptive>
25688           <brief>
25689  This interface provides access to properties of a content.
25690           </brief>
25691           <version>
25692  2.0
25693           </version>
25694       </descriptive>
25695       <ExtendedAttributeList>
25696         <ExtendedAttribute name="NoInterfaceObject">
25697           <webidl>NoInterfaceObject</webidl>
25698         </ExtendedAttribute>
25699       </ExtendedAttributeList>
25700       <Attribute readonly="readonly" name="editableAttributes" id="::Content::Content::editableAttributes">
25701         <webidl>    readonly attribute DOMString[] editableAttributes;</webidl>
25702         <descriptive>
25703             <brief>
25704  The list of attributes that can be editable to the local backend using update or updateBatch method.
25705             </brief>
25706             <version>
25707  2.0
25708             </version>
25709         </descriptive>
25710         <Type type="array">
25711           <Type type="DOMString"/>
25712         </Type>
25713       </Attribute>
25714       <Attribute readonly="readonly" name="id" id="::Content::Content::id">
25715         <webidl>    readonly attribute <ref>ContentId</ref> id;</webidl>
25716         <descriptive>
25717             <brief>
25718  The opaque content identifier.
25719             </brief>
25720             <version>
25721  2.0
25722             </version>
25723         </descriptive>
25724         <Type name="ContentId"/>
25725       </Attribute>
25726       <Attribute name="name" id="::Content::Content::name">
25727         <webidl>    attribute DOMString name;</webidl>
25728         <descriptive>
25729             <brief>
25730  The content name. The initial value is the file name of the content.
25731             </brief>
25732             <version>
25733  2.1
25734             </version>
25735         </descriptive>
25736         <Type type="DOMString"/>
25737       </Attribute>
25738       <Attribute readonly="readonly" name="type" id="::Content::Content::type">
25739         <webidl>    readonly attribute <ref>ContentType</ref> type;</webidl>
25740         <descriptive>
25741             <brief>
25742  The content type.
25743             </brief>
25744             <version>
25745  2.0
25746             </version>
25747         </descriptive>
25748         <Type name="ContentType"/>
25749       </Attribute>
25750       <Attribute readonly="readonly" name="mimeType" id="::Content::Content::mimeType">
25751         <webidl>    readonly attribute DOMString mimeType;</webidl>
25752         <descriptive>
25753             <brief>
25754  The content MIME type.
25755             </brief>
25756             <version>
25757  2.0
25758             </version>
25759         </descriptive>
25760         <Type type="DOMString"/>
25761       </Attribute>
25762       <Attribute readonly="readonly" name="title" id="::Content::Content::title">
25763         <webidl>    readonly attribute DOMString title;</webidl>
25764         <descriptive>
25765             <brief>
25766  The content title.
25767             </brief>
25768             <version>
25769  2.0
25770             </version>
25771         </descriptive>
25772         <Type type="DOMString"/>
25773       </Attribute>
25774       <Attribute readonly="readonly" name="contentURI" id="::Content::Content::contentURI">
25775         <webidl>    readonly attribute DOMString contentURI;</webidl>
25776         <descriptive>
25777             <brief>
25778  The URI to access the content.
25779             </brief>
25780             <version>
25781  2.0
25782             </version>
25783         </descriptive>
25784         <Type type="DOMString"/>
25785       </Attribute>
25786       <Attribute readonly="readonly" name="thumbnailURIs" id="::Content::Content::thumbnailURIs">
25787         <webidl>    readonly attribute DOMString[]? thumbnailURIs;</webidl>
25788         <descriptive>
25789             <brief>
25790  The array of content thumbnails URIs.
25791             </brief>
25792             <version>
25793  2.0
25794             </version>
25795         </descriptive>
25796         <Type type="array" nullable="nullable">
25797           <Type type="DOMString"/>
25798         </Type>
25799       </Attribute>
25800       <Attribute readonly="readonly" name="releaseDate" id="::Content::Content::releaseDate">
25801         <webidl>    readonly attribute Date? releaseDate;</webidl>
25802         <descriptive>
25803             <brief>
25804  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.
25805             </brief>
25806             <version>
25807  2.0
25808             </version>
25809         </descriptive>
25810         <Type type="Date" nullable="nullable"/>
25811       </Attribute>
25812       <Attribute readonly="readonly" name="modifiedDate" id="::Content::Content::modifiedDate">
25813         <webidl>    readonly attribute Date? modifiedDate;</webidl>
25814         <descriptive>
25815             <brief>
25816  The last modified date for a content.
25817             </brief>
25818             <version>
25819  2.0
25820             </version>
25821         </descriptive>
25822         <Type type="Date" nullable="nullable"/>
25823       </Attribute>
25824       <Attribute readonly="readonly" name="size" id="::Content::Content::size">
25825         <webidl>    readonly attribute unsigned long size;</webidl>
25826         <descriptive>
25827             <brief>
25828  The file size of the content in bytes.
25829             </brief>
25830             <version>
25831  2.0
25832             </version>
25833         </descriptive>
25834         <Type type="unsigned long"/>
25835       </Attribute>
25836       <Attribute name="description" id="::Content::Content::description">
25837         <webidl>    attribute DOMString? description;</webidl>
25838         <descriptive>
25839             <brief>
25840  The content description.
25841             </brief>
25842             <version>
25843  2.0
25844             </version>
25845         </descriptive>
25846         <Type type="DOMString" nullable="nullable"/>
25847       </Attribute>
25848       <Attribute name="rating" id="::Content::Content::rating">
25849         <webidl>    attribute unsigned long rating;</webidl>
25850         <descriptive>
25851             <brief>
25852  The content rating and this value can vary from <var>0 </var>to <var>10</var>.
25853             </brief>
25854             <version>
25855  2.0
25856             </version>
25857         </descriptive>
25858         <Type type="unsigned long"/>
25859       </Attribute>
25860     </Interface>
25861     <Interface name="VideoContent" id="::Content::VideoContent">
25862       <webidl>  [NoInterfaceObject] interface VideoContent : <ref>Content</ref> {
25863
25864     attribute <ref>SimpleCoordinates</ref>? geolocation;
25865
25866     readonly attribute DOMString? album;
25867
25868     readonly attribute DOMString[]? artists;
25869
25870     readonly attribute unsigned long duration;
25871
25872     readonly attribute unsigned long width;
25873
25874     readonly attribute unsigned long height;
25875
25876   };</webidl>
25877       <descriptive>
25878           <brief>
25879  This interface extends a basic <em>Content </em>object with video-specific attributes.
25880           </brief>
25881           <version>
25882  2.0
25883           </version>
25884       </descriptive>
25885       <ExtendedAttributeList>
25886         <ExtendedAttribute name="NoInterfaceObject">
25887           <webidl>NoInterfaceObject</webidl>
25888         </ExtendedAttribute>
25889       </ExtendedAttributeList>
25890       <InterfaceInheritance>
25891         <Name name="Content"/>
25892       </InterfaceInheritance>
25893       <Attribute name="geolocation" id="::Content::VideoContent::geolocation">
25894         <webidl>    attribute <ref>SimpleCoordinates</ref>? geolocation;</webidl>
25895         <descriptive>
25896             <brief>
25897  The geographical location where the video was made.
25898             </brief>
25899             <version>
25900  2.0
25901             </version>
25902         </descriptive>
25903         <Type name="SimpleCoordinates" nullable="nullable"/>
25904       </Attribute>
25905       <Attribute readonly="readonly" name="album" id="::Content::VideoContent::album">
25906         <webidl>    readonly attribute DOMString? album;</webidl>
25907         <descriptive>
25908             <brief>
25909  The album name to which the video belongs.
25910             </brief>
25911             <version>
25912  2.0
25913             </version>
25914         </descriptive>
25915         <Type type="DOMString" nullable="nullable"/>
25916       </Attribute>
25917       <Attribute readonly="readonly" name="artists" id="::Content::VideoContent::artists">
25918         <webidl>    readonly attribute DOMString[]? artists;</webidl>
25919         <descriptive>
25920             <brief>
25921  The list of artists who created the video.
25922             </brief>
25923             <version>
25924  2.0
25925             </version>
25926         </descriptive>
25927         <Type type="array" nullable="nullable">
25928           <Type type="DOMString"/>
25929         </Type>
25930       </Attribute>
25931       <Attribute readonly="readonly" name="duration" id="::Content::VideoContent::duration">
25932         <webidl>    readonly attribute unsigned long duration;</webidl>
25933         <descriptive>
25934             <brief>
25935  The video duration in milliseconds.
25936             </brief>
25937             <version>
25938  2.0
25939             </version>
25940         </descriptive>
25941         <Type type="unsigned long"/>
25942       </Attribute>
25943       <Attribute readonly="readonly" name="width" id="::Content::VideoContent::width">
25944         <webidl>    readonly attribute unsigned long width;</webidl>
25945         <descriptive>
25946             <brief>
25947  The width of a video in pixels.
25948             </brief>
25949             <version>
25950  2.0
25951             </version>
25952         </descriptive>
25953         <Type type="unsigned long"/>
25954       </Attribute>
25955       <Attribute readonly="readonly" name="height" id="::Content::VideoContent::height">
25956         <webidl>    readonly attribute unsigned long height;</webidl>
25957         <descriptive>
25958             <brief>
25959  The height of the video in pixels.
25960             </brief>
25961             <version>
25962  2.0
25963             </version>
25964         </descriptive>
25965         <Type type="unsigned long"/>
25966       </Attribute>
25967     </Interface>
25968     <Interface name="AudioContentLyrics" id="::Content::AudioContentLyrics">
25969       <webidl>  [NoInterfaceObject] interface AudioContentLyrics {
25970
25971     readonly attribute <ref>AudioContentLyricsType</ref> type;
25972
25973     readonly attribute unsigned long[] timestamps;
25974
25975     readonly attribute DOMString[] texts;
25976   };</webidl>
25977       <descriptive>
25978           <brief>
25979  This interface provides lyrics for music.
25980           </brief>
25981           <version>
25982  2.0
25983           </version>
25984       </descriptive>
25985       <ExtendedAttributeList>
25986         <ExtendedAttribute name="NoInterfaceObject">
25987           <webidl>NoInterfaceObject</webidl>
25988         </ExtendedAttribute>
25989       </ExtendedAttributeList>
25990       <Attribute readonly="readonly" name="type" id="::Content::AudioContentLyrics::type">
25991         <webidl>    readonly attribute <ref>AudioContentLyricsType</ref> type;</webidl>
25992         <descriptive>
25993             <brief>
25994  The type of lyrics, that is, whether they are synchronized with the music or not.
25995             </brief>
25996             <version>
25997  2.0
25998             </version>
25999         </descriptive>
26000         <Type name="AudioContentLyricsType"/>
26001       </Attribute>
26002       <Attribute readonly="readonly" name="timestamps" id="::Content::AudioContentLyrics::timestamps">
26003         <webidl>    readonly attribute unsigned long[] timestamps;</webidl>
26004         <descriptive>
26005             <brief>
26006  The array of timestamps in milliseconds for lyrics.
26007             </brief>
26008            <description>
26009             <p>
26010 If the lyrics are not synchronized (if there is no time information for the lyrics) the array is undefined.
26011             </p>
26012            </description>
26013             <version>
26014  2.0
26015             </version>
26016         </descriptive>
26017         <Type type="array">
26018           <Type type="unsigned long"/>
26019         </Type>
26020       </Attribute>
26021       <Attribute readonly="readonly" name="texts" id="::Content::AudioContentLyrics::texts">
26022         <webidl>    readonly attribute DOMString[] texts;</webidl>
26023         <descriptive>
26024             <brief>
26025  The array of lyric snippets.
26026             </brief>
26027            <description>
26028             <p>
26029 If the lyrics are not synchronized, the array has only one member with full lyrics.
26030             </p>
26031            </description>
26032             <version>
26033  2.0
26034             </version>
26035         </descriptive>
26036         <Type type="array">
26037           <Type type="DOMString"/>
26038         </Type>
26039       </Attribute>
26040     </Interface>
26041     <Interface name="AudioContent" id="::Content::AudioContent">
26042       <webidl>  [NoInterfaceObject] interface AudioContent : <ref>Content</ref> {
26043
26044     readonly attribute DOMString? album;
26045
26046     readonly attribute DOMString[]? genres;
26047
26048     readonly attribute DOMString[]? artists;
26049
26050     readonly attribute DOMString[]? composers;
26051
26052     readonly attribute <ref>AudioContentLyrics</ref>? lyrics;
26053
26054     readonly attribute DOMString? copyright;
26055
26056     readonly attribute unsigned long bitrate;
26057
26058     readonly attribute unsigned short? trackNumber;
26059
26060     readonly attribute unsigned long duration;
26061
26062   };</webidl>
26063       <descriptive>
26064           <brief>
26065  This interface extends a basic <em>Content </em>object with audio-specific attributes.
26066           </brief>
26067           <version>
26068  2.0
26069           </version>
26070       </descriptive>
26071       <ExtendedAttributeList>
26072         <ExtendedAttribute name="NoInterfaceObject">
26073           <webidl>NoInterfaceObject</webidl>
26074         </ExtendedAttribute>
26075       </ExtendedAttributeList>
26076       <InterfaceInheritance>
26077         <Name name="Content"/>
26078       </InterfaceInheritance>
26079       <Attribute readonly="readonly" name="album" id="::Content::AudioContent::album">
26080         <webidl>    readonly attribute DOMString? album;</webidl>
26081         <descriptive>
26082             <brief>
26083  The album name to which the audio belongs.
26084             </brief>
26085             <version>
26086  2.0
26087             </version>
26088         </descriptive>
26089         <Type type="DOMString" nullable="nullable"/>
26090       </Attribute>
26091       <Attribute readonly="readonly" name="genres" id="::Content::AudioContent::genres">
26092         <webidl>    readonly attribute DOMString[]? genres;</webidl>
26093         <descriptive>
26094             <brief>
26095  The list of genres to which the audio belongs.
26096             </brief>
26097             <version>
26098  2.0
26099             </version>
26100         </descriptive>
26101         <Type type="array" nullable="nullable">
26102           <Type type="DOMString"/>
26103         </Type>
26104       </Attribute>
26105       <Attribute readonly="readonly" name="artists" id="::Content::AudioContent::artists">
26106         <webidl>    readonly attribute DOMString[]? artists;</webidl>
26107         <descriptive>
26108             <brief>
26109  The list of artists who created the audio.
26110             </brief>
26111             <version>
26112  2.0
26113             </version>
26114         </descriptive>
26115         <Type type="array" nullable="nullable">
26116           <Type type="DOMString"/>
26117         </Type>
26118       </Attribute>
26119       <Attribute readonly="readonly" name="composers" id="::Content::AudioContent::composers">
26120         <webidl>    readonly attribute DOMString[]? composers;</webidl>
26121         <descriptive>
26122             <brief>
26123  The list of composers for the music.
26124             </brief>
26125             <version>
26126  2.0
26127             </version>
26128         </descriptive>
26129         <Type type="array" nullable="nullable">
26130           <Type type="DOMString"/>
26131         </Type>
26132       </Attribute>
26133       <Attribute readonly="readonly" name="lyrics" id="::Content::AudioContent::lyrics">
26134         <webidl>    readonly attribute <ref>AudioContentLyrics</ref>? lyrics;</webidl>
26135         <descriptive>
26136             <brief>
26137  The lyrics of a song in an audio file.
26138             </brief>
26139             <version>
26140  2.0
26141             </version>
26142         </descriptive>
26143         <Type name="AudioContentLyrics" nullable="nullable"/>
26144       </Attribute>
26145       <Attribute readonly="readonly" name="copyright" id="::Content::AudioContent::copyright">
26146         <webidl>    readonly attribute DOMString? copyright;</webidl>
26147         <descriptive>
26148             <brief>
26149  The copyright information.
26150             </brief>
26151             <version>
26152  2.0
26153             </version>
26154         </descriptive>
26155         <Type type="DOMString" nullable="nullable"/>
26156       </Attribute>
26157       <Attribute readonly="readonly" name="bitrate" id="::Content::AudioContent::bitrate">
26158         <webidl>    readonly attribute unsigned long bitrate;</webidl>
26159         <descriptive>
26160             <brief>
26161  The audio bitrate in bits per second. By default, this value is 0.
26162             </brief>
26163             <version>
26164  2.0
26165             </version>
26166         </descriptive>
26167         <Type type="unsigned long"/>
26168       </Attribute>
26169       <Attribute readonly="readonly" name="trackNumber" id="::Content::AudioContent::trackNumber">
26170         <webidl>    readonly attribute unsigned short? trackNumber;</webidl>
26171         <descriptive>
26172             <brief>
26173  The track number if the audio belongs to an album.
26174             </brief>
26175             <version>
26176  2.0
26177             </version>
26178         </descriptive>
26179         <Type type="unsigned short" nullable="nullable"/>
26180       </Attribute>
26181       <Attribute readonly="readonly" name="duration" id="::Content::AudioContent::duration">
26182         <webidl>    readonly attribute unsigned long duration;</webidl>
26183         <descriptive>
26184             <brief>
26185  The audio duration in milliseconds.
26186             </brief>
26187             <version>
26188  2.0
26189             </version>
26190         </descriptive>
26191         <Type type="unsigned long"/>
26192       </Attribute>
26193     </Interface>
26194     <Interface name="ImageContent" id="::Content::ImageContent">
26195       <webidl>  [NoInterfaceObject] interface ImageContent : <ref>Content</ref> {
26196
26197     attribute <ref>SimpleCoordinates</ref>? geolocation;
26198
26199     readonly attribute unsigned long width;
26200
26201     readonly attribute unsigned long height;
26202
26203     attribute <ref>ImageContentOrientation</ref> orientation;
26204
26205   };</webidl>
26206       <descriptive>
26207           <brief>
26208  This interface extends a basic <em>Content </em>object with image-specific attributes.
26209           </brief>
26210           <version>
26211  2.0
26212           </version>
26213       </descriptive>
26214       <ExtendedAttributeList>
26215         <ExtendedAttribute name="NoInterfaceObject">
26216           <webidl>NoInterfaceObject</webidl>
26217         </ExtendedAttribute>
26218       </ExtendedAttributeList>
26219       <InterfaceInheritance>
26220         <Name name="Content"/>
26221       </InterfaceInheritance>
26222       <Attribute name="geolocation" id="::Content::ImageContent::geolocation">
26223         <webidl>    attribute <ref>SimpleCoordinates</ref>? geolocation;</webidl>
26224         <descriptive>
26225             <brief>
26226  The geographical location where the image has been made.
26227             </brief>
26228             <version>
26229  2.0
26230             </version>
26231         </descriptive>
26232         <Type name="SimpleCoordinates" nullable="nullable"/>
26233       </Attribute>
26234       <Attribute readonly="readonly" name="width" id="::Content::ImageContent::width">
26235         <webidl>    readonly attribute unsigned long width;</webidl>
26236         <descriptive>
26237             <brief>
26238  The width of an image in pixels.
26239             </brief>
26240             <version>
26241  2.0
26242             </version>
26243         </descriptive>
26244         <Type type="unsigned long"/>
26245       </Attribute>
26246       <Attribute readonly="readonly" name="height" id="::Content::ImageContent::height">
26247         <webidl>    readonly attribute unsigned long height;</webidl>
26248         <descriptive>
26249             <brief>
26250  The height of an image in pixels.
26251             </brief>
26252             <version>
26253  2.0
26254             </version>
26255         </descriptive>
26256         <Type type="unsigned long"/>
26257       </Attribute>
26258       <Attribute name="orientation" id="::Content::ImageContent::orientation">
26259         <webidl>    attribute <ref>ImageContentOrientation</ref> orientation;</webidl>
26260         <descriptive>
26261             <brief>
26262  The image orientation.
26263             </brief>
26264             <version>
26265  2.0
26266             </version>
26267         </descriptive>
26268         <Type name="ImageContentOrientation"/>
26269       </Attribute>
26270     </Interface>
26271   </Module>
26272   <Module name="DataControl" id="::DataControl">
26273     <webidl>module DataControl {
26274     enum DataType { &quot;MAP&quot;, &quot;SQL&quot;};
26275  
26276     [NoInterfaceObject] interface DataControlManagerObject {
26277         readonly attribute <ref>DataControlManager</ref> datacontrol;
26278     };
26279     <ref>Tizen</ref> implements <ref>DataControlManagerObject</ref>;
26280
26281     
26282     [NoInterfaceObject] interface DataControlManager {
26283         <ref>DataControlConsumerObject</ref> getDataControlConsumer(DOMString providerId, DOMString dataId, <ref>DataType</ref> type) raises(<ref>WebAPIException</ref>);
26284     };
26285
26286      
26287     [NoInterfaceObject] interface DataControlConsumerObject {
26288         readonly attribute <ref>DataType</ref> type;
26289         readonly attribute DOMString providerId;
26290         readonly attribute DOMString dataId;
26291     };
26292
26293          
26294     [NoInterfaceObject] interface SQLDataControlConsumer : <ref>DataControlConsumerObject</ref> {
26295         void insert(unsigned long reqId, <ref>RowData</ref> insertionData, 
26296                     optional <ref>DataControlInsertSuccessCallback</ref>? successCallback, 
26297                     optional <ref>DataControlErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
26298
26299         void update(unsigned long reqId, <ref>RowData</ref> updateData, DOMString where, 
26300                     optional <ref>DataControlSuccessCallback</ref>? successCallback, 
26301                     optional <ref>DataControlErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);        
26302
26303         void remove(unsigned long reqId, DOMString where, 
26304                     optional <ref>DataControlSuccessCallback</ref>? successCallback, 
26305                     optional <ref>DataControlErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
26306
26307      
26308         void select(unsigned long reqId, DOMString[] columns, DOMString where,
26309                     <ref>DataControlSelectSuccessCallback</ref> successCallback, optional <ref>DataControlErrorCallback</ref>? errorCallback, 
26310                     optional unsigned long? page, optional unsigned long? maxNumberPerPage) raises(<ref>WebAPIException</ref>);
26311     };
26312
26313     [NoInterfaceObject] interface MappedDataControlConsumer : <ref>DataControlConsumerObject</ref> {
26314         void addValue(unsigned long reqId, DOMString key, DOMString value, 
26315                      optional <ref>DataControlSuccessCallback</ref>? successCallback, 
26316                      optional <ref>DataControlErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
26317
26318          void removeValue(unsigned long reqId, DOMString key, DOMString value, 
26319                           <ref>DataControlSuccessCallback</ref> successCallback, 
26320                           optional <ref>DataControlErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
26321
26322          void getValue(unsigned long reqId, DOMString key, 
26323                        <ref>DataControlGetValueSuccessCallback</ref> successCallback, 
26324                        optional <ref>DataControlErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
26325
26326          void updateValue(unsigned long reqId, DOMString key, DOMString oldValue, DOMString newValue, 
26327                           <ref>DataControlSuccessCallback</ref> successCallback, 
26328                           optional <ref>DataControlErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
26329     };
26330
26331          
26332     [Callback=FunctionOnly, NoInterfaceObject] interface DataControlSuccessCallback {
26333         void onsuccess(unsigned long reqId);
26334     };
26335
26336    
26337     [Callback=FunctionOnly, NoInterfaceObject] interface DataControlErrorCallback {
26338         void onerror(unsigned long reqId, <ref>WebAPIError</ref> error);
26339     };
26340
26341          
26342     [Callback=FunctionOnly, NoInterfaceObject] interface DataControlInsertSuccessCallback {
26343         void onsuccess(unsigned long reqId, long insertRowId);
26344     };
26345
26346
26347          
26348     [Callback=FunctionOnly, NoInterfaceObject] interface DataControlSelectSuccessCallback {
26349         void onsuccess(<ref>RowData</ref>[] rows, unsigned long reqId);
26350     };
26351
26352          
26353     [Callback=FunctionOnly, NoInterfaceObject] interface DataControlGetValueSuccessCallback {
26354         void onsuccess(DOMString[] values, unsigned long reqid);
26355     };
26356     
26357      
26358     dictionary RowData {
26359         DOMString[] columns;
26360         DOMString[] values;
26361     };
26362 };</webidl>
26363     <descriptive>
26364         <brief>
26365  This specification defines a DataControl API for applications.
26366         </brief>
26367        <description>
26368         <p>
26369 The DataControl functionality provides a way to access specific data that is exported by other applications.
26370         </p>
26371         <p>
26372 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.
26373         </p>
26374        </description>
26375         <version>
26376  2.1
26377         </version>
26378     </descriptive>
26379     <Enum name="DataType" id="::DataControl::DataType">
26380       <webidl>    enum DataType { &quot;MAP&quot;, &quot;SQL&quot;};</webidl>
26381       <descriptive>
26382           <brief>
26383  Data types.
26384           </brief>
26385           <version>
26386  2.1
26387           </version>
26388       </descriptive>
26389       <EnumValue stringvalue="MAP">
26390         <webidl> &quot;MAP</webidl>
26391       </EnumValue>
26392       <EnumValue stringvalue="SQL">
26393         <webidl> &quot;SQL</webidl>
26394       </EnumValue>
26395     </Enum>
26396     <Interface name="DataControlManagerObject" id="::DataControl::DataControlManagerObject">
26397       <webidl>    [NoInterfaceObject] interface DataControlManagerObject {
26398         readonly attribute <ref>DataControlManager</ref> datacontrol;
26399     };</webidl>
26400       <descriptive>
26401           <brief>
26402  Defines what is instantiated in the <em>Tizen</em> object.
26403           </brief>
26404          <description>
26405           <p>
26406 There is a <em>tizen.datacontrol</em> object that allows access to the
26407 DataControl API.
26408           </p>
26409          </description>
26410           <version>
26411  2.1
26412           </version>
26413       </descriptive>
26414       <ExtendedAttributeList>
26415         <ExtendedAttribute name="NoInterfaceObject">
26416           <webidl>NoInterfaceObject</webidl>
26417         </ExtendedAttribute>
26418       </ExtendedAttributeList>
26419       <Attribute readonly="readonly" name="datacontrol" id="::DataControl::DataControlManagerObject::datacontrol">
26420         <webidl>        readonly attribute <ref>DataControlManager</ref> datacontrol;</webidl>
26421         <Type name="DataControlManager"/>
26422       </Attribute>
26423     </Interface>
26424     <Implements name1="Tizen" name2="DataControlManagerObject">
26425       <webidl>    <ref>Tizen</ref> implements <ref>DataControlManagerObject</ref>;</webidl>
26426     </Implements>
26427     <Interface name="DataControlManager" id="::DataControl::DataControlManager">
26428       <webidl>    [NoInterfaceObject] interface DataControlManager {
26429         <ref>DataControlConsumerObject</ref> getDataControlConsumer(DOMString providerId, DOMString dataId, <ref>DataType</ref> type) raises(<ref>WebAPIException</ref>);
26430     };</webidl>
26431       <descriptive>
26432           <brief>
26433  This interface provides access to the <em>DataControlManager </em>object.
26434           </brief>
26435           <version>
26436  2.1
26437           </version>
26438       </descriptive>
26439       <ExtendedAttributeList>
26440         <ExtendedAttribute name="NoInterfaceObject">
26441           <webidl>NoInterfaceObject</webidl>
26442         </ExtendedAttribute>
26443       </ExtendedAttributeList>
26444       <Operation name="getDataControlConsumer" id="::DataControl::DataControlManager::getDataControlConsumer">
26445         <webidl>        <ref>DataControlConsumerObject</ref> getDataControlConsumer(DOMString providerId, DOMString dataId, <ref>DataType</ref> type) raises(<ref>WebAPIException</ref>);</webidl>
26446         <descriptive>
26447             <brief>
26448  Gets <em>DataControlConsumerObject</em> with a given DataType.
26449             </brief>
26450             <version>
26451  2.1
26452             </version>
26453             <privilegelevel>
26454  partner
26455             </privilegelevel>
26456             <privilege>
26457  http://tizen.org/privilege/datacontrol.consumer
26458             </privilege>
26459             <Code> //The data provider, a native application, should be pre-installed and launched.
26460  //The same provider id should be defined for the use of this API between a native application(provider) and a web application(consumer).
26461  //In this example, DictionaryDataControlProvider native sample application is used as a data control provider.
26462
26463  //Gets SQL type DataControlConsumerObject
26464  try {
26465      var globalSQLConsumer = tizen.datacontrol.getDataControlConsumer(
26466      &quot;http://tizen.org/datacontrol/provider/DictionaryDataControlProvider&quot;, &quot;Dictionary&quot;, &quot;SQL&quot;);
26467  } catch (err) {
26468      console.log (err.name +&quot;: &quot; + err.message);
26469  }
26470  // Gets MAP type DataControlConsumerObject
26471  try {
26472       globalMappedConsumer = tizen.datacontrol.getDataControlConsumer(
26473       &quot;http://tizen.org/datacontrol/provider/DictionaryDataControlProvider&quot;, &quot;Dictionary&quot;, &quot;MAP&quot;);
26474  } catch (err) {
26475       console.log (err.name +&quot;: &quot; + err.message);
26476  }
26477  </Code>
26478         </descriptive>
26479         <Type name="DataControlConsumerObject">
26480           <descriptive>
26481               <description><p>
26482  DataControlConsumerObject The local <em>DataControlConsumerObject</em>.
26483               </p></description>
26484           </descriptive>
26485         </Type>
26486         <ArgumentList>
26487           <Argument name="providerId">
26488             <descriptive>
26489                 <description><p>
26490  A provider ID to use and it should be shared between DataControl provider and DataControl consumer.
26491                 </p></description>
26492             </descriptive>
26493             <Type type="DOMString"/>
26494           </Argument>
26495           <Argument name="dataId">
26496             <descriptive>
26497                 <description><p>
26498  A string for identifying a specific data.
26499                 </p></description>
26500             </descriptive>
26501             <Type type="DOMString"/>
26502           </Argument>
26503           <Argument name="type">
26504             <descriptive>
26505                 <description><p>
26506  The DataType to use.
26507                 </p></description>
26508             </descriptive>
26509             <Type name="DataType"/>
26510           </Argument>
26511         </ArgumentList>
26512         <Raises>
26513           <RaiseException name="WebAPIException">
26514             <descriptive>
26515                 <description><p>
26516  with error type TypeMismatchError, if parameter type is mismatched.  
26517                 </p></description>
26518                 <description><p>
26519  with error type SecurityError, if the application does not have the privilege to call this method.
26520                 </p></description>
26521                 <description><p>
26522  with error type UnknownError, if any other error occurs. 
26523                 </p></description>
26524             </descriptive>
26525           </RaiseException>
26526         </Raises>
26527       </Operation>
26528     </Interface>
26529     <Interface name="DataControlConsumerObject" id="::DataControl::DataControlConsumerObject">
26530       <webidl>    [NoInterfaceObject] interface DataControlConsumerObject {
26531         readonly attribute <ref>DataType</ref> type;
26532         readonly attribute DOMString providerId;
26533         readonly attribute DOMString dataId;
26534     };</webidl>
26535       <descriptive>
26536           <brief>
26537  This interface provides common attributes for other derived DataControlCunsumerObject.
26538           </brief>
26539           <version>
26540  2.1
26541           </version>
26542       </descriptive>
26543       <ExtendedAttributeList>
26544         <ExtendedAttribute name="NoInterfaceObject">
26545           <webidl>NoInterfaceObject</webidl>
26546         </ExtendedAttribute>
26547       </ExtendedAttributeList>
26548       <Attribute readonly="readonly" name="type" id="::DataControl::DataControlConsumerObject::type">
26549         <webidl>        readonly attribute <ref>DataType</ref> type;</webidl>
26550         <descriptive>
26551             <brief>
26552  An attribute to store the DataType.
26553             </brief>
26554             <version>
26555  2.1
26556             </version>
26557         </descriptive>
26558         <Type name="DataType"/>
26559       </Attribute>
26560       <Attribute readonly="readonly" name="providerId" id="::DataControl::DataControlConsumerObject::providerId">
26561         <webidl>        readonly attribute DOMString providerId;</webidl>
26562         <descriptive>
26563             <brief>
26564  An attribute to hold a provider identifier of the application whom it shares the DataControl with.
26565 This attribute should be known to users who want to interact with application to provide.
26566             </brief>
26567             <version>
26568  2.1
26569             </version>
26570         </descriptive>
26571         <Type type="DOMString"/>
26572       </Attribute>
26573       <Attribute readonly="readonly" name="dataId" id="::DataControl::DataControlConsumerObject::dataId">
26574         <webidl>        readonly attribute DOMString dataId;</webidl>
26575         <descriptive>
26576             <brief>
26577  The dataId identifies specific data, usually a database table to process(insert, delete, update).
26578 The string consists of one or more components, separated by a slash('/').
26579             </brief>
26580             <version>
26581  2.1
26582             </version>
26583         </descriptive>
26584         <Type type="DOMString"/>
26585       </Attribute>
26586     </Interface>
26587     <Interface name="SQLDataControlConsumer" id="::DataControl::SQLDataControlConsumer">
26588       <webidl>    [NoInterfaceObject] interface SQLDataControlConsumer : <ref>DataControlConsumerObject</ref> {
26589         void insert(unsigned long reqId, <ref>RowData</ref> insertionData, 
26590                     optional <ref>DataControlInsertSuccessCallback</ref>? successCallback, 
26591                     optional <ref>DataControlErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
26592
26593         void update(unsigned long reqId, <ref>RowData</ref> updateData, DOMString where, 
26594                     optional <ref>DataControlSuccessCallback</ref>? successCallback, 
26595                     optional <ref>DataControlErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);        
26596
26597         void remove(unsigned long reqId, DOMString where, 
26598                     optional <ref>DataControlSuccessCallback</ref>? successCallback, 
26599                     optional <ref>DataControlErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
26600
26601      
26602         void select(unsigned long reqId, DOMString[] columns, DOMString where,
26603                     <ref>DataControlSelectSuccessCallback</ref> successCallback, optional <ref>DataControlErrorCallback</ref>? errorCallback, 
26604                     optional unsigned long? page, optional unsigned long? maxNumberPerPage) raises(<ref>WebAPIException</ref>);
26605     };</webidl>
26606       <descriptive>
26607           <brief>
26608  This interface defines SQL data type operatiors. 
26609           </brief>
26610           <version>
26611  2.1
26612           </version>
26613       </descriptive>
26614       <ExtendedAttributeList>
26615         <ExtendedAttribute name="NoInterfaceObject">
26616           <webidl>NoInterfaceObject</webidl>
26617         </ExtendedAttribute>
26618       </ExtendedAttributeList>
26619       <InterfaceInheritance>
26620         <Name name="DataControlConsumerObject"/>
26621       </InterfaceInheritance>
26622       <Operation name="insert" id="::DataControl::SQLDataControlConsumer::insert">
26623         <webidl>        void insert(unsigned long reqId, <ref>RowData</ref> insertionData, 
26624                     optional <ref>DataControlInsertSuccessCallback</ref>? successCallback, 
26625                     optional <ref>DataControlErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
26626         <descriptive>
26627             <brief>
26628  Inserts new rows into a table owned by an SQL-type data control provider.
26629             </brief>
26630             <version>
26631  2.1
26632             </version>
26633             <privilegelevel>
26634  partner
26635             </privilegelevel>
26636             <privilege>
26637  http://tizen.org/privilege/datacontrol.consumer
26638             </privilege>
26639             <Code> function successcb(id)
26640  {
26641      console.log(&quot;ok : reqid &quot;+ id);
26642  }
26643  
26644  function errorcb(id, error)
26645  {
26646      console.log(&quot;error id : &quot; + id + &quot;, error msg : &quot; + error.message);
26647  }
26648  
26649  try {
26650      var rowData = { 
26651          columns : [&quot;WORD&quot;, &quot;WORD_DESC&quot;] ,
26652          values  : [&quot;'tizen1'&quot;, &quot;'tizen2'&quot;]
26653      };
26654      // Defines globalReqId before
26655      // Increases globalReqId for uniqueness
26656      globalReqId++;
26657      globalSQLConsumer.insert(globalReqId, rowData, successcb, errorcb);
26658  } catch (err) {
26659      console.log (err.name +&quot;: &quot; + err.message);
26660  }
26661  </Code>
26662         </descriptive>
26663         <Type type="void"/>
26664         <ArgumentList>
26665           <Argument name="reqId">
26666             <descriptive>
26667                 <description><p>
26668  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.
26669                 </p></description>
26670             </descriptive>
26671             <Type type="unsigned long"/>
26672           </Argument>
26673           <Argument name="insertionData">
26674             <descriptive>
26675                 <description><p>
26676  The data on columns and values to insert.
26677                 </p></description>
26678             </descriptive>
26679             <Type name="RowData"/>
26680           </Argument>
26681           <Argument optional="optional" name="successCallback">
26682             <descriptive>
26683                 <description><p>
26684  The method to invoke when the asynchronous call completes successfully.
26685                 </p></description>
26686             </descriptive>
26687             <Type name="DataControlInsertSuccessCallback" nullable="nullable"/>
26688           </Argument>
26689           <Argument optional="optional" name="errorCallback">
26690             <descriptive>
26691                 <description><p>
26692  The method to invoke when an error occurs.
26693                 </p></description>
26694             </descriptive>
26695             <Type name="DataControlErrorCallback" nullable="nullable"/>
26696           </Argument>
26697         </ArgumentList>
26698         <Raises>
26699           <RaiseException name="WebAPIException">
26700             <descriptive>
26701                 <description><p>
26702  with error type TypeMismatchError, if parameter type is not compatible with the expected type for that parameter.
26703                 </p></description>
26704                 <description><p>
26705  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.
26706                 </p></description>
26707                 <description><p>
26708  with error type IOError, if a DB operation has failed.
26709                 </p></description>
26710                 <description><p>
26711  with error type SecurityError, if the application does not have the privilege to call this method.
26712                 </p></description>
26713                 <description><p>
26714  with error type UnknownError, if any other error occurs.
26715                 </p></description>
26716             </descriptive>
26717           </RaiseException>
26718         </Raises>
26719       </Operation>
26720       <Operation name="update" id="::DataControl::SQLDataControlConsumer::update">
26721         <webidl>        void update(unsigned long reqId, <ref>RowData</ref> updateData, DOMString where, 
26722                     optional <ref>DataControlSuccessCallback</ref>? successCallback, 
26723                     optional <ref>DataControlErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
26724         <descriptive>
26725             <brief>
26726  Updates values of a table owned by an SQL-type data control provider.
26727             </brief>
26728             <version>
26729  2.1
26730             </version>
26731             <privilegelevel>
26732  partner
26733             </privilegelevel>
26734             <privilege>
26735  http://tizen.org/privilege/datacontrol.consumer
26736             </privilege>
26737             <Code> function successcb(id)
26738  {
26739      console.log(&quot;ok : reqid &quot; + id);
26740  }
26741  
26742  function errorcb(id, error)
26743  {
26744      console.log(&quot;error id : &quot; + id + &quot;, error msg : &quot; + error.message);
26745  }
26746  
26747  try {
26748      var rowData = { 
26749          columns : [&quot;WORD&quot;, &quot;WORD_DESC&quot;] ,
26750          values  : [&quot;'tizen1'&quot;, &quot;'samsung platform!'&quot;]
26751      };
26752      // Defines globalReqId before
26753      // Increases globalReqId for uniqueness
26754      globalReqId++;
26755      globalSQLConsumer.update(globalReqId, rowData, &quot;WORD='tizen1'&quot;, successcb, errorcb);
26756  } catch (err) {
26757      console.log (err.name +&quot;: &quot; + err.message);
26758  }
26759  </Code>
26760         </descriptive>
26761         <Type type="void"/>
26762         <ArgumentList>
26763           <Argument name="reqId">
26764             <descriptive>
26765                 <description><p>
26766  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.
26767                 </p></description>
26768             </descriptive>
26769             <Type type="unsigned long"/>
26770           </Argument>
26771           <Argument name="updateData">
26772             <descriptive>
26773                 <description><p>
26774  The data on columns and values to update.
26775                 </p></description>
26776             </descriptive>
26777             <Type name="RowData"/>
26778           </Argument>
26779           <Argument name="where">
26780             <descriptive>
26781                 <description><p>
26782  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>.
26783                 </p></description>
26784             </descriptive>
26785             <Type type="DOMString"/>
26786           </Argument>
26787           <Argument optional="optional" name="successCallback">
26788             <descriptive>
26789                 <description><p>
26790  The method to invoke when the asynchronous call completes successfully.
26791                 </p></description>
26792             </descriptive>
26793             <Type name="DataControlSuccessCallback" nullable="nullable"/>
26794           </Argument>
26795           <Argument optional="optional" name="errorCallback">
26796             <descriptive>
26797                 <description><p>
26798  The method to invoke when an error occurs.
26799                 </p></description>
26800             </descriptive>
26801             <Type name="DataControlErrorCallback" nullable="nullable"/>
26802           </Argument>
26803         </ArgumentList>
26804         <Raises>
26805           <RaiseException name="WebAPIException">
26806             <descriptive>
26807                 <description><p>
26808  with error type TypeMismatchError, if parameter type is not compatible with the expected type for that parameter.
26809                 </p></description>
26810                 <description><p>
26811  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.
26812                 </p></description>
26813                 <description><p>
26814  with error type IOError, if a DB operation has failed.
26815                 </p></description>
26816                 <description><p>
26817  with error type SecurityError, if the application does not have the privilege to call this method.
26818                 </p></description>
26819                 <description><p>
26820  with error type UnknownError, if any other error occurs.
26821                 </p></description>
26822             </descriptive>
26823           </RaiseException>
26824         </Raises>
26825       </Operation>
26826       <Operation name="remove" id="::DataControl::SQLDataControlConsumer::remove">
26827         <webidl>        void remove(unsigned long reqId, DOMString where, 
26828                     optional <ref>DataControlSuccessCallback</ref>? successCallback, 
26829                     optional <ref>DataControlErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
26830         <descriptive>
26831             <brief>
26832  Delete rows from a table that is owned by an SQL-type data control provider. 
26833             </brief>
26834             <version>
26835  2.1
26836             </version>
26837             <privilegelevel>
26838  partner
26839             </privilegelevel>
26840             <privilege>
26841  http://tizen.org/privilege/datacontrol.consumer
26842             </privilege>
26843             <Code> function successcb(id)
26844  {
26845      console.log(&quot;ok : reqid &quot; + id);
26846  }
26847  
26848  function errorcb(id, error)
26849  {
26850      console.log(&quot;error id : &quot; + id + &quot;, error msg : &quot; + error.message);
26851  }
26852  
26853  try {
26854      // Defines globalReqId before
26855      // Increases globalReqId for uniqueness
26856      globalReqId++;
26857      globalSQLConsumer.remove(globalReqId, &quot;WORD='tizen1'&quot;, successcb, errorcb);
26858  } catch (err) {
26859      console.log (err.name +&quot;: &quot; + err.message);
26860  }
26861  </Code>
26862         </descriptive>
26863         <Type type="void"/>
26864         <ArgumentList>
26865           <Argument name="reqId">
26866             <descriptive>
26867                 <description><p>
26868  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.
26869                 </p></description>
26870             </descriptive>
26871             <Type type="unsigned long"/>
26872           </Argument>
26873           <Argument name="where">
26874             <descriptive>
26875                 <description><p>
26876  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>.
26877                 </p></description>
26878             </descriptive>
26879             <Type type="DOMString"/>
26880           </Argument>
26881           <Argument optional="optional" name="successCallback">
26882             <descriptive>
26883                 <description><p>
26884  The method to invoke when the asynchronous call completes successfully.
26885                 </p></description>
26886             </descriptive>
26887             <Type name="DataControlSuccessCallback" nullable="nullable"/>
26888           </Argument>
26889           <Argument optional="optional" name="errorCallback">
26890             <descriptive>
26891                 <description><p>
26892  The method to invoke when an error occurs.
26893                 </p></description>
26894             </descriptive>
26895             <Type name="DataControlErrorCallback" nullable="nullable"/>
26896           </Argument>
26897         </ArgumentList>
26898         <Raises>
26899           <RaiseException name="WebAPIException">
26900             <descriptive>
26901                 <description><p>
26902  with error type TypeMismatchError, if parameter type is not compatible with the expected type for that parameter.
26903                 </p></description>
26904                 <description><p>
26905  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.
26906                 </p></description>
26907                 <description><p>
26908  with error type IOError, if a DB operation has failed.
26909                 </p></description>
26910                 <description><p>
26911  with error type SecurityError, if the application does not have the privilege to call this method.
26912                 </p></description>
26913                 <description><p>
26914  with error type UnknownError, if any other error occurs.
26915                 </p></description>
26916             </descriptive>
26917           </RaiseException>
26918         </Raises>
26919       </Operation>
26920       <Operation name="select" id="::DataControl::SQLDataControlConsumer::select">
26921         <webidl>        void select(unsigned long reqId, DOMString[] columns, DOMString where,
26922                     <ref>DataControlSelectSuccessCallback</ref> successCallback, optional <ref>DataControlErrorCallback</ref>? errorCallback, 
26923                     optional unsigned long? page, optional unsigned long? maxNumberPerPage) raises(<ref>WebAPIException</ref>);</webidl>
26924         <descriptive>
26925             <brief>
26926  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. 
26927             </brief>
26928             <version>
26929  2.1
26930             </version>
26931             <privilegelevel>
26932  partner
26933             </privilegelevel>
26934             <privilege>
26935  http://tizen.org/privilege/datacontrol.consumer
26936             </privilege>
26937             <Code> function getValueSuccessCB(result, id)
26938  {
26939      var length = result.length;
26940      for (var i = 0; i &#60; length; i++)
26941      {
26942          var j = 0;
26943          for (j = 0; j &#60; result[i].columns.length; j++)
26944          {
26945              console.log(&quot;column: &quot; + result[i].columns[j] + &quot;, value: &quot; + result[i].values[j]);
26946          }
26947      }
26948  }
26949
26950  function errorcb(id, error)
26951  {
26952      console.log(&quot;error id : &quot; + id + &quot;, error msg : &quot; + error.message);
26953  }
26954
26955  try {
26956      // Defines globalReqId before
26957      // Increases globalReqId for uniqueness
26958      var array = [&quot;WORD&quot;, &quot;WORD_DESC&quot; ];
26959      globalReqId++;
26960      globalSQLConsumer.select(globalReqId, array, &quot;WORD='tizen1'&quot;, getValueSuccessCB, errorcb);
26961  }
26962  catch (err) {
26963      console.log (err.name +&quot;: &quot; + err.message);
26964  }
26965  
26966   
26967 </Code>
26968         </descriptive>
26969         <Type type="void"/>
26970         <ArgumentList>
26971           <Argument name="reqId">
26972             <descriptive>
26973                 <description><p>
26974  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.
26975                 </p></description>
26976             </descriptive>
26977             <Type type="unsigned long"/>
26978           </Argument>
26979           <Argument name="columns">
26980             <descriptive>
26981                 <description><p>
26982  The columns to select.
26983                 </p></description>
26984             </descriptive>
26985             <Type type="array">
26986               <Type type="DOMString"/>
26987             </Type>
26988           </Argument>
26989           <Argument name="where">
26990             <descriptive>
26991                 <description><p>
26992  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>.
26993                 </p></description>
26994             </descriptive>
26995             <Type type="DOMString"/>
26996           </Argument>
26997           <Argument name="successCallback">
26998             <descriptive>
26999                 <description><p>
27000  The method to invoke when the asynchronous call completes successfully.
27001                 </p></description>
27002             </descriptive>
27003             <Type name="DataControlSelectSuccessCallback"/>
27004           </Argument>
27005           <Argument optional="optional" name="errorCallback">
27006             <descriptive>
27007                 <description><p>
27008  The method to invoke when an error occurs.
27009                 </p></description>
27010             </descriptive>
27011             <Type name="DataControlErrorCallback" nullable="nullable"/>
27012           </Argument>
27013           <Argument optional="optional" name="page">
27014             <descriptive>
27015                 <description><p>
27016  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.
27017                 </p></description>
27018             </descriptive>
27019             <Type type="unsigned long" nullable="nullable"/>
27020           </Argument>
27021           <Argument optional="optional" name="maxNumberPerPage">
27022             <descriptive>
27023                 <description><p>
27024  The maximum number of rows on a page.
27025                 </p></description>
27026             </descriptive>
27027             <Type type="unsigned long" nullable="nullable"/>
27028           </Argument>
27029         </ArgumentList>
27030         <Raises>
27031           <RaiseException name="WebAPIException">
27032             <descriptive>
27033                 <description><p>
27034  with error type TypeMismatchError, if parameter type is not compatible with the expected type for that parameter.
27035                 </p></description>
27036                 <description><p>
27037  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.
27038                 </p></description>
27039                 <description><p>
27040  with error type IOError, if a DB operation has failed.
27041                 </p></description>
27042                 <description><p>
27043  with error type SecurityError, if the application does not have the privilege to call this method.
27044                 </p></description>
27045                 <description><p>
27046  with error type UnknownError, if any other error occurs.
27047                 </p></description>
27048             </descriptive>
27049           </RaiseException>
27050         </Raises>
27051       </Operation>
27052     </Interface>
27053     <Interface name="MappedDataControlConsumer" id="::DataControl::MappedDataControlConsumer">
27054       <webidl>    [NoInterfaceObject] interface MappedDataControlConsumer : <ref>DataControlConsumerObject</ref> {
27055         void addValue(unsigned long reqId, DOMString key, DOMString value, 
27056                      optional <ref>DataControlSuccessCallback</ref>? successCallback, 
27057                      optional <ref>DataControlErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
27058
27059          void removeValue(unsigned long reqId, DOMString key, DOMString value, 
27060                           <ref>DataControlSuccessCallback</ref> successCallback, 
27061                           optional <ref>DataControlErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
27062
27063          void getValue(unsigned long reqId, DOMString key, 
27064                        <ref>DataControlGetValueSuccessCallback</ref> successCallback, 
27065                        optional <ref>DataControlErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
27066
27067          void updateValue(unsigned long reqId, DOMString key, DOMString oldValue, DOMString newValue, 
27068                           <ref>DataControlSuccessCallback</ref> successCallback, 
27069                           optional <ref>DataControlErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
27070     };</webidl>
27071       <descriptive>
27072           <brief>
27073  This interface defines MAP data type operators.
27074           </brief>
27075           <version>
27076  2.1
27077           </version>
27078       </descriptive>
27079       <ExtendedAttributeList>
27080         <ExtendedAttribute name="NoInterfaceObject">
27081           <webidl>NoInterfaceObject</webidl>
27082         </ExtendedAttribute>
27083       </ExtendedAttributeList>
27084       <InterfaceInheritance>
27085         <Name name="DataControlConsumerObject"/>
27086       </InterfaceInheritance>
27087       <Operation name="addValue" id="::DataControl::MappedDataControlConsumer::addValue">
27088         <webidl>        void addValue(unsigned long reqId, DOMString key, DOMString value, 
27089                      optional <ref>DataControlSuccessCallback</ref>? successCallback, 
27090                      optional <ref>DataControlErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
27091         <descriptive>
27092             <brief>
27093  Adds the value associated with the specified key to a key-values map owned by MAP-type data control provider. 
27094             </brief>
27095             <version>
27096  2.1
27097             </version>
27098             <privilegelevel>
27099  partner
27100             </privilegelevel>
27101             <privilege>
27102  http://tizen.org/privilege/datacontrol.consumer
27103             </privilege>
27104             <Code>         
27105  function successcb(id)
27106  {
27107      console.log(&quot;ok : reqid &quot; + id);
27108  }
27109  
27110  function errorcb(id, error)
27111  {
27112      console.log(&quot;error id : &quot; + id + &quot;, error msg : &quot; + error.message);
27113  }
27114  
27115  try {
27116      // Defines globalReqId before
27117      // Increases globalReqId for uniqueness
27118      globalReqId++;
27119      globalMappedConsumer.addValue(globalReqId, &quot;tizen&quot;, &quot;samsung&quot;, successcb, errorcb);
27120  } catch (err) {
27121      console.log (err.name +&quot;: &quot; + err.message);
27122  }
27123  </Code>
27124         </descriptive>
27125         <Type type="void"/>
27126         <ArgumentList>
27127           <Argument name="reqId">
27128             <descriptive>
27129                 <description><p>
27130  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.
27131                 </p></description>
27132             </descriptive>
27133             <Type type="unsigned long"/>
27134           </Argument>
27135           <Argument name="key">
27136             <descriptive>
27137                 <description><p>
27138  The key to search a mapped data.
27139                 </p></description>
27140             </descriptive>
27141             <Type type="DOMString"/>
27142           </Argument>
27143           <Argument name="value">
27144             <descriptive>
27145                 <description><p>
27146  The value to add into values array mapped by the key.
27147                 </p></description>
27148             </descriptive>
27149             <Type type="DOMString"/>
27150           </Argument>
27151           <Argument optional="optional" name="successCallback">
27152             <descriptive>
27153                 <description><p>
27154  The method to invoke when the asynchronous call completes successfully.
27155                 </p></description>
27156             </descriptive>
27157             <Type name="DataControlSuccessCallback" nullable="nullable"/>
27158           </Argument>
27159           <Argument optional="optional" name="errorCallback">
27160             <descriptive>
27161                 <description><p>
27162  The method to invoke when an error occurs.
27163                 </p></description>
27164             </descriptive>
27165             <Type name="DataControlErrorCallback" nullable="nullable"/>
27166           </Argument>
27167         </ArgumentList>
27168         <Raises>
27169           <RaiseException name="WebAPIException">
27170             <descriptive>
27171                 <description><p>
27172  with error type TypeMismatchError, if parameter type is not compatible with the expected type for that parameter.
27173                 </p></description>
27174                 <description><p>
27175  with error type InvalidValuesError, if the passed parameter is not available on data provider side or platform.
27176                 </p></description>
27177                 <description><p>
27178  with error type IOError, if a DB operation has failed.
27179                 </p></description>
27180                 <description><p>
27181  with error type SecurityError, if the application does not have the privilege to call this method.
27182                 </p></description>
27183                 <description><p>
27184  with error type UnknownError, if any other error occurs.
27185                 </p></description>
27186             </descriptive>
27187           </RaiseException>
27188         </Raises>
27189       </Operation>
27190       <Operation name="removeValue" id="::DataControl::MappedDataControlConsumer::removeValue">
27191         <webidl>         void removeValue(unsigned long reqId, DOMString key, DOMString value, 
27192                           <ref>DataControlSuccessCallback</ref> successCallback, 
27193                           optional <ref>DataControlErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
27194         <descriptive>
27195             <brief>
27196  Removes the value associated with the specified key from a key-values map owned by MAP-type data control provider.
27197             </brief>
27198             <version>
27199  2.1
27200             </version>
27201             <privilegelevel>
27202  partner
27203             </privilegelevel>
27204             <privilege>
27205  http://tizen.org/privilege/datacontrol.consumer
27206             </privilege>
27207             <Code> function successcb(id)
27208  {
27209      console.log(&quot;ok : reqid &quot; + id);
27210  }
27211  
27212  function errorcb(id, error)
27213  {
27214      console.log(&quot;error id : &quot; + id + &quot;, error msg : &quot; + error.message);
27215  }
27216  
27217  
27218  try {
27219      // Defines globalReqId before
27220      // Increases globalReqId for uniqueness
27221      globalReqId++;
27222      globalMappedConsumer.removeValue(globalReqId, &quot;tizen&quot;, &quot;intel&quot;, successcb, errorcb);
27223  } catch (err) {
27224      console.log (err.name +&quot;: &quot; + err.message);
27225  }
27226  </Code>
27227         </descriptive>
27228         <Type type="void"/>
27229         <ArgumentList>
27230           <Argument name="reqId">
27231             <descriptive>
27232                 <description><p>
27233  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.
27234                 </p></description>
27235             </descriptive>
27236             <Type type="unsigned long"/>
27237           </Argument>
27238           <Argument name="key">
27239             <descriptive>
27240                 <description><p>
27241  The key to search a mapped data.
27242                 </p></description>
27243             </descriptive>
27244             <Type type="DOMString"/>
27245           </Argument>
27246           <Argument name="value">
27247             <descriptive>
27248                 <description><p>
27249  The value to remove from a values array mapped by the key.
27250                 </p></description>
27251             </descriptive>
27252             <Type type="DOMString"/>
27253           </Argument>
27254           <Argument name="successCallback">
27255             <descriptive>
27256                 <description><p>
27257  The method to invoke when the asynchronous call completes successfully.
27258                 </p></description>
27259             </descriptive>
27260             <Type name="DataControlSuccessCallback"/>
27261           </Argument>
27262           <Argument optional="optional" name="errorCallback">
27263             <descriptive>
27264                 <description><p>
27265  The method to invoke when an error occurs.
27266                 </p></description>
27267             </descriptive>
27268             <Type name="DataControlErrorCallback" nullable="nullable"/>
27269           </Argument>
27270         </ArgumentList>
27271         <Raises>
27272           <RaiseException name="WebAPIException">
27273             <descriptive>
27274                 <description><p>
27275  with error type TypeMismatchError, if parameter type is not compatible with the expected type for that parameter.
27276                 </p></description>
27277                 <description><p>
27278  with error type InvalidValuesError, if the passed parameter is not available in data provider side or platform. 
27279                 </p></description>
27280                 <description><p>
27281  with error type IOError, if a DB operation has failed.  
27282                 </p></description>
27283                 <description><p>
27284  with error type NotFoundError, if the key cannot be found.
27285                 </p></description>
27286                 <description><p>
27287  with error type SecurityError, if the application does not have the privilege to call this method.
27288                 </p></description>
27289                 <description><p>
27290  with error type UnknownError, if any other error occurs. 
27291                 </p></description>
27292             </descriptive>
27293           </RaiseException>
27294         </Raises>
27295       </Operation>
27296       <Operation name="getValue" id="::DataControl::MappedDataControlConsumer::getValue">
27297         <webidl>         void getValue(unsigned long reqId, DOMString key, 
27298                        <ref>DataControlGetValueSuccessCallback</ref> successCallback, 
27299                        optional <ref>DataControlErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
27300         <descriptive>
27301             <brief>
27302  Gets value associated with the specified key, from a key-values map owned by MAP-type data control provider. 
27303             </brief>
27304             <version>
27305  2.1
27306             </version>
27307             <privilegelevel>
27308  partner
27309             </privilegelevel>
27310             <privilege>
27311  http://tizen.org/privilege/datacontrol.consumer
27312             </privilege>
27313             <Code> function getValueSuccessCB(result, id)
27314  {
27315      console.log(result.length + &quot;:&quot; + result[0]);
27316  }
27317  
27318  function errorcb(id, error)
27319  {
27320      console.log(&quot;error id : &quot; + id + &quot;, error msg : &quot; + error.message);
27321  }
27322  
27323  try {
27324      // Defines globalReqId before
27325      // Increases globalReqId for uniqueness
27326      globalReqId++;
27327      globalMappedConsumer.getValue(globalReqId, &quot;tizen&quot;, getValueSuccessCB, errorcb);
27328  } catch (err) {
27329      console.log (err.name +&quot;: &quot; + err.message);
27330  }
27331  </Code>
27332         </descriptive>
27333         <Type type="void"/>
27334         <ArgumentList>
27335           <Argument name="reqId">
27336             <descriptive>
27337                 <description><p>
27338  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.
27339                 </p></description>
27340             </descriptive>
27341             <Type type="unsigned long"/>
27342           </Argument>
27343           <Argument name="key">
27344             <descriptive>
27345                 <description><p>
27346  The key to search a mapped data.
27347                 </p></description>
27348             </descriptive>
27349             <Type type="DOMString"/>
27350           </Argument>
27351           <Argument name="successCallback">
27352             <descriptive>
27353                 <description><p>
27354  The method to invoke when the asynchronous call completes successfully.
27355                 </p></description>
27356             </descriptive>
27357             <Type name="DataControlGetValueSuccessCallback"/>
27358           </Argument>
27359           <Argument optional="optional" name="errorCallback">
27360             <descriptive>
27361                 <description><p>
27362  The method to invoke when an error occurs.
27363                 </p></description>
27364             </descriptive>
27365             <Type name="DataControlErrorCallback" nullable="nullable"/>
27366           </Argument>
27367         </ArgumentList>
27368         <Raises>
27369           <RaiseException name="WebAPIException">
27370             <descriptive>
27371                 <description><p>
27372  with error type TypeMismatchError, if parameter type is not compatible with the expected type for that parameter.
27373                 </p></description>
27374                 <description><p>
27375  with error type InvalidValuesError, if the passed parameter is not available on data provider side or platform.
27376                 </p></description>
27377                 <description><p>
27378  with error type IOError, if a DB operation has failed.
27379                 </p></description>
27380                 <description><p>
27381  with error type NotFoundError, if the key cannot be found.
27382                 </p></description>
27383                 <description><p>
27384  with error type SecurityError, if the application does not have the privilege to call this method.
27385                 </p></description>
27386                 <description><p>
27387  with error type UnknownError, if any other error occurs.
27388                 </p></description>
27389             </descriptive>
27390           </RaiseException>
27391         </Raises>
27392       </Operation>
27393       <Operation name="updateValue" id="::DataControl::MappedDataControlConsumer::updateValue">
27394         <webidl>         void updateValue(unsigned long reqId, DOMString key, DOMString oldValue, DOMString newValue, 
27395                           <ref>DataControlSuccessCallback</ref> successCallback, 
27396                           optional <ref>DataControlErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
27397         <descriptive>
27398             <brief>
27399  Sets the value associated with the specified key with a new value.            
27400             </brief>
27401             <version>
27402  2.1
27403             </version>
27404             <privilegelevel>
27405  partner
27406             </privilegelevel>
27407             <privilege>
27408  http://tizen.org/privilege/datacontrol.consumer
27409             </privilege>
27410             <Code> 
27411  function successcb(id)
27412  {
27413      console.log(&quot;ok : reqid &quot; + id);
27414  }
27415  
27416  function errorcb(id, error)
27417  {
27418      console.log(&quot;error id : &quot; + id + &quot;, error msg : &quot; + error.message);
27419  }
27420  
27421  try {
27422      // Defines globalReqId before
27423      // Increases globalReqId for uniqueness
27424      globalReqId++;
27425      globalMappedConsumer.updateValue(globalReqId, &quot;tizen&quot;, &quot;samsung&quot;, &quot;intel&quot;, successcb, errorcb);
27426  } catch (err) {
27427      console.log (err.name +&quot;: &quot; + err.message);
27428  }
27429  </Code>
27430         </descriptive>
27431         <Type type="void"/>
27432         <ArgumentList>
27433           <Argument name="reqId">
27434             <descriptive>
27435                 <description><p>
27436  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.
27437                 </p></description>
27438             </descriptive>
27439             <Type type="unsigned long"/>
27440           </Argument>
27441           <Argument name="key">
27442             <descriptive>
27443                 <description><p>
27444  The key to search a mapped data.
27445                 </p></description>
27446             </descriptive>
27447             <Type type="DOMString"/>
27448           </Argument>
27449           <Argument name="oldValue">
27450             <descriptive>
27451                 <description><p>
27452  The value to update in values array mapped by the key.
27453                 </p></description>
27454             </descriptive>
27455             <Type type="DOMString"/>
27456           </Argument>
27457           <Argument name="newValue">
27458             <descriptive>
27459                 <description><p>
27460  The new value to replace in values array mapped by the key.
27461                 </p></description>
27462             </descriptive>
27463             <Type type="DOMString"/>
27464           </Argument>
27465           <Argument name="successCallback">
27466             <descriptive>
27467                 <description><p>
27468  The method to invoke when the asynchronous call completes successfully.
27469                 </p></description>
27470             </descriptive>
27471             <Type name="DataControlSuccessCallback"/>
27472           </Argument>
27473           <Argument optional="optional" name="errorCallback">
27474             <descriptive>
27475                 <description><p>
27476  The method to invoke when an error occurs.
27477                 </p></description>
27478             </descriptive>
27479             <Type name="DataControlErrorCallback" nullable="nullable"/>
27480           </Argument>
27481         </ArgumentList>
27482         <Raises>
27483           <RaiseException name="WebAPIException">
27484             <descriptive>
27485                 <description><p>
27486  with error type TypeMismatchError, if parameter type is not compatible with the expected type for that parameter.
27487                 </p></description>
27488                 <description><p>
27489  with error type InvalidValuesError, if the passed parameter is not available on data provider side or platform.
27490                 </p></description>
27491                 <description><p>
27492  with error type IOError, if a DB operation has failed.
27493                 </p></description>
27494                 <description><p>
27495  with error type NotFoundError, if the key cannot be found.
27496                 </p></description>
27497                 <description><p>
27498  with error type SecurityError, if the application does not have the privilege to call this method.
27499                 </p></description>
27500                 <description><p>
27501  with error type UnknownError, if any other error occurs.
27502                 </p></description>
27503             </descriptive>
27504           </RaiseException>
27505         </Raises>
27506       </Operation>
27507     </Interface>
27508     <Interface name="DataControlSuccessCallback" id="::DataControl::DataControlSuccessCallback">
27509       <webidl>    [Callback=FunctionOnly, NoInterfaceObject] interface DataControlSuccessCallback {
27510         void onsuccess(unsigned long reqId);
27511     };</webidl>
27512       <descriptive>
27513           <brief>
27514  This interface provides a SuccessCallback for DataControlConsumerObject.
27515           </brief>
27516           <version>
27517  2.1
27518           </version>
27519       </descriptive>
27520       <ExtendedAttributeList>
27521         <ExtendedAttribute name="Callback" value="FunctionOnly">
27522           <webidl>Callback</webidl>
27523         </ExtendedAttribute>
27524         <ExtendedAttribute name="NoInterfaceObject">
27525           <webidl> NoInterfaceObject</webidl>
27526         </ExtendedAttribute>
27527       </ExtendedAttributeList>
27528       <Operation name="onsuccess" id="::DataControl::DataControlSuccessCallback::onsuccess">
27529         <webidl>        void onsuccess(unsigned long reqId);</webidl>
27530         <Type type="void"/>
27531         <ArgumentList>
27532           <Argument name="reqId">
27533             <Type type="unsigned long"/>
27534           </Argument>
27535         </ArgumentList>
27536       </Operation>
27537     </Interface>
27538     <Interface name="DataControlErrorCallback" id="::DataControl::DataControlErrorCallback">
27539       <webidl>    [Callback=FunctionOnly, NoInterfaceObject] interface DataControlErrorCallback {
27540         void onerror(unsigned long reqId, <ref>WebAPIError</ref> error);
27541     };</webidl>
27542       <descriptive>
27543           <brief>
27544  This interface provides a ErrorCallback for DataControlConsumerObject.
27545           </brief>
27546           <version>
27547  2.1
27548           </version>
27549       </descriptive>
27550       <ExtendedAttributeList>
27551         <ExtendedAttribute name="Callback" value="FunctionOnly">
27552           <webidl>Callback</webidl>
27553         </ExtendedAttribute>
27554         <ExtendedAttribute name="NoInterfaceObject">
27555           <webidl> NoInterfaceObject</webidl>
27556         </ExtendedAttribute>
27557       </ExtendedAttributeList>
27558       <Operation name="onerror" id="::DataControl::DataControlErrorCallback::onerror">
27559         <webidl>        void onerror(unsigned long reqId, <ref>WebAPIError</ref> error);</webidl>
27560         <Type type="void"/>
27561         <ArgumentList>
27562           <Argument name="reqId">
27563             <Type type="unsigned long"/>
27564           </Argument>
27565           <Argument name="error">
27566             <Type name="WebAPIError"/>
27567           </Argument>
27568         </ArgumentList>
27569       </Operation>
27570     </Interface>
27571     <Interface name="DataControlInsertSuccessCallback" id="::DataControl::DataControlInsertSuccessCallback">
27572       <webidl>    [Callback=FunctionOnly, NoInterfaceObject] interface DataControlInsertSuccessCallback {
27573         void onsuccess(unsigned long reqId, long insertRowId);
27574     };</webidl>
27575       <descriptive>
27576           <brief>
27577  This interface provides a SuccessCallback for SQLDataControlConsumer.insert().
27578           </brief>
27579           <version>
27580  2.1
27581           </version>
27582       </descriptive>
27583       <ExtendedAttributeList>
27584         <ExtendedAttribute name="Callback" value="FunctionOnly">
27585           <webidl>Callback</webidl>
27586         </ExtendedAttribute>
27587         <ExtendedAttribute name="NoInterfaceObject">
27588           <webidl> NoInterfaceObject</webidl>
27589         </ExtendedAttribute>
27590       </ExtendedAttributeList>
27591       <Operation name="onsuccess" id="::DataControl::DataControlInsertSuccessCallback::onsuccess">
27592         <webidl>        void onsuccess(unsigned long reqId, long insertRowId);</webidl>
27593         <descriptive>
27594             <brief>
27595  Called on success.
27596             </brief>
27597             <version>
27598  2.1
27599             </version>
27600         </descriptive>
27601         <Type type="void"/>
27602         <ArgumentList>
27603           <Argument name="reqId">
27604             <descriptive>
27605                 <description><p>
27606  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.
27607                 </p></description>
27608             </descriptive>
27609             <Type type="unsigned long"/>
27610           </Argument>
27611           <Argument name="insertRowId">
27612             <descriptive>
27613                 <description><p>
27614  The inserted row ID set by the data control provider if the specified providerResult is <var>true</var>, else <var>-1</var>.
27615                 </p></description>
27616             </descriptive>
27617             <Type type="long"/>
27618           </Argument>
27619         </ArgumentList>
27620       </Operation>
27621     </Interface>
27622     <Interface name="DataControlSelectSuccessCallback" id="::DataControl::DataControlSelectSuccessCallback">
27623       <webidl>    [Callback=FunctionOnly, NoInterfaceObject] interface DataControlSelectSuccessCallback {
27624         void onsuccess(<ref>RowData</ref>[] rows, unsigned long reqId);
27625     };</webidl>
27626       <descriptive>
27627           <brief>
27628  This interface provides a SuccessCallback for SQLDataControlConsumer.select().
27629           </brief>
27630           <version>
27631  2.1
27632           </version>
27633       </descriptive>
27634       <ExtendedAttributeList>
27635         <ExtendedAttribute name="Callback" value="FunctionOnly">
27636           <webidl>Callback</webidl>
27637         </ExtendedAttribute>
27638         <ExtendedAttribute name="NoInterfaceObject">
27639           <webidl> NoInterfaceObject</webidl>
27640         </ExtendedAttribute>
27641       </ExtendedAttributeList>
27642       <Operation name="onsuccess" id="::DataControl::DataControlSelectSuccessCallback::onsuccess">
27643         <webidl>        void onsuccess(<ref>RowData</ref>[] rows, unsigned long reqId);</webidl>
27644         <descriptive>
27645             <brief>
27646  Called on success.
27647             </brief>
27648             <version>
27649  2.1
27650             </version>
27651         </descriptive>
27652         <Type type="void"/>
27653         <ArgumentList>
27654           <Argument name="rows">
27655             <descriptive>
27656                 <description><p>
27657  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>.
27658                 </p></description>
27659             </descriptive>
27660             <Type type="array">
27661               <Type name="RowData"/>
27662             </Type>
27663           </Argument>
27664           <Argument name="reqId">
27665             <descriptive>
27666                 <description><p>
27667  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.
27668                 </p></description>
27669             </descriptive>
27670             <Type type="unsigned long"/>
27671           </Argument>
27672         </ArgumentList>
27673       </Operation>
27674     </Interface>
27675     <Interface name="DataControlGetValueSuccessCallback" id="::DataControl::DataControlGetValueSuccessCallback">
27676       <webidl>    [Callback=FunctionOnly, NoInterfaceObject] interface DataControlGetValueSuccessCallback {
27677         void onsuccess(DOMString[] values, unsigned long reqid);
27678     };</webidl>
27679       <descriptive>
27680           <brief>
27681  This interface provides a SuccessCallback for MapDataControlConsumer.getValue().
27682           </brief>
27683           <version>
27684  2.1
27685           </version>
27686       </descriptive>
27687       <ExtendedAttributeList>
27688         <ExtendedAttribute name="Callback" value="FunctionOnly">
27689           <webidl>Callback</webidl>
27690         </ExtendedAttribute>
27691         <ExtendedAttribute name="NoInterfaceObject">
27692           <webidl> NoInterfaceObject</webidl>
27693         </ExtendedAttribute>
27694       </ExtendedAttributeList>
27695       <Operation name="onsuccess" id="::DataControl::DataControlGetValueSuccessCallback::onsuccess">
27696         <webidl>        void onsuccess(DOMString[] values, unsigned long reqid);</webidl>
27697         <Type type="void"/>
27698         <ArgumentList>
27699           <Argument name="values">
27700             <Type type="array">
27701               <Type type="DOMString"/>
27702             </Type>
27703           </Argument>
27704           <Argument name="reqid">
27705             <Type type="unsigned long"/>
27706           </Argument>
27707         </ArgumentList>
27708       </Operation>
27709     </Interface>
27710     <Dictionary name="RowData" id="::DataControl::RowData">
27711       <webidl>    dictionary RowData {
27712         DOMString[] columns;
27713         DOMString[] values;
27714     };</webidl>
27715       <descriptive>
27716           <brief>
27717  The dictionary represents RowData holding 1 row of SQL selection results from another application.
27718           </brief>
27719           <version>
27720  2.1
27721           </version>
27722       </descriptive>
27723       <DictionaryMember name="columns" id="::DataControl::RowData::columns">
27724         <webidl>        DOMString[] columns;</webidl>
27725         <descriptive>
27726             <brief>
27727  An attribute to hold column names to select, update, and insert.
27728             </brief>
27729             <version>
27730  2.1
27731             </version>
27732         </descriptive>
27733         <Type type="array">
27734           <Type type="DOMString"/>
27735         </Type>
27736       </DictionaryMember>
27737       <DictionaryMember name="values" id="::DataControl::RowData::values">
27738         <webidl>        DOMString[] values;</webidl>
27739         <descriptive>
27740             <brief>
27741  An attribute to hold values of columns to select, update, and insert.
27742             </brief>
27743             <version>
27744  2.1
27745             </version>
27746         </descriptive>
27747         <Type type="array">
27748           <Type type="DOMString"/>
27749         </Type>
27750       </DictionaryMember>
27751     </Dictionary>
27752   </Module>
27753   <Module name="DataSynchronization" id="::DataSynchronization">
27754     <webidl>module DataSynchronization {
27755
27756   typedef DOMString SyncProfileId;
27757
27758   enum SyncMode { &quot;MANUAL&quot;, &quot;PERIODIC&quot;, &quot;PUSH&quot; };
27759
27760   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; };
27761
27762   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; };
27763
27764   enum SyncServiceType { &quot;CONTACT&quot;, &quot;EVENT&quot; };
27765
27766   enum SyncStatus { &quot;SUCCESS&quot;, &quot;FAIL&quot;, &quot;STOP&quot;, &quot;NONE&quot; };
27767
27768   [NoInterfaceObject] interface DataSynchronizationManagerObject {
27769     readonly attribute <ref>DataSynchronizationManager</ref> datasync;
27770   };
27771
27772   <ref>Tizen</ref> implements <ref>DataSynchronizationManagerObject</ref>;
27773
27774   [Constructor(DOMString url, DOMString id, DOMString password, <ref>SyncMode</ref> mode),
27775   Constructor(DOMString url, DOMString id, DOMString password, <ref>SyncMode</ref> mode, <ref>SyncType</ref> type),
27776   Constructor(DOMString url, DOMString id, DOMString password, <ref>SyncMode</ref> mode, <ref>SyncInterval</ref> interval)]
27777   interface SyncInfo {
27778     attribute DOMString url;
27779
27780     attribute DOMString id;
27781
27782     attribute DOMString password;
27783
27784     attribute <ref>SyncMode</ref> mode;
27785
27786     attribute <ref>SyncType</ref>? type;
27787
27788     attribute <ref>SyncInterval</ref>? interval;
27789   };
27790
27791   [Constructor(boolean enable, <ref>SyncServiceType</ref> serviceType, DOMString serverDatabaseUri, optional DOMString? id, optional DOMString? password)]
27792   interface SyncServiceInfo {
27793     attribute boolean enable;
27794
27795     attribute <ref>SyncServiceType</ref> serviceType;
27796
27797     attribute DOMString serverDatabaseUri;
27798
27799     attribute DOMString? id;
27800
27801     attribute DOMString? password;
27802   };
27803
27804   [Constructor(DOMString profileName, <ref>SyncInfo</ref> syncInfo, optional <ref>SyncServiceInfo</ref>[]? serviceInfo)]
27805   interface SyncProfileInfo {
27806     readonly attribute <ref>SyncProfileId</ref> profileId;
27807
27808     attribute DOMString profileName;
27809
27810     attribute <ref>SyncInfo</ref> syncInfo;
27811
27812     attribute <ref>SyncServiceInfo</ref>[]? serviceInfo;
27813   };
27814
27815   [NoInterfaceObject] interface SyncStatistics {
27816     readonly attribute <ref>SyncStatus</ref> syncStatus;
27817
27818     readonly attribute <ref>SyncServiceType</ref> serviceType;
27819
27820     readonly attribute Date lastSyncTime;
27821
27822     readonly attribute unsigned long serverToClientTotal;
27823
27824     readonly attribute unsigned long serverToClientAdded;
27825
27826     readonly attribute unsigned long serverToClientUpdated;
27827
27828     readonly attribute unsigned long serverToClientRemoved;
27829
27830     readonly attribute unsigned long clientToServerTotal;
27831
27832     readonly attribute unsigned long clientToServerAdded;
27833
27834     readonly attribute unsigned long clientToServerUpdated;
27835
27836     readonly attribute unsigned long clientToServerRemoved;
27837   };
27838
27839   [NoInterfaceObject] interface DataSynchronizationManager {
27840     void add(<ref>SyncProfileInfo</ref> profile) raises(<ref>WebAPIException</ref>);
27841
27842     void update(<ref>SyncProfileInfo</ref> profile) raises(<ref>WebAPIException</ref>);
27843
27844     void remove(<ref>SyncProfileId</ref> profileId) raises(<ref>WebAPIException</ref>);
27845
27846     long getMaxProfilesNum() raises(<ref>WebAPIException</ref>);
27847
27848     unsigned long getProfilesNum() raises(<ref>WebAPIException</ref>);
27849
27850     <ref>SyncProfileInfo</ref> get(<ref>SyncProfileId</ref> profileId) raises(<ref>WebAPIException</ref>);
27851
27852     <ref>SyncProfileInfo</ref>[] getAll() raises(<ref>WebAPIException</ref>);
27853
27854     void startSync(<ref>SyncProfileId</ref> profileId, optional <ref>SyncProgressCallback</ref>? progressCallback) raises(<ref>WebAPIException</ref>);
27855
27856     void stopSync(<ref>SyncProfileId</ref> profileId) raises(<ref>WebAPIException</ref>);
27857
27858     <ref>SyncStatistics</ref>[] getLastSyncStatistics(<ref>SyncProfileId</ref> profileId) raises(<ref>WebAPIException</ref>);
27859   };
27860
27861   [Callback, NoInterfaceObject] interface SyncProgressCallback {
27862     void onprogress(<ref>SyncProfileId</ref> profileId, <ref>SyncServiceType</ref> serviceType, boolean isFromServer, unsigned long totalPerService, unsigned long syncedPerService);
27863
27864     void oncompleted(<ref>SyncProfileId</ref> profileId);
27865
27866     void onstopped(<ref>SyncProfileId</ref> profileId);
27867
27868     void onfailed(<ref>SyncProfileId</ref> profileId, <ref>WebAPIError</ref> error);
27869   };
27870 };</webidl>
27871     <descriptive>
27872         <brief>
27873  This API provides methods to synchronize contact and event data to the server using the OMA DS 1.2 protocol.
27874 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>.
27875         </brief>
27876         <version>
27877  2.1
27878         </version>
27879     </descriptive>
27880     <Typedef name="SyncProfileId" id="::DataSynchronization::SyncProfileId">
27881       <webidl>  typedef DOMString SyncProfileId;</webidl>
27882       <descriptive>
27883           <brief>
27884  An attribute to uniquely identify a sync profile.
27885           </brief>
27886           <version>
27887  2.1
27888           </version>
27889       </descriptive>
27890       <Type type="DOMString"/>
27891     </Typedef>
27892     <Enum name="SyncMode" id="::DataSynchronization::SyncMode">
27893       <webidl>  enum SyncMode { &quot;MANUAL&quot;, &quot;PERIODIC&quot;, &quot;PUSH&quot; };</webidl>
27894       <descriptive>
27895           <brief>
27896  An enumerator that indicates the supported synchronization modes.
27897           </brief>
27898          <description>
27899           <p>
27900 The following values are supported:
27901           </p>
27902           <ul>
27903             <li>
27904 MANUAL - Indicates that the synchronization starts by manual trigger. The sync type should be specified. The default value is <em>TWO_WAY</em>.            </li>
27905             <li>
27906 PERIODIC - Indicates that the synchronization starts automatically by a preset period. The sync interval should be provided.            </li>
27907             <li>
27908 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>
27909           </ul>
27910          </description>
27911           <version>
27912  2.1
27913           </version>
27914       </descriptive>
27915       <EnumValue stringvalue="MANUAL">
27916         <webidl> &quot;MANUAL</webidl>
27917       </EnumValue>
27918       <EnumValue stringvalue="PERIODIC">
27919         <webidl> &quot;PERIODIC</webidl>
27920       </EnumValue>
27921       <EnumValue stringvalue="PUSH">
27922         <webidl> &quot;PUSH</webidl>
27923       </EnumValue>
27924     </Enum>
27925     <Enum name="SyncType" id="::DataSynchronization::SyncType">
27926       <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>
27927       <descriptive>
27928           <brief>
27929  An enumerator that indicates the supported synchronization types.
27930           </brief>
27931          <description>
27932           <p>
27933 The following values are supported:
27934           </p>
27935           <ul>
27936             <li>
27937 TWO_WAY - Indicates a normal sync type in which the client and the server exchange information about modified data in these devices.            </li>
27938             <li>
27939 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>
27940             <li>
27941 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>
27942             <li>
27943 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>
27944             <li>
27945 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>
27946             <li>
27947 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>
27948           </ul>
27949          </description>
27950           <version>
27951  2.1
27952           </version>
27953       </descriptive>
27954       <EnumValue stringvalue="TWO_WAY">
27955         <webidl> &quot;TWO_WAY</webidl>
27956       </EnumValue>
27957       <EnumValue stringvalue="SLOW">
27958         <webidl> &quot;SLOW</webidl>
27959       </EnumValue>
27960       <EnumValue stringvalue="ONE_WAY_FROM_CLIENT">
27961         <webidl> &quot;ONE_WAY_FROM_CLIENT</webidl>
27962       </EnumValue>
27963       <EnumValue stringvalue="REFRESH_FROM_CLIENT">
27964         <webidl> &quot;REFRESH_FROM_CLIENT</webidl>
27965       </EnumValue>
27966       <EnumValue stringvalue="ONE_WAY_FROM_SERVER">
27967         <webidl> &quot;ONE_WAY_FROM_SERVER</webidl>
27968       </EnumValue>
27969       <EnumValue stringvalue="REFRESH_FROM_SERVER">
27970         <webidl> &quot;REFRESH_FROM_SERVER</webidl>
27971       </EnumValue>
27972     </Enum>
27973     <Enum name="SyncInterval" id="::DataSynchronization::SyncInterval">
27974       <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>
27975       <descriptive>
27976           <brief>
27977  An enumerator that indicates the supported synchronization intervals.
27978           </brief>
27979          <description>
27980           <p>
27981 The following values are supported:
27982           </p>
27983           <ul>
27984             <li>
27985 5_MINUTES - Indicates a time period of 5 minutes.            </li>
27986             <li>
27987 15_MINUTES - Indicates a time period of 15 minutes.            </li>
27988             <li>
27989 1_HOUR - Indicates a time period of 1 hour.            </li>
27990             <li>
27991 4_HOURS - Indicates a time period of 4 hours.            </li>
27992             <li>
27993 12_HOURS - Indicates a time period of 12 hours.            </li>
27994             <li>
27995 1_DAY - Indicates a time period of 1 day.            </li>
27996             <li>
27997 1_WEEK - Indicates a time period of 1 week.            </li>
27998             <li>
27999 1_MONTH - Indicates a time period of 1 month.            </li>
28000           </ul>
28001          </description>
28002           <version>
28003  2.1
28004           </version>
28005       </descriptive>
28006       <EnumValue stringvalue="5_MINUTES">
28007         <webidl> &quot;5_MINUTES</webidl>
28008       </EnumValue>
28009       <EnumValue stringvalue="15_MINUTES">
28010         <webidl> &quot;15_MINUTES</webidl>
28011       </EnumValue>
28012       <EnumValue stringvalue="1_HOUR">
28013         <webidl> &quot;1_HOUR</webidl>
28014       </EnumValue>
28015       <EnumValue stringvalue="4_HOURS">
28016         <webidl> &quot;4_HOURS</webidl>
28017       </EnumValue>
28018       <EnumValue stringvalue="12_HOURS">
28019         <webidl> &quot;12_HOURS</webidl>
28020       </EnumValue>
28021       <EnumValue stringvalue="1_DAY">
28022         <webidl> &quot;1_DAY</webidl>
28023       </EnumValue>
28024       <EnumValue stringvalue="1_WEEK">
28025         <webidl> &quot;1_WEEK</webidl>
28026       </EnumValue>
28027       <EnumValue stringvalue="1_MONTH">
28028         <webidl> &quot;1_MONTH</webidl>
28029       </EnumValue>
28030     </Enum>
28031     <Enum name="SyncServiceType" id="::DataSynchronization::SyncServiceType">
28032       <webidl>  enum SyncServiceType { &quot;CONTACT&quot;, &quot;EVENT&quot; };</webidl>
28033       <descriptive>
28034           <brief>
28035  An enumerator that indicates the supported synchronization service type of the device.
28036           </brief>
28037          <description>
28038           <p>
28039 The following values are supported:
28040           </p>
28041           <ul>
28042             <li>
28043 CONTACT - Indicates the device contact records.            </li>
28044             <li>
28045 EVENT - Indicates the device calendar event records.            </li>
28046           </ul>
28047          </description>
28048           <version>
28049  2.1
28050           </version>
28051       </descriptive>
28052       <EnumValue stringvalue="CONTACT">
28053         <webidl> &quot;CONTACT</webidl>
28054       </EnumValue>
28055       <EnumValue stringvalue="EVENT">
28056         <webidl> &quot;EVENT</webidl>
28057       </EnumValue>
28058     </Enum>
28059     <Enum name="SyncStatus" id="::DataSynchronization::SyncStatus">
28060       <webidl>  enum SyncStatus { &quot;SUCCESS&quot;, &quot;FAIL&quot;, &quot;STOP&quot;, &quot;NONE&quot; };</webidl>
28061       <descriptive>
28062           <brief>
28063  An enumerator that indicates the last sync statuses.
28064           </brief>
28065          <description>
28066           <p>
28067 The following values are supported:
28068           </p>
28069           <ul>
28070             <li>
28071 SUCCESS - Indicates the sync is successful.            </li>
28072             <li>
28073 FAIL - Indicates the sync has failed.            </li>
28074             <li>
28075 STOP - Indicates the sync has been stopped by user's action.            </li>
28076             <li>
28077 NONE - Indicates the sync was never performed.            </li>
28078           </ul>
28079          </description>
28080           <version>
28081  2.1
28082           </version>
28083       </descriptive>
28084       <EnumValue stringvalue="SUCCESS">
28085         <webidl> &quot;SUCCESS</webidl>
28086       </EnumValue>
28087       <EnumValue stringvalue="FAIL">
28088         <webidl> &quot;FAIL</webidl>
28089       </EnumValue>
28090       <EnumValue stringvalue="STOP">
28091         <webidl> &quot;STOP</webidl>
28092       </EnumValue>
28093       <EnumValue stringvalue="NONE">
28094         <webidl> &quot;NONE</webidl>
28095       </EnumValue>
28096     </Enum>
28097     <Interface name="DataSynchronizationManagerObject" id="::DataSynchronization::DataSynchronizationManagerObject">
28098       <webidl>  [NoInterfaceObject] interface DataSynchronizationManagerObject {
28099     readonly attribute <ref>DataSynchronizationManager</ref> datasync;
28100   };</webidl>
28101       <descriptive>
28102           <brief>
28103  This interface defines the default data synchronization manager that is instantiated by the <em>Tizen </em>object.
28104 There will be a <em>tizen.datasync</em> object that allows access to the functionality of the DataSynchronization API.
28105           </brief>
28106           <version>
28107  2.1
28108           </version>
28109       </descriptive>
28110       <ExtendedAttributeList>
28111         <ExtendedAttribute name="NoInterfaceObject">
28112           <webidl>NoInterfaceObject</webidl>
28113         </ExtendedAttribute>
28114       </ExtendedAttributeList>
28115       <Attribute readonly="readonly" name="datasync" id="::DataSynchronization::DataSynchronizationManagerObject::datasync">
28116         <webidl>    readonly attribute <ref>DataSynchronizationManager</ref> datasync;</webidl>
28117         <Type name="DataSynchronizationManager"/>
28118       </Attribute>
28119     </Interface>
28120     <Implements name1="Tizen" name2="DataSynchronizationManagerObject">
28121       <webidl>  <ref>Tizen</ref> implements <ref>DataSynchronizationManagerObject</ref>;</webidl>
28122     </Implements>
28123     <Interface name="SyncInfo" id="::DataSynchronization::SyncInfo">
28124       <webidl>  [Constructor(DOMString url, DOMString id, DOMString password, <ref>SyncMode</ref> mode),
28125   Constructor(DOMString url, DOMString id, DOMString password, <ref>SyncMode</ref> mode, <ref>SyncType</ref> type),
28126   Constructor(DOMString url, DOMString id, DOMString password, <ref>SyncMode</ref> mode, <ref>SyncInterval</ref> interval)]
28127   interface SyncInfo {
28128     attribute DOMString url;
28129
28130     attribute DOMString id;
28131
28132     attribute DOMString password;
28133
28134     attribute <ref>SyncMode</ref> mode;
28135
28136     attribute <ref>SyncType</ref>? type;
28137
28138     attribute <ref>SyncInterval</ref>? interval;
28139   };</webidl>
28140       <descriptive>
28141           <brief>
28142  This interface defines the sync information.
28143           </brief>
28144           <version>
28145  2.1
28146           </version>
28147           <remark>
28148  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.
28149           </remark>
28150       </descriptive>
28151       <ExtendedAttributeList>
28152         <ExtendedAttribute name="Constructor">
28153           <webidl>Constructor(DOMString url, DOMString id, DOMString password, <ref>SyncMode</ref> mode)</webidl>
28154           <ArgumentList>
28155             <Argument name="url">
28156               <Type type="DOMString"/>
28157             </Argument>
28158             <Argument name="id">
28159               <Type type="DOMString"/>
28160             </Argument>
28161             <Argument name="password">
28162               <Type type="DOMString"/>
28163             </Argument>
28164             <Argument name="mode">
28165               <Type name="SyncMode"/>
28166             </Argument>
28167           </ArgumentList>
28168         </ExtendedAttribute>
28169         <ExtendedAttribute name="Constructor">
28170           <webidl>  Constructor(DOMString url, DOMString id, DOMString password, <ref>SyncMode</ref> mode, <ref>SyncType</ref> type)</webidl>
28171           <ArgumentList>
28172             <Argument name="url">
28173               <Type type="DOMString"/>
28174             </Argument>
28175             <Argument name="id">
28176               <Type type="DOMString"/>
28177             </Argument>
28178             <Argument name="password">
28179               <Type type="DOMString"/>
28180             </Argument>
28181             <Argument name="mode">
28182               <Type name="SyncMode"/>
28183             </Argument>
28184             <Argument name="type">
28185               <Type name="SyncType"/>
28186             </Argument>
28187           </ArgumentList>
28188         </ExtendedAttribute>
28189         <ExtendedAttribute name="Constructor">
28190           <webidl>  Constructor(DOMString url, DOMString id, DOMString password, <ref>SyncMode</ref> mode, <ref>SyncInterval</ref> interval)</webidl>
28191           <ArgumentList>
28192             <Argument name="url">
28193               <Type type="DOMString"/>
28194             </Argument>
28195             <Argument name="id">
28196               <Type type="DOMString"/>
28197             </Argument>
28198             <Argument name="password">
28199               <Type type="DOMString"/>
28200             </Argument>
28201             <Argument name="mode">
28202               <Type name="SyncMode"/>
28203             </Argument>
28204             <Argument name="interval">
28205               <Type name="SyncInterval"/>
28206             </Argument>
28207           </ArgumentList>
28208         </ExtendedAttribute>
28209       </ExtendedAttributeList>
28210       <Attribute name="url" id="::DataSynchronization::SyncInfo::url">
28211         <webidl>    attribute DOMString url;</webidl>
28212         <descriptive>
28213             <brief>
28214  An attribute to store the URL of the sync server.
28215             </brief>
28216             <version>
28217  2.1
28218             </version>
28219         </descriptive>
28220         <Type type="DOMString"/>
28221       </Attribute>
28222       <Attribute name="id" id="::DataSynchronization::SyncInfo::id">
28223         <webidl>    attribute DOMString id;</webidl>
28224         <descriptive>
28225             <brief>
28226  An attribute to store the login ID for the sync server.
28227             </brief>
28228            <description>
28229             <p>
28230 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.
28231             </p>
28232            </description>
28233             <version>
28234  2.1
28235             </version>
28236         </descriptive>
28237         <Type type="DOMString"/>
28238       </Attribute>
28239       <Attribute name="password" id="::DataSynchronization::SyncInfo::password">
28240         <webidl>    attribute DOMString password;</webidl>
28241         <descriptive>
28242             <brief>
28243  An attribute to store the login password to the sync server.
28244             </brief>
28245            <description>
28246             <p>
28247 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.
28248             </p>
28249            </description>
28250             <version>
28251  2.1
28252             </version>
28253         </descriptive>
28254         <Type type="DOMString"/>
28255       </Attribute>
28256       <Attribute name="mode" id="::DataSynchronization::SyncInfo::mode">
28257         <webidl>    attribute <ref>SyncMode</ref> mode;</webidl>
28258         <descriptive>
28259             <brief>
28260  An attribute to store the sync mode.
28261             </brief>
28262             <version>
28263  2.1
28264             </version>
28265         </descriptive>
28266         <Type name="SyncMode"/>
28267       </Attribute>
28268       <Attribute name="type" id="::DataSynchronization::SyncInfo::type">
28269         <webidl>    attribute <ref>SyncType</ref>? type;</webidl>
28270         <descriptive>
28271             <brief>
28272  An attribute to store the sync type.
28273             </brief>
28274            <description>
28275             <p>
28276 This attribute is used when the sync mode is set to <em>MANUAL</em> option.
28277             </p>
28278            </description>
28279             <version>
28280  2.1
28281             </version>
28282         </descriptive>
28283         <Type name="SyncType" nullable="nullable"/>
28284       </Attribute>
28285       <Attribute name="interval" id="::DataSynchronization::SyncInfo::interval">
28286         <webidl>    attribute <ref>SyncInterval</ref>? interval;</webidl>
28287         <descriptive>
28288             <brief>
28289  An attribute to store the sync interval.
28290             </brief>
28291            <description>
28292             <p>
28293 This attribute is used when the sync mode is set to <em>PERIODIC</em> option.
28294             </p>
28295            </description>
28296             <version>
28297  2.1
28298             </version>
28299         </descriptive>
28300         <Type name="SyncInterval" nullable="nullable"/>
28301       </Attribute>
28302     </Interface>
28303     <Interface name="SyncServiceInfo" id="::DataSynchronization::SyncServiceInfo">
28304       <webidl>  [Constructor(boolean enable, <ref>SyncServiceType</ref> serviceType, DOMString serverDatabaseUri, optional DOMString? id, optional DOMString? password)]
28305   interface SyncServiceInfo {
28306     attribute boolean enable;
28307
28308     attribute <ref>SyncServiceType</ref> serviceType;
28309
28310     attribute DOMString serverDatabaseUri;
28311
28312     attribute DOMString? id;
28313
28314     attribute DOMString? password;
28315   };</webidl>
28316       <descriptive>
28317           <brief>
28318  This interface defines the sync service information.
28319           </brief>
28320           <version>
28321  2.1
28322           </version>
28323       </descriptive>
28324       <ExtendedAttributeList>
28325         <ExtendedAttribute name="Constructor">
28326           <webidl>Constructor(boolean enable, <ref>SyncServiceType</ref> serviceType, DOMString serverDatabaseUri, optional DOMString? id, optional DOMString? password)</webidl>
28327           <ArgumentList>
28328             <Argument name="enable">
28329               <Type type="boolean"/>
28330             </Argument>
28331             <Argument name="serviceType">
28332               <Type name="SyncServiceType"/>
28333             </Argument>
28334             <Argument name="serverDatabaseUri">
28335               <Type type="DOMString"/>
28336             </Argument>
28337             <Argument optional="optional" name="id">
28338               <Type type="DOMString" nullable="nullable"/>
28339             </Argument>
28340             <Argument optional="optional" name="password">
28341               <Type type="DOMString" nullable="nullable"/>
28342             </Argument>
28343           </ArgumentList>
28344         </ExtendedAttribute>
28345       </ExtendedAttributeList>
28346       <Attribute name="enable" id="::DataSynchronization::SyncServiceInfo::enable">
28347         <webidl>    attribute boolean enable;</webidl>
28348         <descriptive>
28349             <brief>
28350  An attribute to enable or disable a service category for sync.
28351             </brief>
28352             <version>
28353  2.1
28354             </version>
28355         </descriptive>
28356         <Type type="boolean"/>
28357       </Attribute>
28358       <Attribute name="serviceType" id="::DataSynchronization::SyncServiceInfo::serviceType">
28359         <webidl>    attribute <ref>SyncServiceType</ref> serviceType;</webidl>
28360         <descriptive>
28361             <brief>
28362  An attribute to indicate the sync service type.
28363             </brief>
28364             <version>
28365  2.1
28366             </version>
28367         </descriptive>
28368         <Type name="SyncServiceType"/>
28369       </Attribute>
28370       <Attribute name="serverDatabaseUri" id="::DataSynchronization::SyncServiceInfo::serverDatabaseUri">
28371         <webidl>    attribute DOMString serverDatabaseUri;</webidl>
28372         <descriptive>
28373             <brief>
28374  An attribute to store the sync service DB URI of the server.
28375             </brief>
28376             <version>
28377  2.1
28378             </version>
28379         </descriptive>
28380         <Type type="DOMString"/>
28381       </Attribute>
28382       <Attribute name="id" id="::DataSynchronization::SyncServiceInfo::id">
28383         <webidl>    attribute DOMString? id;</webidl>
28384         <descriptive>
28385             <brief>
28386  An attribute to store the sync service DB access ID to the server.
28387             </brief>
28388            <description>
28389             <p>
28390 This is used only when the server requires a separate access right to each DB.
28391 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.
28392             </p>
28393            </description>
28394             <version>
28395  2.1
28396             </version>
28397         </descriptive>
28398         <Type type="DOMString" nullable="nullable"/>
28399       </Attribute>
28400       <Attribute name="password" id="::DataSynchronization::SyncServiceInfo::password">
28401         <webidl>    attribute DOMString? password;</webidl>
28402         <descriptive>
28403             <brief>
28404  An attribute to store the sync service DB access password to the server.
28405             </brief>
28406            <description>
28407             <p>
28408 This is used only when the server requires a separate access right to each DB.
28409 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.
28410             </p>
28411            </description>
28412             <version>
28413  2.1
28414             </version>
28415         </descriptive>
28416         <Type type="DOMString" nullable="nullable"/>
28417       </Attribute>
28418     </Interface>
28419     <Interface name="SyncProfileInfo" id="::DataSynchronization::SyncProfileInfo">
28420       <webidl>  [Constructor(DOMString profileName, <ref>SyncInfo</ref> syncInfo, optional <ref>SyncServiceInfo</ref>[]? serviceInfo)]
28421   interface SyncProfileInfo {
28422     readonly attribute <ref>SyncProfileId</ref> profileId;
28423
28424     attribute DOMString profileName;
28425
28426     attribute <ref>SyncInfo</ref> syncInfo;
28427
28428     attribute <ref>SyncServiceInfo</ref>[]? serviceInfo;
28429   };</webidl>
28430       <descriptive>
28431           <brief>
28432  This interface defines the sync profile information, based on which the synchronization is performed.
28433           </brief>
28434           <version>
28435  2.1
28436           </version>
28437       </descriptive>
28438       <ExtendedAttributeList>
28439         <ExtendedAttribute name="Constructor">
28440           <webidl>Constructor(DOMString profileName, <ref>SyncInfo</ref> syncInfo, optional <ref>SyncServiceInfo</ref>[]? serviceInfo)</webidl>
28441           <ArgumentList>
28442             <Argument name="profileName">
28443               <Type type="DOMString"/>
28444             </Argument>
28445             <Argument name="syncInfo">
28446               <Type name="SyncInfo"/>
28447             </Argument>
28448             <Argument optional="optional" name="serviceInfo">
28449               <Type type="array" nullable="nullable">
28450                 <Type name="SyncServiceInfo"/>
28451               </Type>
28452             </Argument>
28453           </ArgumentList>
28454         </ExtendedAttribute>
28455       </ExtendedAttributeList>
28456       <Attribute readonly="readonly" name="profileId" id="::DataSynchronization::SyncProfileInfo::profileId">
28457         <webidl>    readonly attribute <ref>SyncProfileId</ref> profileId;</webidl>
28458         <descriptive>
28459             <brief>
28460  An attribute to store the unique identifier provided by the platform for a profile that has been successfully added.
28461             </brief>
28462             <version>
28463  2.1
28464             </version>
28465         </descriptive>
28466         <Type name="SyncProfileId"/>
28467       </Attribute>
28468       <Attribute name="profileName" id="::DataSynchronization::SyncProfileInfo::profileName">
28469         <webidl>    attribute DOMString profileName;</webidl>
28470         <descriptive>
28471             <brief>
28472  An attribute to store the profile name.
28473             </brief>
28474             <version>
28475  2.1
28476             </version>
28477         </descriptive>
28478         <Type type="DOMString"/>
28479       </Attribute>
28480       <Attribute name="syncInfo" id="::DataSynchronization::SyncProfileInfo::syncInfo">
28481         <webidl>    attribute <ref>SyncInfo</ref> syncInfo;</webidl>
28482         <descriptive>
28483             <brief>
28484  An attribute to store the sync info.
28485             </brief>
28486             <version>
28487  2.1
28488             </version>
28489         </descriptive>
28490         <Type name="SyncInfo"/>
28491       </Attribute>
28492       <Attribute name="serviceInfo" id="::DataSynchronization::SyncProfileInfo::serviceInfo">
28493         <webidl>    attribute <ref>SyncServiceInfo</ref>[]? serviceInfo;</webidl>
28494         <descriptive>
28495             <brief>
28496  An attribute to indicate the service info.
28497             </brief>
28498             <version>
28499  2.1
28500             </version>
28501         </descriptive>
28502         <Type type="array" nullable="nullable">
28503           <Type name="SyncServiceInfo"/>
28504         </Type>
28505       </Attribute>
28506     </Interface>
28507     <Interface name="SyncStatistics" id="::DataSynchronization::SyncStatistics">
28508       <webidl>  [NoInterfaceObject] interface SyncStatistics {
28509     readonly attribute <ref>SyncStatus</ref> syncStatus;
28510
28511     readonly attribute <ref>SyncServiceType</ref> serviceType;
28512
28513     readonly attribute Date lastSyncTime;
28514
28515     readonly attribute unsigned long serverToClientTotal;
28516
28517     readonly attribute unsigned long serverToClientAdded;
28518
28519     readonly attribute unsigned long serverToClientUpdated;
28520
28521     readonly attribute unsigned long serverToClientRemoved;
28522
28523     readonly attribute unsigned long clientToServerTotal;
28524
28525     readonly attribute unsigned long clientToServerAdded;
28526
28527     readonly attribute unsigned long clientToServerUpdated;
28528
28529     readonly attribute unsigned long clientToServerRemoved;
28530   };</webidl>
28531       <descriptive>
28532           <brief>
28533  This interface defines the sync statistics for a profile service.
28534           </brief>
28535           <version>
28536  2.1
28537           </version>
28538       </descriptive>
28539       <ExtendedAttributeList>
28540         <ExtendedAttribute name="NoInterfaceObject">
28541           <webidl>NoInterfaceObject</webidl>
28542         </ExtendedAttribute>
28543       </ExtendedAttributeList>
28544       <Attribute readonly="readonly" name="syncStatus" id="::DataSynchronization::SyncStatistics::syncStatus">
28545         <webidl>    readonly attribute <ref>SyncStatus</ref> syncStatus;</webidl>
28546         <descriptive>
28547             <brief>
28548  An attribute to store the last sync status for a corresponding service category.
28549             </brief>
28550             <version>
28551  2.1
28552             </version>
28553         </descriptive>
28554         <Type name="SyncStatus"/>
28555       </Attribute>
28556       <Attribute readonly="readonly" name="serviceType" id="::DataSynchronization::SyncStatistics::serviceType">
28557         <webidl>    readonly attribute <ref>SyncServiceType</ref> serviceType;</webidl>
28558         <descriptive>
28559             <brief>
28560  An attribute to indicate the sync service type.
28561             </brief>
28562             <version>
28563  2.1
28564             </version>
28565         </descriptive>
28566         <Type name="SyncServiceType"/>
28567       </Attribute>
28568       <Attribute readonly="readonly" name="lastSyncTime" id="::DataSynchronization::SyncStatistics::lastSyncTime">
28569         <webidl>    readonly attribute Date lastSyncTime;</webidl>
28570         <descriptive>
28571             <brief>
28572  An attribute to store the last sync time.
28573             </brief>
28574             <version>
28575  2.1
28576             </version>
28577         </descriptive>
28578         <Type type="Date"/>
28579       </Attribute>
28580       <Attribute readonly="readonly" name="serverToClientTotal" id="::DataSynchronization::SyncStatistics::serverToClientTotal">
28581         <webidl>    readonly attribute unsigned long serverToClientTotal;</webidl>
28582         <descriptive>
28583             <brief>
28584  An attribute to indicate the total number of items sent from the server to the client direction.
28585             </brief>
28586             <version>
28587  2.1
28588             </version>
28589         </descriptive>
28590         <Type type="unsigned long"/>
28591       </Attribute>
28592       <Attribute readonly="readonly" name="serverToClientAdded" id="::DataSynchronization::SyncStatistics::serverToClientAdded">
28593         <webidl>    readonly attribute unsigned long serverToClientAdded;</webidl>
28594         <descriptive>
28595             <brief>
28596  An attribute to indicate the number of added items from the server to the client direction.
28597             </brief>
28598             <version>
28599  2.1
28600             </version>
28601         </descriptive>
28602         <Type type="unsigned long"/>
28603       </Attribute>
28604       <Attribute readonly="readonly" name="serverToClientUpdated" id="::DataSynchronization::SyncStatistics::serverToClientUpdated">
28605         <webidl>    readonly attribute unsigned long serverToClientUpdated;</webidl>
28606         <descriptive>
28607             <brief>
28608  An attribute to indicate the number of updated items from the server to the client direction.
28609             </brief>
28610             <version>
28611  2.1
28612             </version>
28613         </descriptive>
28614         <Type type="unsigned long"/>
28615       </Attribute>
28616       <Attribute readonly="readonly" name="serverToClientRemoved" id="::DataSynchronization::SyncStatistics::serverToClientRemoved">
28617         <webidl>    readonly attribute unsigned long serverToClientRemoved;</webidl>
28618         <descriptive>
28619             <brief>
28620  An attribute to indicate the number of removed items from the server to the client direction.
28621             </brief>
28622             <version>
28623  2.1
28624             </version>
28625         </descriptive>
28626         <Type type="unsigned long"/>
28627       </Attribute>
28628       <Attribute readonly="readonly" name="clientToServerTotal" id="::DataSynchronization::SyncStatistics::clientToServerTotal">
28629         <webidl>    readonly attribute unsigned long clientToServerTotal;</webidl>
28630         <descriptive>
28631             <brief>
28632  An attribute to indicate the total number of items from the client to the server direction.
28633             </brief>
28634             <version>
28635  2.1
28636             </version>
28637         </descriptive>
28638         <Type type="unsigned long"/>
28639       </Attribute>
28640       <Attribute readonly="readonly" name="clientToServerAdded" id="::DataSynchronization::SyncStatistics::clientToServerAdded">
28641         <webidl>    readonly attribute unsigned long clientToServerAdded;</webidl>
28642         <descriptive>
28643             <brief>
28644  An attribute to indicate the number of added items from the client to the server direction.
28645             </brief>
28646             <version>
28647  2.1
28648             </version>
28649         </descriptive>
28650         <Type type="unsigned long"/>
28651       </Attribute>
28652       <Attribute readonly="readonly" name="clientToServerUpdated" id="::DataSynchronization::SyncStatistics::clientToServerUpdated">
28653         <webidl>    readonly attribute unsigned long clientToServerUpdated;</webidl>
28654         <descriptive>
28655             <brief>
28656  An attribute to indicate the number of updated items from the client to the server direction.
28657             </brief>
28658             <version>
28659  2.1
28660             </version>
28661         </descriptive>
28662         <Type type="unsigned long"/>
28663       </Attribute>
28664       <Attribute readonly="readonly" name="clientToServerRemoved" id="::DataSynchronization::SyncStatistics::clientToServerRemoved">
28665         <webidl>    readonly attribute unsigned long clientToServerRemoved;</webidl>
28666         <descriptive>
28667             <brief>
28668  An attribute to indicate the number of removed items from the client to the server direction.
28669             </brief>
28670             <version>
28671  2.1
28672             </version>
28673         </descriptive>
28674         <Type type="unsigned long"/>
28675       </Attribute>
28676     </Interface>
28677     <Interface name="DataSynchronizationManager" id="::DataSynchronization::DataSynchronizationManager">
28678       <webidl>  [NoInterfaceObject] interface DataSynchronizationManager {
28679     void add(<ref>SyncProfileInfo</ref> profile) raises(<ref>WebAPIException</ref>);
28680
28681     void update(<ref>SyncProfileInfo</ref> profile) raises(<ref>WebAPIException</ref>);
28682
28683     void remove(<ref>SyncProfileId</ref> profileId) raises(<ref>WebAPIException</ref>);
28684
28685     long getMaxProfilesNum() raises(<ref>WebAPIException</ref>);
28686
28687     unsigned long getProfilesNum() raises(<ref>WebAPIException</ref>);
28688
28689     <ref>SyncProfileInfo</ref> get(<ref>SyncProfileId</ref> profileId) raises(<ref>WebAPIException</ref>);
28690
28691     <ref>SyncProfileInfo</ref>[] getAll() raises(<ref>WebAPIException</ref>);
28692
28693     void startSync(<ref>SyncProfileId</ref> profileId, optional <ref>SyncProgressCallback</ref>? progressCallback) raises(<ref>WebAPIException</ref>);
28694
28695     void stopSync(<ref>SyncProfileId</ref> profileId) raises(<ref>WebAPIException</ref>);
28696
28697     <ref>SyncStatistics</ref>[] getLastSyncStatistics(<ref>SyncProfileId</ref> profileId) raises(<ref>WebAPIException</ref>);
28698   };</webidl>
28699       <descriptive>
28700           <brief>
28701  This interface allows managing profiles and synchronizing data between the server and the client device based on the stored profile information.
28702           </brief>
28703           <version>
28704  2.1
28705           </version>
28706       </descriptive>
28707       <ExtendedAttributeList>
28708         <ExtendedAttribute name="NoInterfaceObject">
28709           <webidl>NoInterfaceObject</webidl>
28710         </ExtendedAttribute>
28711       </ExtendedAttributeList>
28712       <Operation name="add" id="::DataSynchronization::DataSynchronizationManager::add">
28713         <webidl>    void add(<ref>SyncProfileInfo</ref> profile) raises(<ref>WebAPIException</ref>);</webidl>
28714         <descriptive>
28715             <brief>
28716  Adds a sync profile.
28717             </brief>
28718            <description>
28719             <p>
28720 The profile ID is provided when the profile is successfully added.
28721             </p>
28722            </description>
28723             <version>
28724  2.1
28725             </version>
28726             <privilegelevel>
28727  public
28728             </privilegelevel>
28729             <privilege>
28730  http://tizen.org/privilege/datasync
28731             </privilege>
28732             <Code> // Creates a sync info
28733  var syncInfo = new tizen.SyncInfo(&quot;http://example.com/sync&quot;, &quot;myId&quot;, &quot;myPassword&quot;, &quot;MANUAL&quot;, &quot;TWO_WAY&quot;);
28734
28735  // Syncs both contacts and events
28736  var contactInfo = new tizen.SyncServiceInfo(true, &quot;CONTACT&quot;, &quot;serverContact&quot;);
28737  var eventInfo = new tizen.SyncServiceInfo(true, &quot;EVENT&quot;, &quot;serverEvent&quot;);
28738  var serviceInfo = [contactInfo, eventInfo];
28739
28740  // Adds a profile to sync
28741  var profile = new tizen.SyncProfileInfo(&quot;MyProfile&quot;, syncInfo, serviceInfo);
28742  tizen.datasync.add(profile);
28743  </Code>
28744         </descriptive>
28745         <Type type="void"/>
28746         <ArgumentList>
28747           <Argument name="profile">
28748             <descriptive>
28749                 <description><p>
28750  The sync profile information to add.
28751                 </p></description>
28752             </descriptive>
28753             <Type name="SyncProfileInfo"/>
28754           </Argument>
28755         </ArgumentList>
28756         <Raises>
28757           <RaiseException name="WebAPIException">
28758             <descriptive>
28759                 <description><p>
28760  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
28761                 </p></description>
28762                 <description><p>
28763  with error type QuotaExceededError, if the platform has already reached the maximum number of profiles.
28764                 </p></description>
28765                 <description><p>
28766  with error type NotSupportedError, if this feature is not supported.
28767                 </p></description>
28768                 <description><p>
28769  with error type InvalidValuesError, if any of the input parameters contain an invalid value.
28770                 </p></description>
28771                 <description><p>
28772  with error type SecurityError, if the application does not have the privilege to call this method.
28773                 </p></description>
28774                 <description><p>
28775  with error type UnknownError, if any other error occurs.
28776                 </p></description>
28777             </descriptive>
28778           </RaiseException>
28779         </Raises>
28780       </Operation>
28781       <Operation name="update" id="::DataSynchronization::DataSynchronizationManager::update">
28782         <webidl>    void update(<ref>SyncProfileInfo</ref> profile) raises(<ref>WebAPIException</ref>);</webidl>
28783         <descriptive>
28784             <brief>
28785  Updates an existing sync profile.
28786             </brief>
28787             <version>
28788  2.1
28789             </version>
28790             <privilegelevel>
28791  public
28792             </privilegelevel>
28793             <privilege>
28794  http://tizen.org/privilege/datasync
28795             </privilege>
28796             <Code> // Retrieves and updates a profile
28797  var profile = tizen.datasync.get(profileId);
28798
28799  profile.profileName = &quot;newProfileName&quot;;
28800
28801  tizen.datasync.update(profile);
28802  </Code>
28803         </descriptive>
28804         <Type type="void"/>
28805         <ArgumentList>
28806           <Argument name="profile">
28807             <descriptive>
28808                 <description><p>
28809  The sync profile information to update.
28810                 </p></description>
28811             </descriptive>
28812             <Type name="SyncProfileInfo"/>
28813           </Argument>
28814         </ArgumentList>
28815         <Raises>
28816           <RaiseException name="WebAPIException">
28817             <descriptive>
28818                 <description><p>
28819  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
28820                 </p></description>
28821                 <description><p>
28822  with error type NotSupportedError, if this feature is not supported.
28823                 </p></description>
28824                 <description><p>
28825  with error type InvalidValuesError, if any of the input parameters contain an invalid value.
28826                 </p></description>
28827                 <description><p>
28828  with error type SecurityError, if the application does not have the privilege to call this method.
28829                 </p></description>
28830                 <description><p>
28831  with error type UnknownError, if any other error occurs.
28832                 </p></description>
28833             </descriptive>
28834           </RaiseException>
28835         </Raises>
28836       </Operation>
28837       <Operation name="remove" id="::DataSynchronization::DataSynchronizationManager::remove">
28838         <webidl>    void remove(<ref>SyncProfileId</ref> profileId) raises(<ref>WebAPIException</ref>);</webidl>
28839         <descriptive>
28840             <brief>
28841  Removes an existing sync profile.
28842             </brief>
28843             <version>
28844  2.1
28845             </version>
28846             <privilegelevel>
28847  public
28848             </privilegelevel>
28849             <privilege>
28850  http://tizen.org/privilege/datasync
28851             </privilege>
28852             <Code> // Removes a profile
28853  tizen.datasync.remove(profileId);
28854  </Code>
28855         </descriptive>
28856         <Type type="void"/>
28857         <ArgumentList>
28858           <Argument name="profileId">
28859             <descriptive>
28860                 <description><p>
28861  The sync profile ID to remove.
28862                 </p></description>
28863             </descriptive>
28864             <Type name="SyncProfileId"/>
28865           </Argument>
28866         </ArgumentList>
28867         <Raises>
28868           <RaiseException name="WebAPIException">
28869             <descriptive>
28870                 <description><p>
28871  with error type NotFoundError, if the identifier does not match any saved profile.
28872                 </p></description>
28873                 <description><p>
28874  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
28875                 </p></description>
28876                 <description><p>
28877  with error type NotSupportedError, if this feature is not supported.
28878                 </p></description>
28879                 <description><p>
28880  with error type SecurityError, if the application does not have the privilege to call this method.
28881                 </p></description>
28882                 <description><p>
28883  with error type UnknownError, if any other error occurs.
28884                 </p></description>
28885             </descriptive>
28886           </RaiseException>
28887         </Raises>
28888       </Operation>
28889       <Operation name="getMaxProfilesNum" id="::DataSynchronization::DataSynchronizationManager::getMaxProfilesNum">
28890         <webidl>    long getMaxProfilesNum() raises(<ref>WebAPIException</ref>);</webidl>
28891         <descriptive>
28892             <brief>
28893  Gets the maximum number of supported sync profiles on a platform.
28894 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.
28895             </brief>
28896             <version>
28897  2.1
28898             </version>
28899             <privilegelevel>
28900  public
28901             </privilegelevel>
28902             <privilege>
28903  http://tizen.org/privilege/datasync
28904             </privilege>
28905             <Code> // Gets the maximum number of supported profiles on the platform
28906  var numMaxProfiles = tizen.datasync.getMaxProfilesNum();
28907  </Code>
28908         </descriptive>
28909         <Type type="long">
28910           <descriptive>
28911               <description><p>
28912  long The number of supported profiles on a platform.
28913               </p></description>
28914           </descriptive>
28915         </Type>
28916         <ArgumentList/>
28917         <Raises>
28918           <RaiseException name="WebAPIException">
28919             <descriptive>
28920                 <description><p>
28921  with error type NotSupportedError, if this feature is not supported.
28922                 </p></description>
28923                 <description><p>
28924  with error type SecurityError, if the application does not have the privilege to call this method.
28925                 </p></description>
28926                 <description><p>
28927  with error type UnknownError, if any other error occurs.
28928                 </p></description>
28929             </descriptive>
28930           </RaiseException>
28931         </Raises>
28932       </Operation>
28933       <Operation name="getProfilesNum" id="::DataSynchronization::DataSynchronizationManager::getProfilesNum">
28934         <webidl>    unsigned long getProfilesNum() raises(<ref>WebAPIException</ref>);</webidl>
28935         <descriptive>
28936             <brief>
28937  Gets the current number of sync profiles on a device.
28938             </brief>
28939             <version>
28940  2.1
28941             </version>
28942             <privilegelevel>
28943  public
28944             </privilegelevel>
28945             <privilege>
28946  http://tizen.org/privilege/datasync
28947             </privilege>
28948             <Code> // Gets the present number of profiles on the device
28949  var numProfiles = tizen.datasync.getProfilesNum();
28950  </Code>
28951         </descriptive>
28952         <Type type="unsigned long">
28953           <descriptive>
28954               <description><p>
28955  unsigned long The current number of profiles on a device.
28956               </p></description>
28957           </descriptive>
28958         </Type>
28959         <ArgumentList/>
28960         <Raises>
28961           <RaiseException name="WebAPIException">
28962             <descriptive>
28963                 <description><p>
28964  with error type NotSupportedError, if this feature is not supported.
28965                 </p></description>
28966                 <description><p>
28967  with error type SecurityError, if the application does not have the privilege to call this method.
28968                 </p></description>
28969                 <description><p>
28970  with error type UnknownError, if any other error occurs.
28971                 </p></description>
28972             </descriptive>
28973           </RaiseException>
28974         </Raises>
28975       </Operation>
28976       <Operation name="get" id="::DataSynchronization::DataSynchronizationManager::get">
28977         <webidl>    <ref>SyncProfileInfo</ref> get(<ref>SyncProfileId</ref> profileId) raises(<ref>WebAPIException</ref>);</webidl>
28978         <descriptive>
28979             <brief>
28980  Gets the <em>SyncProfileInfo</em> object from a given profile ID.
28981             </brief>
28982            <description>
28983             <p>
28984 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>.
28985             </p>
28986            </description>
28987             <version>
28988  2.1
28989             </version>
28990             <privilegelevel>
28991  public
28992             </privilegelevel>
28993             <privilege>
28994  http://tizen.org/privilege/datasync
28995             </privilege>
28996             <Code> // Gets the profile information with the given ID
28997  var profile = tizen.datasync.get(profileId);
28998  </Code>
28999         </descriptive>
29000         <Type name="SyncProfileInfo">
29001           <descriptive>
29002               <description><p>
29003  SyncProfileInfo The profile information of the given ID.
29004               </p></description>
29005           </descriptive>
29006         </Type>
29007         <ArgumentList>
29008           <Argument name="profileId">
29009             <descriptive>
29010                 <description><p>
29011  The ID to use to get the profile information.
29012                 </p></description>
29013             </descriptive>
29014             <Type name="SyncProfileId"/>
29015           </Argument>
29016         </ArgumentList>
29017         <Raises>
29018           <RaiseException name="WebAPIException">
29019             <descriptive>
29020                 <description><p>
29021  with error type NotFoundError, if the identifier does not match any profile saved.
29022                 </p></description>
29023                 <description><p>
29024  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
29025                 </p></description>
29026                 <description><p>
29027  with error type NotSupportedError, if this feature is not supported.
29028                 </p></description>
29029                 <description><p>
29030  with error type SecurityError, if the application does not have the privilege to call this method.
29031                 </p></description>
29032                 <description><p>
29033  with error type UnknownError, if any other error occurs.
29034                 </p></description>
29035             </descriptive>
29036           </RaiseException>
29037         </Raises>
29038       </Operation>
29039       <Operation name="getAll" id="::DataSynchronization::DataSynchronizationManager::getAll">
29040         <webidl>    <ref>SyncProfileInfo</ref>[] getAll() raises(<ref>WebAPIException</ref>);</webidl>
29041         <descriptive>
29042             <brief>
29043  Gets the information of all sync profiles saved in a device.
29044             </brief>
29045            <description>
29046             <p>
29047 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>.
29048             </p>
29049            </description>
29050             <version>
29051  2.1
29052             </version>
29053             <privilegelevel>
29054  public
29055             </privilegelevel>
29056             <privilege>
29057  http://tizen.org/privilege/datasync
29058             </privilege>
29059             <Code> // Gets the all profile information
29060  var profiles = tizen.datasync.getAll();
29061  </Code>
29062         </descriptive>
29063         <Type type="array">
29064           <descriptive>
29065               <description><p>
29066  SyncProfileInfo[] The profile information array.
29067               </p></description>
29068           </descriptive>
29069           <Type name="SyncProfileInfo"/>
29070         </Type>
29071         <ArgumentList/>
29072         <Raises>
29073           <RaiseException name="WebAPIException">
29074             <descriptive>
29075                 <description><p>
29076  with error type NotSupportedError, if this feature is not supported.
29077                 </p></description>
29078                 <description><p>
29079  with error type SecurityError, if the application does not have the privilege to call this method.
29080                 </p></description>
29081                 <description><p>
29082  with error type UnknownError, if any other error occurs.
29083                 </p></description>
29084             </descriptive>
29085           </RaiseException>
29086         </Raises>
29087       </Operation>
29088       <Operation name="startSync" id="::DataSynchronization::DataSynchronizationManager::startSync">
29089         <webidl>    void startSync(<ref>SyncProfileId</ref> profileId, optional <ref>SyncProgressCallback</ref>? progressCallback) raises(<ref>WebAPIException</ref>);</webidl>
29090         <descriptive>
29091             <brief>
29092  Starts a sync operation with a given profile ID.
29093             </brief>
29094            <description>
29095             <p>
29096 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.
29097             </p>
29098            </description>
29099             <version>
29100  2.1
29101             </version>
29102             <privilegelevel>
29103  public
29104             </privilegelevel>
29105             <privilege>
29106  http://tizen.org/privilege/datasync
29107             </privilege>
29108             <Code> var profileId; //profileId obtained from SyncProfileInfo
29109  var syncCallback = {
29110    onprogress: function(profileId, serviceType, isFromServer, totalPerType, syncedPerType) {
29111      console.log('Total: ' + totalPerType + ', synced: ' + syncedPerType + ' for the sync type: ' + serviceType);
29112    },
29113    onfailed: function(profileId, error) {
29114       console.log('Failed with id: ' + profileId + ', error name: ' + error.name);
29115    }
29116  };
29117
29118  // Starts the sync operation with the corresponding callbacks
29119  tizen.datasync.startSync(profileId, syncCallback);
29120  </Code>
29121         </descriptive>
29122         <Type type="void"/>
29123         <ArgumentList>
29124           <Argument name="profileId">
29125             <descriptive>
29126                 <description><p>
29127  The profile ID with which to initiate the sync operation.
29128                 </p></description>
29129             </descriptive>
29130             <Type name="SyncProfileId"/>
29131           </Argument>
29132           <Argument optional="optional" name="progressCallback">
29133             <descriptive>
29134                 <description><p>
29135  The method to invoke when the sync operation progresses or an error occurs.
29136                 </p></description>
29137             </descriptive>
29138             <Type name="SyncProgressCallback" nullable="nullable"/>
29139           </Argument>
29140         </ArgumentList>
29141         <Raises>
29142           <RaiseException name="WebAPIException">
29143             <descriptive>
29144                 <description><p>
29145  with error type NotFoundError, if the identifier does not match any profile saved.
29146                 </p></description>
29147                 <description><p>
29148  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
29149                 </p></description>
29150                 <description><p>
29151  with error type NotSupportedError, if this feature is not supported.
29152                 </p></description>
29153                 <description><p>
29154  with error type InvalidValuesError, if any of the input parameters contain an invalid value.
29155                 </p></description>
29156                 <description><p>
29157  with error type SecurityError, if the application does not have the privilege to call this method.
29158                 </p></description>
29159                 <description><p>
29160  with error type UnknownError, if any other error occurs.
29161                 </p></description>
29162             </descriptive>
29163           </RaiseException>
29164         </Raises>
29165       </Operation>
29166       <Operation name="stopSync" id="::DataSynchronization::DataSynchronizationManager::stopSync">
29167         <webidl>    void stopSync(<ref>SyncProfileId</ref> profileId) raises(<ref>WebAPIException</ref>);</webidl>
29168         <descriptive>
29169             <brief>
29170  Stops an ongoing sync operation that is specified by the <em>profileId</em> parameter.
29171             </brief>
29172             <version>
29173  2.1
29174             </version>
29175             <privilegelevel>
29176  public
29177             </privilegelevel>
29178             <privilege>
29179  http://tizen.org/privilege/datasync
29180             </privilege>
29181             <Code> var profileId; //profileId obtained from SyncProfileInfo
29182  // Stops the ongoing sync operation
29183  tizen.datasync.stopSync(profileId);
29184  </Code>
29185         </descriptive>
29186         <Type type="void"/>
29187         <ArgumentList>
29188           <Argument name="profileId">
29189             <descriptive>
29190                 <description><p>
29191  The ID of the ongoing sync operation to stop.
29192                 </p></description>
29193             </descriptive>
29194             <Type name="SyncProfileId"/>
29195           </Argument>
29196         </ArgumentList>
29197         <Raises>
29198           <RaiseException name="WebAPIException">
29199             <descriptive>
29200                 <description><p>
29201  with error type NotFoundError, if the identifier does not match any profile saved.
29202                 </p></description>
29203                 <description><p>
29204  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
29205                 </p></description>
29206                 <description><p>
29207  with error type NotSupportedError, if this feature is not supported.
29208                 </p></description>
29209                 <description><p>
29210  with error type SecurityError, if the application does not have the privilege to call this method.
29211                 </p></description>
29212                 <description><p>
29213  with error type UnknownError, if any other error occurs.
29214                 </p></description>
29215             </descriptive>
29216           </RaiseException>
29217         </Raises>
29218       </Operation>
29219       <Operation name="getLastSyncStatistics" id="::DataSynchronization::DataSynchronizationManager::getLastSyncStatistics">
29220         <webidl>    <ref>SyncStatistics</ref>[] getLastSyncStatistics(<ref>SyncProfileId</ref> profileId) raises(<ref>WebAPIException</ref>);</webidl>
29221         <descriptive>
29222             <brief>
29223  Gets the sync statistics of a given profile ID.
29224             </brief>
29225             <version>
29226  2.1
29227             </version>
29228             <privilegelevel>
29229  public
29230             </privilegelevel>
29231             <privilege>
29232  http://tizen.org/privilege/datasync
29233             </privilege>
29234             <Code> var profileId; //profileId obtained from SyncProfileInfo
29235  // Gets the sync statistics information with the given ID
29236  var statistics = tizen.datasync.getLastSyncStatistics(profileId);
29237  </Code>
29238         </descriptive>
29239         <Type type="array">
29240           <descriptive>
29241               <description><p>
29242  SyncStatictics[] The sync statistics information of a given ID.
29243               </p></description>
29244           </descriptive>
29245           <Type name="SyncStatistics"/>
29246         </Type>
29247         <ArgumentList>
29248           <Argument name="profileId">
29249             <descriptive>
29250                 <description><p>
29251  The ID to use to get the sync statistics.
29252                 </p></description>
29253             </descriptive>
29254             <Type name="SyncProfileId"/>
29255           </Argument>
29256         </ArgumentList>
29257         <Raises>
29258           <RaiseException name="WebAPIException">
29259             <descriptive>
29260                 <description><p>
29261  with error type NotFoundError, if the identifier does not match any profile saved.
29262                 </p></description>
29263                 <description><p>
29264  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
29265                 </p></description>
29266                 <description><p>
29267  with error type NotSupportedError, if this feature is not supported.
29268                 </p></description>
29269                 <description><p>
29270  with error type SecurityError, if the application does not have the privilege to call this method.
29271                 </p></description>
29272                 <description><p>
29273  with error type UnknownError, if any other error occurs.
29274                 </p></description>
29275             </descriptive>
29276           </RaiseException>
29277         </Raises>
29278       </Operation>
29279     </Interface>
29280     <Interface name="SyncProgressCallback" id="::DataSynchronization::SyncProgressCallback">
29281       <webidl>  [Callback, NoInterfaceObject] interface SyncProgressCallback {
29282     void onprogress(<ref>SyncProfileId</ref> profileId, <ref>SyncServiceType</ref> serviceType, boolean isFromServer, unsigned long totalPerService, unsigned long syncedPerService);
29283
29284     void oncompleted(<ref>SyncProfileId</ref> profileId);
29285
29286     void onstopped(<ref>SyncProfileId</ref> profileId);
29287
29288     void onfailed(<ref>SyncProfileId</ref> profileId, <ref>WebAPIError</ref> error);
29289   };</webidl>
29290       <descriptive>
29291           <brief>
29292  This interface defines progress notification callbacks for the ongoing sync operation.
29293           </brief>
29294           <version>
29295  2.1
29296           </version>
29297       </descriptive>
29298       <ExtendedAttributeList>
29299         <ExtendedAttribute name="Callback">
29300           <webidl>Callback</webidl>
29301         </ExtendedAttribute>
29302         <ExtendedAttribute name="NoInterfaceObject">
29303           <webidl> NoInterfaceObject</webidl>
29304         </ExtendedAttribute>
29305       </ExtendedAttributeList>
29306       <Operation name="onprogress" id="::DataSynchronization::SyncProgressCallback::onprogress">
29307         <webidl>    void onprogress(<ref>SyncProfileId</ref> profileId, <ref>SyncServiceType</ref> serviceType, boolean isFromServer, unsigned long totalPerService, unsigned long syncedPerService);</webidl>
29308         <descriptive>
29309             <brief>
29310  Called when a synchronization operation is started and progress is made.
29311             </brief>
29312            <description>
29313             <p>
29314 The frequency of this callback invocation is dependent on the platform implementation.
29315 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.
29316             </p>
29317            </description>
29318             <version>
29319  2.1
29320             </version>
29321         </descriptive>
29322         <Type type="void"/>
29323         <ArgumentList>
29324           <Argument name="profileId">
29325             <descriptive>
29326                 <description><p>
29327  The ID of the corresponding sync operation.
29328                 </p></description>
29329             </descriptive>
29330             <Type name="SyncProfileId"/>
29331           </Argument>
29332           <Argument name="serviceType">
29333             <descriptive>
29334                 <description><p>
29335  The sync service category type.
29336                 </p></description>
29337             </descriptive>
29338             <Type name="SyncServiceType"/>
29339           </Argument>
29340           <Argument name="isFromServer">
29341             <descriptive>
29342                 <description><p>
29343  The direction of the operation.<br/> If the direction of operation is from the server to the client, then value is<var> true</var>.
29344                 </p></description>
29345             </descriptive>
29346             <Type type="boolean"/>
29347           </Argument>
29348           <Argument name="totalPerService">
29349             <descriptive>
29350                 <description><p>
29351  The total number of records to synchronize for the current sync service type aggregating all operations.
29352                 </p></description>
29353             </descriptive>
29354             <Type type="unsigned long"/>
29355           </Argument>
29356           <Argument name="syncedPerService">
29357             <descriptive>
29358                 <description><p>
29359  The number of synchronized records for the current sync service type aggregating all operations.
29360                 </p></description>
29361             </descriptive>
29362             <Type type="unsigned long"/>
29363           </Argument>
29364         </ArgumentList>
29365       </Operation>
29366       <Operation name="oncompleted" id="::DataSynchronization::SyncProgressCallback::oncompleted">
29367         <webidl>    void oncompleted(<ref>SyncProfileId</ref> profileId);</webidl>
29368         <descriptive>
29369             <brief>
29370  Called when the sync operation has completed.
29371             </brief>
29372             <version>
29373  2.1
29374             </version>
29375         </descriptive>
29376         <Type type="void"/>
29377         <ArgumentList>
29378           <Argument name="profileId">
29379             <descriptive>
29380                 <description><p>
29381  The ID of the corresponding sync operation.
29382                 </p></description>
29383             </descriptive>
29384             <Type name="SyncProfileId"/>
29385           </Argument>
29386         </ArgumentList>
29387       </Operation>
29388       <Operation name="onstopped" id="::DataSynchronization::SyncProgressCallback::onstopped">
29389         <webidl>    void onstopped(<ref>SyncProfileId</ref> profileId);</webidl>
29390         <descriptive>
29391             <brief>
29392  Called when the sync operation is stopped by user.
29393             </brief>
29394             <version>
29395  2.1
29396             </version>
29397         </descriptive>
29398         <Type type="void"/>
29399         <ArgumentList>
29400           <Argument name="profileId">
29401             <descriptive>
29402                 <description><p>
29403  The ID of the corresponding sync operation.
29404                 </p></description>
29405             </descriptive>
29406             <Type name="SyncProfileId"/>
29407           </Argument>
29408         </ArgumentList>
29409       </Operation>
29410       <Operation name="onfailed" id="::DataSynchronization::SyncProgressCallback::onfailed">
29411         <webidl>    void onfailed(<ref>SyncProfileId</ref> profileId, <ref>WebAPIError</ref> error);</webidl>
29412         <descriptive>
29413             <brief>
29414  Called when the sync operation fails.
29415             </brief>
29416             <version>
29417  2.1
29418             </version>
29419         </descriptive>
29420         <Type type="void"/>
29421         <ArgumentList>
29422           <Argument name="profileId">
29423             <descriptive>
29424                 <description><p>
29425  The ID of the corresponding sync operation.
29426                 </p></description>
29427             </descriptive>
29428             <Type name="SyncProfileId"/>
29429           </Argument>
29430           <Argument name="error">
29431             <descriptive>
29432                 <description><p>
29433  The reason for the sync failure.
29434                 </p></description>
29435             </descriptive>
29436             <Type name="WebAPIError"/>
29437           </Argument>
29438         </ArgumentList>
29439       </Operation>
29440     </Interface>
29441   </Module>
29442   <Module name="Download" id="::Download">
29443     <webidl>module Download {
29444     typedef object DownloadHTTPHeaderFields;
29445
29446     enum DownloadState { &quot;QUEUED&quot;, &quot;DOWNLOADING&quot;, &quot;PAUSED&quot;, &quot;CANCELED&quot;, &quot;COMPLETED&quot;, &quot;FAILED&quot; };
29447
29448     enum DownloadNetworkType { &quot;CELLULAR&quot;, &quot;WIFI&quot;, &quot;ALL&quot; };
29449
29450     [NoInterfaceObject] interface DownloadManagerObject {
29451         readonly attribute <ref>DownloadManager</ref> download;
29452     };
29453     <ref>Tizen</ref> implements <ref>DownloadManagerObject</ref>;
29454
29455     [Constructor(DOMString url, optional DOMString? destination, optional DOMString? fileName, optional <ref>DownloadNetworkType</ref>? networkType, optional <ref>DownloadHTTPHeaderFields</ref>? httpHeader)]
29456     interface DownloadRequest {
29457         attribute DOMString url;
29458
29459         attribute DOMString? destination;
29460
29461         attribute DOMString? fileName;
29462
29463         attribute <ref>DownloadNetworkType</ref>? networkType;
29464
29465         attribute <ref>DownloadHTTPHeaderFields</ref>? httpHeader;
29466     };
29467
29468    [NoInterfaceObject] interface DownloadManager {
29469        long start(<ref>DownloadRequest</ref> downloadRequest,
29470                     optional <ref>DownloadCallback</ref>? downloadCallback) raises(<ref>WebAPIException</ref>);
29471
29472        void cancel(long downloadId) raises(<ref>WebAPIException</ref>);
29473
29474        void pause(long downloadId) raises(<ref>WebAPIException</ref>);
29475
29476        void resume(long downloadId) raises(<ref>WebAPIException</ref>);
29477
29478        <ref>DownloadState</ref> getState(long downloadId) raises(<ref>WebAPIException</ref>);
29479
29480        <ref>DownloadRequest</ref> getDownloadRequest(long downloadId) raises(<ref>WebAPIException</ref>);
29481
29482        DOMString getMIMEType(long downloadId) raises(<ref>WebAPIException</ref>);
29483
29484        void setListener(long downloadId, <ref>DownloadCallback</ref> downloadCallback) raises(<ref>WebAPIException</ref>);
29485    };
29486
29487    [Callback, NoInterfaceObject] interface DownloadCallback {
29488        void onprogress(long downloadId, unsigned long long receivedSize, unsigned long long totalSize);
29489
29490        void onpaused(long downloadId);
29491
29492        void oncanceled(long downloadId);
29493
29494        void oncompleted(long downloadId, DOMString fullPath);
29495
29496        void onfailed(long downloadId, <ref>WebAPIError</ref> error);
29497    };
29498 };</webidl>
29499     <descriptive>
29500         <brief>
29501  This API provides methods to asynchronously download the contents of a URL to a storage.
29502         </brief>
29503        <description>
29504         <p>
29505 For more information on the Download features, see <a href="../../org.tizen.web.appprogramming/html/guide/content_guide/download.htm">Download Guide</a>.
29506         </p>
29507        </description>
29508         <version>
29509  2.0
29510         </version>
29511         <def-api-feature identifier="http://tizen.org/feature/network.wifi">
29512           <descriptive>
29513            <description>
29514             <p>
29515 To guarantee this application running on a device with Wi-Fi feature, define below in the config file: 
29516             </p>
29517            </description>
29518           </descriptive>
29519         </def-api-feature>
29520         <def-api-feature identifier="http://tizen.org/feature/network.telephony">
29521           <descriptive>
29522            <description>
29523             <p>
29524 To guarantee this application running on a device with Cellular feature, define below in the config file: 
29525             </p>
29526            </description>
29527           </descriptive>
29528         </def-api-feature>
29529     </descriptive>
29530     <Typedef name="DownloadHTTPHeaderFields" id="::Download::DownloadHTTPHeaderFields">
29531       <webidl>    typedef object DownloadHTTPHeaderFields;</webidl>
29532       <descriptive>
29533           <brief>
29534  A set of HTTP header fields.
29535           </brief>
29536          <description>
29537           <p>
29538 The key / value type of each HTTP header field should be DOMString.
29539           </p>
29540          </description>
29541           <version>
29542  2.1
29543           </version>
29544       </descriptive>
29545       <Type type="object"/>
29546     </Typedef>
29547     <Enum name="DownloadState" id="::Download::DownloadState">
29548       <webidl>    enum DownloadState { &quot;QUEUED&quot;, &quot;DOWNLOADING&quot;, &quot;PAUSED&quot;, &quot;CANCELED&quot;, &quot;COMPLETED&quot;, &quot;FAILED&quot; };</webidl>
29549       <descriptive>
29550           <brief>
29551  An enumerator to indicate the state of a download operation.
29552           </brief>
29553          <description>
29554           <p>
29555 The following values are supported:
29556           </p>
29557           <ul>
29558             <li>
29559 QUEUED - Indicates that the download operation is listed in a queue.            </li>
29560             <li>
29561 DOWNLOADING - Indicates that the download operation is in progress.            </li>
29562             <li>
29563 PAUSED - Indicates that the download operation is in a paused state by user request.            </li>
29564             <li>
29565 CANCELED - Indicates that the download operation is canceled by user request.            </li>
29566             <li>
29567 COMPLETED - Indicates that the download operation is in a completed state.            </li>
29568             <li>
29569 FAILED - Indicates that the download operation has failed due to some reasons.            </li>
29570           </ul>
29571          </description>
29572           <version>
29573  2.0
29574           </version>
29575       </descriptive>
29576       <EnumValue stringvalue="QUEUED">
29577         <webidl> &quot;QUEUED</webidl>
29578       </EnumValue>
29579       <EnumValue stringvalue="DOWNLOADING">
29580         <webidl> &quot;DOWNLOADING</webidl>
29581       </EnumValue>
29582       <EnumValue stringvalue="PAUSED">
29583         <webidl> &quot;PAUSED</webidl>
29584       </EnumValue>
29585       <EnumValue stringvalue="CANCELED">
29586         <webidl> &quot;CANCELED</webidl>
29587       </EnumValue>
29588       <EnumValue stringvalue="COMPLETED">
29589         <webidl> &quot;COMPLETED</webidl>
29590       </EnumValue>
29591       <EnumValue stringvalue="FAILED">
29592         <webidl> &quot;FAILED</webidl>
29593       </EnumValue>
29594     </Enum>
29595     <Enum name="DownloadNetworkType" id="::Download::DownloadNetworkType">
29596       <webidl>    enum DownloadNetworkType { &quot;CELLULAR&quot;, &quot;WIFI&quot;, &quot;ALL&quot; };</webidl>
29597       <descriptive>
29598           <brief>
29599  An enumerator to indicate the network type.
29600           </brief>
29601          <description>
29602           <p>
29603 The following values are supported:
29604           </p>
29605           <ul>
29606             <li>
29607 CELLULAR - Indicates that the download operation is allowed in the cellular network only.            </li>
29608             <li>
29609 WIFI - Indicates that the download operation is allowed in the Wi-Fi network only.            </li>
29610             <li>
29611 ALL - Indicates that the download operation is allowed in all network types.            </li>
29612           </ul>
29613          </description>
29614           <version>
29615  2.1
29616           </version>
29617       </descriptive>
29618       <EnumValue stringvalue="CELLULAR">
29619         <webidl> &quot;CELLULAR</webidl>
29620       </EnumValue>
29621       <EnumValue stringvalue="WIFI">
29622         <webidl> &quot;WIFI</webidl>
29623       </EnumValue>
29624       <EnumValue stringvalue="ALL">
29625         <webidl> &quot;ALL</webidl>
29626       </EnumValue>
29627     </Enum>
29628     <Interface name="DownloadManagerObject" id="::Download::DownloadManagerObject">
29629       <webidl>    [NoInterfaceObject] interface DownloadManagerObject {
29630         readonly attribute <ref>DownloadManager</ref> download;
29631     };</webidl>
29632       <descriptive>
29633           <brief>
29634  This interface defines the default download manager that is instantiated by the <em>Tizen </em>object.
29635 There will be a <em>tizen.download </em>object that allows access to the functionality of the Download API.
29636           </brief>
29637           <version>
29638  2.0
29639           </version>
29640       </descriptive>
29641       <ExtendedAttributeList>
29642         <ExtendedAttribute name="NoInterfaceObject">
29643           <webidl>NoInterfaceObject</webidl>
29644         </ExtendedAttribute>
29645       </ExtendedAttributeList>
29646       <Attribute readonly="readonly" name="download" id="::Download::DownloadManagerObject::download">
29647         <webidl>        readonly attribute <ref>DownloadManager</ref> download;</webidl>
29648         <Type name="DownloadManager"/>
29649       </Attribute>
29650     </Interface>
29651     <Implements name1="Tizen" name2="DownloadManagerObject">
29652       <webidl>    <ref>Tizen</ref> implements <ref>DownloadManagerObject</ref>;</webidl>
29653     </Implements>
29654     <Interface name="DownloadRequest" id="::Download::DownloadRequest">
29655       <webidl>    [Constructor(DOMString url, optional DOMString? destination, optional DOMString? fileName, optional <ref>DownloadNetworkType</ref>? networkType, optional <ref>DownloadHTTPHeaderFields</ref>? httpHeader)]
29656     interface DownloadRequest {
29657         attribute DOMString url;
29658
29659         attribute DOMString? destination;
29660
29661         attribute DOMString? fileName;
29662
29663         attribute <ref>DownloadNetworkType</ref>? networkType;
29664
29665         attribute <ref>DownloadHTTPHeaderFields</ref>? httpHeader;
29666     };</webidl>
29667       <descriptive>
29668           <brief>
29669  This interface defines the download request object.
29670           </brief>
29671           <version>
29672  2.0
29673           </version>
29674       </descriptive>
29675       <ExtendedAttributeList>
29676         <ExtendedAttribute name="Constructor">
29677           <webidl>Constructor(DOMString url, optional DOMString? destination, optional DOMString? fileName, optional <ref>DownloadNetworkType</ref>? networkType, optional <ref>DownloadHTTPHeaderFields</ref>? httpHeader)</webidl>
29678           <ArgumentList>
29679             <Argument name="url">
29680               <Type type="DOMString"/>
29681             </Argument>
29682             <Argument optional="optional" name="destination">
29683               <Type type="DOMString" nullable="nullable"/>
29684             </Argument>
29685             <Argument optional="optional" name="fileName">
29686               <Type type="DOMString" nullable="nullable"/>
29687             </Argument>
29688             <Argument optional="optional" name="networkType">
29689               <Type name="DownloadNetworkType" nullable="nullable"/>
29690             </Argument>
29691             <Argument optional="optional" name="httpHeader">
29692               <Type name="DownloadHTTPHeaderFields" nullable="nullable"/>
29693             </Argument>
29694           </ArgumentList>
29695         </ExtendedAttribute>
29696       </ExtendedAttributeList>
29697       <Attribute name="url" id="::Download::DownloadRequest::url">
29698         <webidl>        attribute DOMString url;</webidl>
29699         <descriptive>
29700             <brief>
29701  An attribute to store the URL of the object to download.
29702             </brief>
29703             <version>
29704  2.0
29705             </version>
29706         </descriptive>
29707         <Type type="DOMString"/>
29708       </Attribute>
29709       <Attribute name="destination" id="::Download::DownloadRequest::destination">
29710         <webidl>        attribute DOMString? destination;</webidl>
29711         <descriptive>
29712             <brief>
29713  An attribute to store the folder path of the destination folder to which a requested file object will be downloaded.
29714             </brief>
29715            <description>
29716             <p>
29717 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>.
29718             </p>
29719             <p>
29720 The default value is an empty string.
29721             </p>
29722            </description>
29723             <version>
29724  2.0
29725             </version>
29726         </descriptive>
29727         <Type type="DOMString" nullable="nullable"/>
29728       </Attribute>
29729       <Attribute name="fileName" id="::Download::DownloadRequest::fileName">
29730         <webidl>        attribute DOMString? fileName;</webidl>
29731         <descriptive>
29732             <brief>
29733  An attribute to store the file name for the specified URL.
29734             </brief>
29735            <description>
29736             <p>
29737 If the file name is not given or an empty string, the original file name from URL is used.
29738             </p>
29739             <p>
29740 The default value is an empty string.
29741             </p>
29742            </description>
29743             <version>
29744  2.0
29745             </version>
29746         </descriptive>
29747         <Type type="DOMString" nullable="nullable"/>
29748       </Attribute>
29749       <Attribute name="networkType" id="::Download::DownloadRequest::networkType">
29750         <webidl>        attribute <ref>DownloadNetworkType</ref>? networkType;</webidl>
29751         <descriptive>
29752             <brief>
29753  An attribute to store the allowed network type.
29754             </brief>
29755            <description>
29756             <p>
29757 If the network type is not given, all network type are allowed.
29758             </p>
29759             <p>
29760 The default value is &quot;ALL&quot;.
29761             </p>
29762            </description>
29763             <version>
29764  2.1
29765             </version>
29766         </descriptive>
29767         <Type name="DownloadNetworkType" nullable="nullable"/>
29768       </Attribute>
29769       <Attribute name="httpHeader" id="::Download::DownloadRequest::httpHeader">
29770         <webidl>        attribute <ref>DownloadHTTPHeaderFields</ref>? httpHeader;</webidl>
29771         <descriptive>
29772             <brief>
29773  An attribute to store extra HTTP header fields.
29774             </brief>
29775            <description>
29776             <p>
29777 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>
29778             <p>
29779 The default value is an empty object.
29780             </p>
29781            </description>
29782             <Code> var req = new tizen.DownloadRequest(&quot;http://download.tizen.org/tools/README.txt&quot;);
29783  req.httpHeader[&quot;Pragma&quot;] = &quot;no-cache&quot;;
29784  req.httpHeader[&quot;Cookie&quot;] = &quot;version=1; Skin=new&quot;;
29785  req.httpHeader[&quot;X-Agent&quot;] = &quot;Tizen Sample App&quot;;
29786  </Code>
29787             <version>
29788  2.1
29789             </version>
29790         </descriptive>
29791         <Type name="DownloadHTTPHeaderFields" nullable="nullable"/>
29792       </Attribute>
29793     </Interface>
29794     <Interface name="DownloadManager" id="::Download::DownloadManager">
29795       <webidl>   [NoInterfaceObject] interface DownloadManager {
29796        long start(<ref>DownloadRequest</ref> downloadRequest,
29797                     optional <ref>DownloadCallback</ref>? downloadCallback) raises(<ref>WebAPIException</ref>);
29798
29799        void cancel(long downloadId) raises(<ref>WebAPIException</ref>);
29800
29801        void pause(long downloadId) raises(<ref>WebAPIException</ref>);
29802
29803        void resume(long downloadId) raises(<ref>WebAPIException</ref>);
29804
29805        <ref>DownloadState</ref> getState(long downloadId) raises(<ref>WebAPIException</ref>);
29806
29807        <ref>DownloadRequest</ref> getDownloadRequest(long downloadId) raises(<ref>WebAPIException</ref>);
29808
29809        DOMString getMIMEType(long downloadId) raises(<ref>WebAPIException</ref>);
29810
29811        void setListener(long downloadId, <ref>DownloadCallback</ref> downloadCallback) raises(<ref>WebAPIException</ref>);
29812    };</webidl>
29813       <descriptive>
29814           <brief>
29815  This interface handles requests for downloading. Each step of download operation will be informed through callbacks.
29816           </brief>
29817           <version>
29818  2.0
29819           </version>
29820       </descriptive>
29821       <ExtendedAttributeList>
29822         <ExtendedAttribute name="NoInterfaceObject">
29823           <webidl>NoInterfaceObject</webidl>
29824         </ExtendedAttribute>
29825       </ExtendedAttributeList>
29826       <Operation name="start" id="::Download::DownloadManager::start">
29827         <webidl>       long start(<ref>DownloadRequest</ref> downloadRequest,
29828                     optional <ref>DownloadCallback</ref>? downloadCallback) raises(<ref>WebAPIException</ref>);</webidl>
29829         <descriptive>
29830             <brief>
29831  Starts a download operation with the specified URL information.
29832             </brief>
29833             <version>
29834  2.0
29835             </version>
29836             <privilegelevel>
29837  public
29838             </privilegelevel>
29839             <privilege>
29840  http://tizen.org/privilege/download
29841             </privilege>
29842             <Code> var listener = {
29843    onprogress: function(id, receivedSize, totalSize) {
29844      console.log('Received with id: ' + id + ', ' + receivedSize + '/' + totalSize);
29845    },
29846    onpaused: function(id) {
29847      console.log('Paused with id: ' + id);
29848    },
29849    oncanceled: function(id) {
29850      console.log('Canceled with id: ' + id);
29851    },
29852    oncompleted: function(id, fullPath) {
29853      console.log('Completed with id: ' + id + ', full path: ' + fullPath);
29854    },
29855    onfailed: function(id, error) {
29856      console.log('Failed with id: ' + id + ', error name: ' + error.name);
29857    }
29858  };
29859
29860  // Starts downloading of the file from the Web with the corresponding callbacks.
29861  var downloadRequest = new tizen.DownloadRequest(&quot;http://download.tizen.org/tools/README.txt&quot;, &quot;documents&quot;);
29862  downloadId = tizen.download.start(downloadRequest, listener);
29863  </Code>
29864         </descriptive>
29865         <Type type="long">
29866           <descriptive>
29867               <description><p>
29868  long An identifier for each download operation.
29869               </p></description>
29870           </descriptive>
29871         </Type>
29872         <ArgumentList>
29873           <Argument name="downloadRequest">
29874             <descriptive>
29875                 <description><p>
29876  The URL and destination information of the object to download.
29877                 </p></description>
29878             </descriptive>
29879             <Type name="DownloadRequest"/>
29880           </Argument>
29881           <Argument optional="optional" name="downloadCallback">
29882             <descriptive>
29883                 <description><p>
29884  The method to invoke when the download state changes or an error occurs.
29885                 </p></description>
29886             </descriptive>
29887             <Type name="DownloadCallback" nullable="nullable"/>
29888           </Argument>
29889         </ArgumentList>
29890         <Raises>
29891           <RaiseException name="WebAPIException">
29892             <descriptive>
29893                 <description><p>
29894  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
29895                 </p></description>
29896                 <description><p>
29897  with error type NotSupportedError, if this feature is not supported.
29898                 </p></description>
29899                 <description><p>
29900  with error type InvalidValuesError, if any of the input parameters contain an invalid value.
29901                 </p></description>
29902                 <description><p>
29903  with error type SecurityError, if the application does not have the privilege to call this method.
29904                 </p></description>
29905                 <description><p>
29906  with error type UnknownError if any other error occurs.
29907                 </p></description>
29908             </descriptive>
29909           </RaiseException>
29910         </Raises>
29911       </Operation>
29912       <Operation name="cancel" id="::Download::DownloadManager::cancel">
29913         <webidl>       void cancel(long downloadId) raises(<ref>WebAPIException</ref>);</webidl>
29914         <descriptive>
29915             <brief>
29916  Cancels an ongoing download operation that is specified by the <em>downloadId</em> parameter.
29917             </brief>
29918             <version>
29919  2.0
29920             </version>
29921             <Code> // Cancels the ongoing download operation with the specified id.
29922  tizen.download.cancel(downloadId);
29923  </Code>
29924         </descriptive>
29925         <Type type="void"/>
29926         <ArgumentList>
29927           <Argument name="downloadId">
29928             <descriptive>
29929                 <description><p>
29930  The ID of the ongoing download operation to stop.
29931                 </p></description>
29932             </descriptive>
29933             <Type type="long"/>
29934           </Argument>
29935         </ArgumentList>
29936         <Raises>
29937           <RaiseException name="WebAPIException">
29938             <descriptive>
29939                 <description><p>
29940  with error type NotFoundError, if the identifier does not match any download operation in progress.
29941                 </p></description>
29942                 <description><p>
29943  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
29944                 </p></description>
29945                 <description><p>
29946  with error type NotSupportedError, if this feature is not supported.
29947                 </p></description>
29948                 <description><p>
29949  with error type InvalidValuesError, if any of the input parameters contain an invalid value.
29950                 </p></description>
29951                 <description><p>
29952  with error type UnknownError, if any other error occurs.
29953                 </p></description>
29954             </descriptive>
29955           </RaiseException>
29956         </Raises>
29957       </Operation>
29958       <Operation name="pause" id="::Download::DownloadManager::pause">
29959         <webidl>       void pause(long downloadId) raises(<ref>WebAPIException</ref>);</webidl>
29960         <descriptive>
29961             <brief>
29962  Pauses an ongoing download operation that is specified by the <em>downloadId</em> parameter.
29963 The paused download operation can be resumed later by the <em>resume()</em> method.
29964             </brief>
29965             <version>
29966  2.0
29967             </version>
29968             <Code> // Pauses the ongoing download operation with the specified id.
29969  tizen.download.pause(downloadId);
29970  </Code>
29971         </descriptive>
29972         <Type type="void"/>
29973         <ArgumentList>
29974           <Argument name="downloadId">
29975             <descriptive>
29976                 <description><p>
29977  The ID of the ongoing download operation to pause.
29978                 </p></description>
29979             </descriptive>
29980             <Type type="long"/>
29981           </Argument>
29982         </ArgumentList>
29983         <Raises>
29984           <RaiseException name="WebAPIException">
29985             <descriptive>
29986                 <description><p>
29987  with error type NotFoundError, if the identifier does not match any download operation in progress.
29988                 </p></description>
29989                 <description><p>
29990  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
29991                 </p></description>
29992                 <description><p>
29993  with error type NotSupportedError, if this feature is not supported.
29994                 </p></description>
29995                 <description><p>
29996  with error type InvalidValuesError, if any of the input parameters contain an invalid value.
29997                 </p></description>
29998                 <description><p>
29999  with error type UnknownError, if any other error occurs.
30000                 </p></description>
30001             </descriptive>
30002           </RaiseException>
30003         </Raises>
30004       </Operation>
30005       <Operation name="resume" id="::Download::DownloadManager::resume">
30006         <webidl>       void resume(long downloadId) raises(<ref>WebAPIException</ref>);</webidl>
30007         <descriptive>
30008             <brief>
30009  Resumes a paused download operation that is specified by the <em>downloadId</em> parameter.
30010             </brief>
30011             <version>
30012  2.0
30013             </version>
30014             <Code> // Resumes the paused download operation with the specified id.
30015  tizen.download.resume(downloadId);
30016  </Code>
30017         </descriptive>
30018         <Type type="void"/>
30019         <ArgumentList>
30020           <Argument name="downloadId">
30021             <descriptive>
30022                 <description><p>
30023  The ID of the paused download operation to be resume.
30024                 </p></description>
30025             </descriptive>
30026             <Type type="long"/>
30027           </Argument>
30028         </ArgumentList>
30029         <Raises>
30030           <RaiseException name="WebAPIException">
30031             <descriptive>
30032                 <description><p>
30033  with error type NotFoundError, if the identifier does not match any download operation in progress.
30034                 </p></description>
30035                 <description><p>
30036  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
30037                 </p></description>
30038                 <description><p>
30039  with error type NotSupportedError, if this feature is not supported.
30040                 </p></description>
30041                 <description><p>
30042  with error type InvalidValuesError, if any of the input parameters contain an invalid value.
30043                 </p></description>
30044                 <description><p>
30045  with error type UnknownError, if any other error occurs.
30046                 </p></description>
30047             </descriptive>
30048           </RaiseException>
30049         </Raises>
30050       </Operation>
30051       <Operation name="getState" id="::Download::DownloadManager::getState">
30052         <webidl>       <ref>DownloadState</ref> getState(long downloadId) raises(<ref>WebAPIException</ref>);</webidl>
30053         <descriptive>
30054             <brief>
30055  Gets the download state of an operation synchronously with the specified ID.
30056             </brief>
30057             <version>
30058  2.0
30059             </version>
30060             <Code> // Gets the state of the download operation with the given id.
30061  var state = tizen.download.getState(downloadId);
30062  </Code>
30063         </descriptive>
30064         <Type name="DownloadState">
30065           <descriptive>
30066               <description><p>
30067  DownloadState The current download state of the specified ID.
30068               </p></description>
30069           </descriptive>
30070         </Type>
30071         <ArgumentList>
30072           <Argument name="downloadId">
30073             <descriptive>
30074                 <description><p>
30075  The ID to get the current state of download operation.
30076                 </p></description>
30077             </descriptive>
30078             <Type type="long"/>
30079           </Argument>
30080         </ArgumentList>
30081         <Raises>
30082           <RaiseException name="WebAPIException">
30083             <descriptive>
30084                 <description><p>
30085  with error type NotFoundError, if the identifier does not match any download operation in progress.
30086                 </p></description>
30087                 <description><p>
30088  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
30089                 </p></description>
30090                 <description><p>
30091  with error type NotSupportedError, if this feature is not supported.
30092                 </p></description>
30093                 <description><p>
30094  with error type InvalidValuesError, if any of the input parameters contain an invalid value.
30095                 </p></description>
30096                 <description><p>
30097  with error type UnknownError, if any other error occurs.
30098                 </p></description>
30099             </descriptive>
30100           </RaiseException>
30101         </Raises>
30102       </Operation>
30103       <Operation name="getDownloadRequest" id="::Download::DownloadManager::getDownloadRequest">
30104         <webidl>       <ref>DownloadRequest</ref> getDownloadRequest(long downloadId) raises(<ref>WebAPIException</ref>);</webidl>
30105         <descriptive>
30106             <brief>
30107  Gets the DownloadRequest object from a given id.
30108             </brief>
30109             <version>
30110  2.0
30111             </version>
30112             <Code> // Gets the download request information with the given id.
30113  var downloadRequest = tizen.download.getDownloadRequest(downloadId);
30114  </Code>
30115         </descriptive>
30116         <Type name="DownloadRequest">
30117           <descriptive>
30118               <description><p>
30119  DownloadRequest The download request information of the given id.
30120               </p></description>
30121           </descriptive>
30122         </Type>
30123         <ArgumentList>
30124           <Argument name="downloadId">
30125             <descriptive>
30126                 <description><p>
30127  The ID to get the download request information.
30128                 </p></description>
30129             </descriptive>
30130             <Type type="long"/>
30131           </Argument>
30132         </ArgumentList>
30133         <Raises>
30134           <RaiseException name="WebAPIException">
30135             <descriptive>
30136                 <description><p>
30137  with error type NotFoundError, if the identifier does not match
30138 any download operation in progress.
30139                 </p></description>
30140                 <description><p>
30141  with error type TypeMismatchError, if the input parameter is not
30142 compatible with the expected type.
30143                 </p></description>
30144                 <description><p>
30145  with error type NotSupportedError, if this feature is not supported.
30146                 </p></description>
30147                 <description><p>
30148  with error type InvalidValuesError, if any of the input
30149 parameters contain an invalid value.
30150                 </p></description>
30151                 <description><p>
30152  with error type UnknownError in any other error case.
30153                 </p></description>
30154             </descriptive>
30155           </RaiseException>
30156         </Raises>
30157       </Operation>
30158       <Operation name="getMIMEType" id="::Download::DownloadManager::getMIMEType">
30159         <webidl>       DOMString getMIMEType(long downloadId) raises(<ref>WebAPIException</ref>);</webidl>
30160         <descriptive>
30161             <brief>
30162  Gets the MIME type of the downloaded file.
30163             </brief>
30164             <remark>
30165  This function will return a valid MIME type when the download operation has been started
30166 and successfully retrieved the file header.
30167             </remark>
30168             <version>
30169  2.0
30170             </version>
30171             <Code> // Get the MIME type of the download operation with the given id.
30172  var MIMEtype = tizen.download.getMIMEType(downloadId);
30173  </Code>
30174         </descriptive>
30175         <Type type="DOMString">
30176           <descriptive>
30177               <description><p>
30178  DOMString The MIME type of the downloaded file.
30179               </p></description>
30180           </descriptive>
30181         </Type>
30182         <ArgumentList>
30183           <Argument name="downloadId">
30184             <descriptive>
30185                 <description><p>
30186  The ID to get the MIME type information.
30187                 </p></description>
30188             </descriptive>
30189             <Type type="long"/>
30190           </Argument>
30191         </ArgumentList>
30192         <Raises>
30193           <RaiseException name="WebAPIException">
30194             <descriptive>
30195                 <description><p>
30196  with error type NotFoundError, if the identifier does not match
30197 any download operation in progress.
30198                 </p></description>
30199                 <description><p>
30200  with error type TypeMismatchError, if the input parameter is not
30201 compatible with the expected type.
30202                 </p></description>
30203                 <description><p>
30204  with error type NotSupportedError, if this feature is not supported.
30205                 </p></description>
30206                 <description><p>
30207  with error type InvalidValuesError, if any of the input
30208 parameters contain an invalid value.
30209                 </p></description>
30210                 <description><p>
30211  with error type UnknownError in any other error case.
30212                 </p></description>
30213             </descriptive>
30214           </RaiseException>
30215         </Raises>
30216       </Operation>
30217       <Operation name="setListener" id="::Download::DownloadManager::setListener">
30218         <webidl>       void setListener(long downloadId, <ref>DownloadCallback</ref> downloadCallback) raises(<ref>WebAPIException</ref>);</webidl>
30219         <descriptive>
30220             <brief>
30221  Sets the download callback to the download operation of given id.
30222 It's possible to change or register the listener of download operation using the saved id.
30223             </brief>
30224             <version>
30225  2.0
30226             </version>
30227             <Code> var listener = {
30228    onprogress: function(id, receivedSize, totalSize) {
30229      console.log('Received with id: ' + id + ', ' + receivedSize + '/' + totalSize);
30230    },
30231    onpaused: function(id) {
30232      console.log('Paused with id: ' + id);
30233    },
30234    oncanceled: function(id) {
30235      console.log('Canceled with id: ' + id);
30236    },
30237    oncompleted: function(id, fileName) {
30238      console.log('Completed with id: ' + id + ', file name: ' + fileName);
30239    },
30240    onfailed: function(id, error) {
30241      console.log('Failed with id: ' + id + ', error name: ' + error.name);
30242    }
30243  };
30244
30245  // Start downloading the html file on the web with the corresponding callbacks.
30246  var downloadRequest = new tizen.DownloadRequest(&quot;http://download.tizen.org/tools/README.txt&quot;, &quot;documents&quot;);
30247  downloadId = tizen.download.start(downloadRequest);
30248
30249  // Add the listener.
30250  tizen.download.setListener(downloadId, listener);
30251  </Code>
30252         </descriptive>
30253         <Type type="void"/>
30254         <ArgumentList>
30255           <Argument name="downloadId">
30256             <descriptive>
30257                 <description><p>
30258  The ID to set the download callback.
30259                 </p></description>
30260             </descriptive>
30261             <Type type="long"/>
30262           </Argument>
30263           <Argument name="downloadCallback">
30264             <descriptive>
30265                 <description><p>
30266  The method to invoke when the download state changes or an error occurs.
30267                 </p></description>
30268             </descriptive>
30269             <Type name="DownloadCallback"/>
30270           </Argument>
30271         </ArgumentList>
30272         <Raises>
30273           <RaiseException name="WebAPIException">
30274             <descriptive>
30275                 <description><p>
30276  with error type NotFoundError, if the identifier does not match
30277 any download operation in progress.
30278                 </p></description>
30279                 <description><p>
30280  with error type TypeMismatchError, if the input parameter is not
30281 compatible with the expected type.
30282                 </p></description>
30283                 <description><p>
30284  with error type NotSupportedError, if this feature is not supported.
30285                 </p></description>
30286                 <description><p>
30287  with error type InvalidValuesError, if any of the input
30288 parameters contain an invalid value.
30289                 </p></description>
30290                 <description><p>
30291  with error type UnknownError in any other error case.
30292                 </p></description>
30293             </descriptive>
30294           </RaiseException>
30295         </Raises>
30296       </Operation>
30297     </Interface>
30298     <Interface name="DownloadCallback" id="::Download::DownloadCallback">
30299       <webidl>   [Callback, NoInterfaceObject] interface DownloadCallback {
30300        void onprogress(long downloadId, unsigned long long receivedSize, unsigned long long totalSize);
30301
30302        void onpaused(long downloadId);
30303
30304        void oncanceled(long downloadId);
30305
30306        void oncompleted(long downloadId, DOMString fullPath);
30307
30308        void onfailed(long downloadId, <ref>WebAPIError</ref> error);
30309    };</webidl>
30310       <descriptive>
30311           <brief>
30312  This interface defines notification callbacks for the download state change or progress.
30313           </brief>
30314           <version>
30315  2.0
30316           </version>
30317       </descriptive>
30318       <ExtendedAttributeList>
30319         <ExtendedAttribute name="Callback">
30320           <webidl>Callback</webidl>
30321         </ExtendedAttribute>
30322         <ExtendedAttribute name="NoInterfaceObject">
30323           <webidl> NoInterfaceObject</webidl>
30324         </ExtendedAttribute>
30325       </ExtendedAttributeList>
30326       <Operation name="onprogress" id="::Download::DownloadCallback::onprogress">
30327         <webidl>       void onprogress(long downloadId, unsigned long long receivedSize, unsigned long long totalSize);</webidl>
30328         <descriptive>
30329             <brief>
30330  Called when a download is successful and it called multiple times as the download progresses.
30331 The interval between <em>onprogress()</em> callback is platform-dependent. When the download is started, the <em>receivedSize </em>can be <var>0</var>.
30332             </brief>
30333             <version>
30334  2.0
30335             </version>
30336         </descriptive>
30337         <Type type="void"/>
30338         <ArgumentList>
30339           <Argument name="downloadId">
30340             <descriptive>
30341                 <description><p>
30342  The ID of the corresponding download operation.
30343                 </p></description>
30344             </descriptive>
30345             <Type type="long"/>
30346           </Argument>
30347           <Argument name="receivedSize">
30348             <descriptive>
30349                 <description><p>
30350  The size of data received in bytes.
30351                 </p></description>
30352             </descriptive>
30353             <Type type="unsigned long long"/>
30354           </Argument>
30355           <Argument name="totalSize">
30356             <descriptive>
30357                 <description><p>
30358  The total size of data to receive in bytes.
30359                 </p></description>
30360             </descriptive>
30361             <Type type="unsigned long long"/>
30362           </Argument>
30363         </ArgumentList>
30364       </Operation>
30365       <Operation name="onpaused" id="::Download::DownloadCallback::onpaused">
30366         <webidl>       void onpaused(long downloadId);</webidl>
30367         <descriptive>
30368             <brief>
30369  Called when the download operation is paused by the <em>pause() </em>method.
30370             </brief>
30371             <version>
30372  2.0
30373             </version>
30374         </descriptive>
30375         <Type type="void"/>
30376         <ArgumentList>
30377           <Argument name="downloadId">
30378             <descriptive>
30379                 <description><p>
30380  The ID of the corresponding download operation.
30381                 </p></description>
30382             </descriptive>
30383             <Type type="long"/>
30384           </Argument>
30385         </ArgumentList>
30386       </Operation>
30387       <Operation name="oncanceled" id="::Download::DownloadCallback::oncanceled">
30388         <webidl>       void oncanceled(long downloadId);</webidl>
30389         <descriptive>
30390             <brief>
30391  Called when download is canceled by the <em>cancel() </em>method.
30392             </brief>
30393             <version>
30394  2.0
30395             </version>
30396         </descriptive>
30397         <Type type="void"/>
30398         <ArgumentList>
30399           <Argument name="downloadId">
30400             <descriptive>
30401                 <description><p>
30402  The ID of the corresponding download operation.
30403                 </p></description>
30404             </descriptive>
30405             <Type type="long"/>
30406           </Argument>
30407         </ArgumentList>
30408       </Operation>
30409       <Operation name="oncompleted" id="::Download::DownloadCallback::oncompleted">
30410         <webidl>       void oncompleted(long downloadId, DOMString fullPath);</webidl>
30411         <descriptive>
30412             <brief>
30413  Called when the download operation is completed with the final full path.
30414 If the same file name already exists in the destination, it is changed according to the platform policy and delivered in this callback.
30415             </brief>
30416             <version>
30417  2.0
30418             </version>
30419         </descriptive>
30420         <Type type="void"/>
30421         <ArgumentList>
30422           <Argument name="downloadId">
30423             <descriptive>
30424                 <description><p>
30425  The ID of the corresponding download operation.
30426                 </p></description>
30427             </descriptive>
30428             <Type type="long"/>
30429           </Argument>
30430           <Argument name="fullPath">
30431             <descriptive>
30432                 <description><p>
30433  The final full path for the downloaded file.
30434                 </p></description>
30435             </descriptive>
30436             <Type type="DOMString"/>
30437           </Argument>
30438         </ArgumentList>
30439       </Operation>
30440       <Operation name="onfailed" id="::Download::DownloadCallback::onfailed">
30441         <webidl>       void onfailed(long downloadId, <ref>WebAPIError</ref> error);</webidl>
30442         <descriptive>
30443             <brief>
30444  Called when the download operation fails.
30445             </brief>
30446             <version>
30447  2.0
30448             </version>
30449         </descriptive>
30450         <Type type="void"/>
30451         <ArgumentList>
30452           <Argument name="downloadId">
30453             <descriptive>
30454                 <description><p>
30455  The ID of the corresponding download operation.
30456                 </p></description>
30457             </descriptive>
30458             <Type type="long"/>
30459           </Argument>
30460           <Argument name="error">
30461             <descriptive>
30462                 <description><p>
30463  The reason for the download failure.
30464                 </p></description>
30465             </descriptive>
30466             <Type name="WebAPIError"/>
30467           </Argument>
30468         </ArgumentList>
30469       </Operation>
30470     </Interface>
30471   </Module>
30472   <Module name="Filesystem" id="::Filesystem">
30473     <webidl>module Filesystem {
30474   enum FileMode { &quot;r&quot;, &quot;rw&quot;, &quot;w&quot;, &quot;a&quot; };
30475   
30476   enum FileSystemStorageType { &quot;INTERNAL&quot;, &quot;EXTERNAL&quot; };
30477   
30478   enum FileSystemStorageState { &quot;MOUNTED&quot;, &quot;REMOVED&quot;, &quot;UNMOUNTABLE&quot; };
30479   
30480   [NoInterfaceObject] interface FileSystemManagerObject {
30481     readonly attribute <ref>FileSystemManager</ref> filesystem;
30482   };
30483   <ref>Tizen</ref> implements <ref>FileSystemManagerObject</ref>;
30484
30485   [NoInterfaceObject] interface FileSystemManager {
30486     readonly attribute long maxPathLength;
30487
30488     void resolve(DOMString location,
30489                  <ref>FileSuccessCallback</ref> onsuccess,
30490                  optional <ref>ErrorCallback</ref>? onerror,
30491                  optional <ref>FileMode</ref>? mode) raises(<ref>WebAPIException</ref>);
30492
30493     void getStorage(DOMString label,
30494                     <ref>FileSystemStorageSuccessCallback</ref> onsuccess,
30495                     optional <ref>ErrorCallback</ref>? onerror) raises(<ref>WebAPIException</ref>);
30496
30497     void listStorages(<ref>FileSystemStorageArraySuccessCallback</ref> onsuccess,
30498                       optional <ref>ErrorCallback</ref>? onerror) raises(<ref>WebAPIException</ref>);
30499
30500     long addStorageStateChangeListener(<ref>FileSystemStorageSuccessCallback</ref> onsuccess,
30501                                        optional <ref>ErrorCallback</ref>? onerror) raises(<ref>WebAPIException</ref>);
30502
30503     void removeStorageStateChangeListener(long watchId) raises(<ref>WebAPIException</ref>);
30504   };
30505
30506   [NoInterfaceObject] interface FileSystemStorage {
30507     readonly attribute DOMString label;
30508
30509     readonly attribute <ref>FileSystemStorageType</ref> type;
30510
30511     readonly attribute <ref>FileSystemStorageState</ref> state;
30512   };
30513
30514   [NoInterfaceObject] interface File {
30515     readonly attribute <ref>File</ref>? parent;
30516
30517     readonly attribute boolean readOnly;
30518
30519     readonly attribute boolean isFile;
30520
30521     readonly attribute boolean isDirectory;
30522
30523     readonly attribute Date? created;
30524
30525     readonly attribute Date? modified;
30526
30527     readonly attribute DOMString path;
30528
30529     readonly attribute DOMString name;
30530
30531     readonly attribute DOMString fullPath;
30532
30533     readonly attribute unsigned long long fileSize;
30534
30535     readonly attribute long length;
30536
30537     DOMString toURI() raises(<ref>WebAPIException</ref>);
30538
30539     void listFiles(<ref>FileArraySuccessCallback</ref> onsuccess,
30540                    optional <ref>ErrorCallback</ref>? onerror,
30541                    optional <ref>FileFilter</ref>? filter) raises(<ref>WebAPIException</ref>);
30542
30543     void openStream(<ref>FileMode</ref> mode,
30544                     <ref>FileStreamSuccessCallback</ref> onsuccess,
30545                     optional <ref>ErrorCallback</ref>? onerror,
30546                     optional DOMString? encoding) raises(<ref>WebAPIException</ref>);
30547
30548     void readAsText(<ref>FileStringSuccessCallback</ref> onsuccess,
30549                     optional <ref>ErrorCallback</ref>? onerror,
30550                     optional DOMString? encoding) raises(<ref>WebAPIException</ref>);
30551
30552     void copyTo(DOMString originFilePath,
30553                 DOMString destinationFilePath,
30554                 boolean overwrite,
30555                 optional <ref>SuccessCallback</ref>? onsuccess,
30556                 optional <ref>ErrorCallback</ref>? onerror) raises(<ref>WebAPIException</ref>);
30557
30558     void moveTo(DOMString originFilePath,
30559                 DOMString destinationFilePath,
30560                 boolean overwrite,
30561                 optional <ref>SuccessCallback</ref>? onsuccess,
30562                 optional <ref>ErrorCallback</ref>? onerror) raises(<ref>WebAPIException</ref>);
30563
30564     <ref>File</ref> createDirectory(DOMString dirPath) raises(<ref>WebAPIException</ref>);
30565
30566     <ref>File</ref> createFile(DOMString relativeFilePath) raises(<ref>WebAPIException</ref>);
30567
30568     <ref>File</ref> resolve(DOMString filePath) raises(<ref>WebAPIException</ref>);
30569
30570     void deleteDirectory(DOMString directoryPath,
30571                          boolean recursive,
30572                          optional <ref>SuccessCallback</ref>? onsuccess,
30573                          optional <ref>ErrorCallback</ref>? onerror) raises(<ref>WebAPIException</ref>);
30574
30575     void deleteFile(DOMString filePath,
30576                     optional <ref>SuccessCallback</ref>? onsuccess,
30577                     optional <ref>ErrorCallback</ref>? onerror) raises(<ref>WebAPIException</ref>);
30578   };
30579
30580
30581   dictionary FileFilter {
30582     DOMString name;
30583
30584     Date startModified;
30585
30586     Date endModified;
30587
30588     Date startCreated;
30589
30590     Date endCreated;
30591   };
30592
30593   [NoInterfaceObject] interface FileStream {
30594     readonly attribute boolean eof;
30595
30596     attribute long position setraises(<ref>WebAPIException</ref>);
30597
30598     readonly attribute long bytesAvailable;
30599
30600     void close();
30601
30602     DOMString read(long charCount) raises(<ref>WebAPIException</ref>);
30603
30604     octet[] readBytes(long byteCount) raises(<ref>WebAPIException</ref>);
30605
30606     DOMString readBase64(long byteCount) raises(<ref>WebAPIException</ref>);
30607
30608     void write(DOMString stringData) raises(<ref>WebAPIException</ref>);
30609
30610     void writeBytes(octet[] byteData) raises(<ref>WebAPIException</ref>);
30611
30612     void writeBase64(DOMString base64Data) raises(<ref>WebAPIException</ref>);
30613   };
30614
30615   [Callback=FunctionOnly, NoInterfaceObject] interface FileSuccessCallback {
30616     void onsuccess(<ref>File</ref> file);
30617   };
30618
30619   [Callback=FunctionOnly, NoInterfaceObject] interface FileSystemStorageArraySuccessCallback {
30620     void onsuccess(<ref>FileSystemStorage</ref>[] storages);
30621   };
30622
30623   [Callback=FunctionOnly, NoInterfaceObject] interface FileSystemStorageSuccessCallback {
30624     void onsuccess(<ref>FileSystemStorage</ref> storage);
30625   };
30626
30627   [Callback=FunctionOnly, NoInterfaceObject] interface FileStringSuccessCallback {
30628     void onsuccess(DOMString fileStr);
30629   };
30630
30631   [Callback=FunctionOnly, NoInterfaceObject] interface FileStreamSuccessCallback {
30632     void onsuccess(<ref>FileStream</ref> filestream);
30633   };
30634
30635   [Callback=FunctionOnly, NoInterfaceObject] interface FileArraySuccessCallback {
30636     void onsuccess(<ref>File</ref>[] files);
30637   };
30638 };</webidl>
30639     <descriptive>
30640         <brief>
30641  This API provides access to a device's filesystem.
30642         </brief>
30643        <description>
30644         <p>
30645 The filesystem is represented as an abstract collection of disjointed filesystem virtual
30646 root locations, each corresponding to a specific location in the device
30647 filesystem. The filesystem API exposes the hierarchies below these root
30648 locations as a single virtual filesystem, but provides no access to other
30649 parts of the device filesystem.
30650         </p>
30651         <p>
30652 Each virtual root has a string name. Each file or directory within the virtual
30653 filesystem is addressed using a fully-qualified path of the form:
30654 <em>&#60;root name&#62;/&#60;path&#62;</em> where <em>&#60;rootname&#62;</em> is
30655 the name of the virtual root and <em>&#60;path&#62;</em> is the path to the file or
30656 directory relative to that root.
30657         </p>
30658         <p>
30659 The following virtual roots MUST be supported:
30660         </p>
30661         <ul>
30662           <li>
30663 images: the images location           </li>
30664           <li>
30665 videos: the videos location           </li>
30666           <li>
30667 music: the sounds location           </li>
30668           <li>
30669 documents: the documents location           </li>
30670           <li>
30671 downloads: the location for downloaded items           </li>
30672           <li>
30673 ringtones: the location for ringtones (read-only location)           </li>
30674           <li>
30675 wgt-package: the widget package location (read-only location)           </li>
30676           <li>
30677 wgt-private: the widget private storage           </li>
30678           <li>
30679 wgt-private-tmp: the widget private volatile storage area          </li>
30680         </ul>
30681         <p>
30682 The file URI path is also supported. if you want to access other paths out of virtual root, 
30683 for example '/tmp/', 'file:///tmp' could be used as location parameter.
30684         </p>
30685         <p>
30686 To access specific locations from those specified above, a file handle
30687 must be retrieved using the filesystem.resolve call.
30688         </p>
30689         <p>
30690 A file handle represents either a file or a directory. For a file, the
30691 isFile attribute is <em>true</em>. For a directory, the isDirectory attribute
30692 is <em>true</em>. A file can be opened for read and write operations, using a
30693 FileStream handle. A list of files and sub-directories can be obtained from a
30694 directory and a resolve method exists to resolve files or sub-directories
30695 more conveniently than processing directory listings.
30696         </p>
30697         <p>
30698 The implementation MUST support the use of the following
30699 characters in file names:
30700         </p>
30701         <ul>
30702           <li>
30703 Letters (azAZ)          </li>
30704           <li>
30705 Numbers (0-9)          </li>
30706           <li>
30707 Blank spaces          </li>
30708           <li>
30709 Underscores (&quot;_&quot;)          </li>
30710           <li>
30711 Hyphens (&quot;-&quot;)          </li>
30712           <li>
30713 Periods (&quot;.&quot;)          </li>
30714         </ul>
30715         <p>
30716 The implementation MAY support additional characters in file names,
30717 depending on platform support.
30718         </p>
30719         <p>
30720 The implementation MAY forbid the use of additional characters in file
30721 names, depending on the platform. The use of the path separator &quot;/&quot;
30722 in file names MUST NOT be allowed. The &quot;/&quot; character is used as the (path)
30723 component separator.
30724         </p>
30725         <p>
30726 Some other file name and path characteristics are platform-dependent,
30727 for example, maximum path length, file name length, case sensitivity, additional
30728 character support, etc. Therefore, it is recommended that you avoid any dependency
30729 on aspects that cannot be supported across many platforms.
30730         </p>
30731         <p>
30732 When a path is used to interact with the underlying filesystem,
30733 the encoding used for the file path SHOULD be the platform default.
30734         </p>
30735         <p>
30736 For more information on the Filesystem features, see <a href="../../org.tizen.web.appprogramming/html/guide/io_guide/filesystem.htm">File System Guide</a>.
30737         </p>
30738        </description>
30739         <version>
30740  1.0
30741         </version>
30742     </descriptive>
30743     <Enum name="FileMode" id="::Filesystem::FileMode">
30744       <webidl>  enum FileMode { &quot;r&quot;, &quot;rw&quot;, &quot;w&quot;, &quot;a&quot; };</webidl>
30745       <descriptive>
30746           <brief>
30747  The file mode provided when opening.
30748           </brief>
30749          <description>
30750           <p>
30751 Value &quot;r&quot; to obtain read-only access, &quot;rw&quot; to obtain read and write
30752 access, &quot;w&quot; to obtain write access and &quot;a&quot; for appending.
30753           </p>
30754          </description>
30755           <version>
30756  1.0
30757           </version>
30758       </descriptive>
30759       <EnumValue stringvalue="r">
30760         <webidl> &quot;r</webidl>
30761       </EnumValue>
30762       <EnumValue stringvalue="rw">
30763         <webidl> &quot;rw</webidl>
30764       </EnumValue>
30765       <EnumValue stringvalue="w">
30766         <webidl> &quot;w</webidl>
30767       </EnumValue>
30768       <EnumValue stringvalue="a">
30769         <webidl> &quot;a</webidl>
30770       </EnumValue>
30771     </Enum>
30772     <Enum name="FileSystemStorageType" id="::Filesystem::FileSystemStorageType">
30773       <webidl>  enum FileSystemStorageType { &quot;INTERNAL&quot;, &quot;EXTERNAL&quot; };</webidl>
30774       <descriptive>
30775           <brief>
30776  The type of storage.
30777           </brief>
30778          <description>
30779           <ul>
30780             <li>
30781 INTERNAL: Internal storage is storage that cannot be removed, such as a
30782 flash memory.            </li>
30783             <li>
30784 EXTERNAL: External storage is removable storage, such as a USB drive or
30785 memory cards.            </li>
30786           </ul>
30787          </description>
30788           <version>
30789  1.0
30790           </version>
30791       </descriptive>
30792       <EnumValue stringvalue="INTERNAL">
30793         <webidl> &quot;INTERNAL</webidl>
30794       </EnumValue>
30795       <EnumValue stringvalue="EXTERNAL">
30796         <webidl> &quot;EXTERNAL</webidl>
30797       </EnumValue>
30798     </Enum>
30799     <Enum name="FileSystemStorageState" id="::Filesystem::FileSystemStorageState">
30800       <webidl>  enum FileSystemStorageState { &quot;MOUNTED&quot;, &quot;REMOVED&quot;, &quot;UNMOUNTABLE&quot; };</webidl>
30801       <descriptive>
30802           <brief>
30803  The state of the storage.
30804           </brief>
30805          <description>
30806           <ul>
30807             <li>
30808 MOUNTED: The device is mounted and can be browsed.            </li>
30809             <li>
30810 REMOVED: The device was removed. This states only applies to external drives.            </li>
30811             <li>
30812 UNMOUNTABLE: The device cannot be mounted due to an error.            </li>
30813           </ul>
30814          </description>
30815           <version>
30816  1.0
30817           </version>
30818       </descriptive>
30819       <EnumValue stringvalue="MOUNTED">
30820         <webidl> &quot;MOUNTED</webidl>
30821       </EnumValue>
30822       <EnumValue stringvalue="REMOVED">
30823         <webidl> &quot;REMOVED</webidl>
30824       </EnumValue>
30825       <EnumValue stringvalue="UNMOUNTABLE">
30826         <webidl> &quot;UNMOUNTABLE</webidl>
30827       </EnumValue>
30828     </Enum>
30829     <Interface name="FileSystemManagerObject" id="::Filesystem::FileSystemManagerObject">
30830       <webidl>  [NoInterfaceObject] interface FileSystemManagerObject {
30831     readonly attribute <ref>FileSystemManager</ref> filesystem;
30832   };</webidl>
30833       <descriptive>
30834           <brief>
30835  Defines what is instantiated in the tizen object.
30836           </brief>
30837          <description>
30838           <p>
30839 There will be a tizen.filesystem object that allows accessing the
30840 functionality of the filesystem API.
30841           </p>
30842          </description>
30843           <version>
30844  1.0
30845           </version>
30846       </descriptive>
30847       <ExtendedAttributeList>
30848         <ExtendedAttribute name="NoInterfaceObject">
30849           <webidl>NoInterfaceObject</webidl>
30850         </ExtendedAttribute>
30851       </ExtendedAttributeList>
30852       <Attribute readonly="readonly" name="filesystem" id="::Filesystem::FileSystemManagerObject::filesystem">
30853         <webidl>    readonly attribute <ref>FileSystemManager</ref> filesystem;</webidl>
30854         <Type name="FileSystemManager"/>
30855       </Attribute>
30856     </Interface>
30857     <Implements name1="Tizen" name2="FileSystemManagerObject">
30858       <webidl>  <ref>Tizen</ref> implements <ref>FileSystemManagerObject</ref>;</webidl>
30859     </Implements>
30860     <Interface name="FileSystemManager" id="::Filesystem::FileSystemManager">
30861       <webidl>  [NoInterfaceObject] interface FileSystemManager {
30862     readonly attribute long maxPathLength;
30863
30864     void resolve(DOMString location,
30865                  <ref>FileSuccessCallback</ref> onsuccess,
30866                  optional <ref>ErrorCallback</ref>? onerror,
30867                  optional <ref>FileMode</ref>? mode) raises(<ref>WebAPIException</ref>);
30868
30869     void getStorage(DOMString label,
30870                     <ref>FileSystemStorageSuccessCallback</ref> onsuccess,
30871                     optional <ref>ErrorCallback</ref>? onerror) raises(<ref>WebAPIException</ref>);
30872
30873     void listStorages(<ref>FileSystemStorageArraySuccessCallback</ref> onsuccess,
30874                       optional <ref>ErrorCallback</ref>? onerror) raises(<ref>WebAPIException</ref>);
30875
30876     long addStorageStateChangeListener(<ref>FileSystemStorageSuccessCallback</ref> onsuccess,
30877                                        optional <ref>ErrorCallback</ref>? onerror) raises(<ref>WebAPIException</ref>);
30878
30879     void removeStorageStateChangeListener(long watchId) raises(<ref>WebAPIException</ref>);
30880   };</webidl>
30881       <descriptive>
30882           <brief>
30883  The file system manager interface that provides access to the filesystem API.
30884           </brief>
30885          <description>
30886           <p>
30887 This manager exposes the filesystem base API, and provides functionality, such as
30888 determining root and default locations, resolving a given location
30889 into a file handle, and registering filesystem listeners for
30890 filesystem events.
30891           </p>
30892          </description>
30893           <version>
30894  1.0
30895           </version>
30896           <Code> var documentsDir;
30897  function onsuccess(files) {
30898    for(var i = 0; i &#60; files.length; i++) {
30899      console.log(&quot;File Name is &quot; + files[i].name); // displays file name
30900    }
30901
30902    var testFile = documentsDir.createFile(&quot;test.txt&quot;);
30903
30904    if (testFile != null) {
30905      testFile.openStream(
30906        &quot;w&quot;,
30907        function(fs){
30908          fs.write(&quot;HelloWorld&quot;);
30909          fs.close();
30910        }, function(e){
30911          console.log(&quot;Error &quot; + e.message);
30912        }, &quot;UTF-8&quot;
30913      );
30914    }
30915  }
30916
30917  function onerror(error) {
30918    console.log(&quot;The error &quot; + error.message + &quot; occurred when listing the files in the selected folder&quot;);
30919  }
30920
30921  tizen.filesystem.resolve(
30922    'documents', 
30923    function(dir){
30924      documentsDir = dir;
30925      dir.listFiles(onsuccess, onerror);
30926    }, function(e){
30927      console.log(&quot;Error&quot; + e.message);
30928    }, &quot;rw&quot;
30929  );
30930  </Code>
30931       </descriptive>
30932       <ExtendedAttributeList>
30933         <ExtendedAttribute name="NoInterfaceObject">
30934           <webidl>NoInterfaceObject</webidl>
30935         </ExtendedAttribute>
30936       </ExtendedAttributeList>
30937       <Attribute readonly="readonly" name="maxPathLength" id="::Filesystem::FileSystemManager::maxPathLength">
30938         <webidl>    readonly attribute long maxPathLength;</webidl>
30939         <descriptive>
30940             <brief>
30941  Contains the platform-dependent maximum path length.
30942             </brief>
30943             <version>
30944  1.0
30945             </version>
30946             <Code> console.log(&quot;The maximum path length is &quot; + tizen.filesystem.maxPathLength);
30947  </Code>
30948         </descriptive>
30949         <Type type="long"/>
30950       </Attribute>
30951       <Operation name="resolve" id="::Filesystem::FileSystemManager::resolve">
30952         <webidl>    void resolve(DOMString location,
30953                  <ref>FileSuccessCallback</ref> onsuccess,
30954                  optional <ref>ErrorCallback</ref>? onerror,
30955                  optional <ref>FileMode</ref>? mode) raises(<ref>WebAPIException</ref>);</webidl>
30956         <descriptive>
30957             <brief>
30958  Resolves a location to a file handle.
30959             </brief>
30960            <description>
30961             <p>
30962 It validates and resolves the given location to a file handle.
30963 If the operation completes successfully, the handle is returned
30964 in the FileSuccessCallback.
30965 A valid location is prefixed with a valid root or
30966 default location and must address an existing,
30967 accessible file or directory.
30968             </p>
30969             <p>
30970 A location can contain virtual path like (<var>documents/some_file.txt</var>)
30971 or it can be a file's URI (<var>file:///my_strange_path/some_file.png</var>).
30972             </p>
30973             <p>
30974 The list of root locations that MUST be supported by a compliant
30975 implementation are:
30976             </p>
30977             <ul>
30978               <li>
30979 documents: Describes the default folder in which text documents
30980 (such as pdf, doc...) are stored by default in the device. For example, in some
30981 platforms it corresponds to the &quot;My Documents&quot; folder.              </li>
30982               <li>
30983 images: Describes the default folder in which still images, like
30984 pictures (such as jpg, gif, png, etc.), are stored in the
30985 device by default. For example, in some platforms it corresponds to the &quot;My Images&quot;
30986 folder.              </li>
30987               <li>
30988 music: Describes the default folder in which sound clips (such as mp3,
30989 aac, etc.) are stored in the device by default. For example, in some platforms it
30990 corresponds to the &quot;My Music&quot; folder.              </li>
30991               <li>
30992 videos: Describes the default folder in which video clips (such as
30993 avi, mp4, etc.) are stored in the device by default. For example, in some platforms
30994 it corresponds to the &quot;My Videos&quot; folder.              </li>
30995               <li>
30996 downloads: Describes the default folder in which files downloaded
30997 (such as by a browser, e-mail client, etc.) are stored by default in the
30998 device. For example, in some platforms it corresponds to the &quot;Downloads&quot; folder.
30999               </li>
31000               <li>
31001 ringtones: Describes the default folder in which ringtones (such as mp3, etc)
31002 are stored by default in the device.               </li>
31003               <li>
31004 wgt-package: Describes the read-only folder in which the content of
31005 the widget file was extracted to.              </li>
31006               <li>
31007 wgt-private: Describes a private folder in which a widget can
31008 store information. This folder MUST be accessible only to the
31009 widget. Other widgets or applications MUST NOT access the
31010 information stored there.              </li>
31011               <li>
31012 wgt-private-tmp: Describes a temporary, private folder in which a widget
31013 can store data that is available during one widget execution
31014 cycle. Content of this folder MAY be removed from this directory
31015 when the widget is closed or the Web Runtime is restarted.
31016 This folder MUST be accessible only to the widget. Other
31017 widgets or applications MUST NOT have access to it.              </li>
31018             </ul>
31019             <p>
31020 The mode parameter specifies whether the resulting File object
31021 has read-only access (&quot;r&quot; access), read and write access (&quot;rw&quot; access),
31022 append access (&quot;a&quot; access), or write access (&quot;w&quot; access) 
31023 to the root location containing directory tree. 
31024 Permission for the requested access is obtained from the security framework. 
31025 Once the resulting File object has access, access is inherited by
31026 any other File objects derived from this instance without any
31027 further reference to the security framework, as noted in
31028 descriptions of certain methods of File.
31029             </p>
31030             <p>
31031 The ErrorCallback is launched with these error types:
31032             </p>
31033             <ul>
31034               <li>
31035 InvalidValuesError: If any of the input parameters contain an invalid value.
31036 For example, the mode is not valid (that is not &quot;r&quot;, &quot;rw&quot;, &quot;a&quot;, or &quot;w&quot;).              </li>
31037               <li>
31038 NotFoundError: The location input argument does not correspond to a valid location.              </li>
31039               <li>
31040 UnknownError: In any other error case.               </li>
31041             </ul>
31042            </description>
31043             <version>
31044  1.0
31045             </version>
31046             <privilegelevel>
31047  public
31048             </privilegelevel>
31049             <privilege>
31050  http://tizen.org/privilege/filesystem.read
31051             </privilege>
31052             <Code> tizen.filesystem.resolve(
31053    'images',
31054    function(dir) {
31055      console.log(&quot;Mount point Name is &quot; +  dir.path);
31056    }, function(e) {
31057      console.log(&quot;Error: &quot; + e.message);
31058    }, &quot;r&quot;
31059  );
31060  </Code>
31061         </descriptive>
31062         <Type type="void"/>
31063         <ArgumentList>
31064           <Argument name="location">
31065             <descriptive>
31066                 <description><p>
31067  Location to resolve.
31068                 </p></description>
31069             </descriptive>
31070             <Type type="DOMString"/>
31071           </Argument>
31072           <Argument name="onsuccess">
31073             <descriptive>
31074                 <description><p>
31075  Called when the location has been.
31076 successfully resolved, passing the newly created File object.
31077                 </p></description>
31078             </descriptive>
31079             <Type name="FileSuccessCallback"/>
31080           </Argument>
31081           <Argument optional="optional" name="onerror">
31082             <descriptive>
31083                 <description><p>
31084  Called if an error occurred.
31085                 </p></description>
31086             </descriptive>
31087             <Type name="ErrorCallback" nullable="nullable"/>
31088           </Argument>
31089           <Argument optional="optional" name="mode">
31090             <descriptive>
31091                 <description><p>
31092  Optional string of value &quot;r&quot; to obtain read-only access,
31093 &quot;rw&quot; to obtain read and write access, &quot;a&quot; to obtain append access,
31094 or &quot;w&quot; to obtain write access to all files and
31095 directories that can be reached from the File object passed
31096 to onsuccess. Defaults to &quot;rw&quot; if absent or <em>null</em>.
31097                 </p></description>
31098             </descriptive>
31099             <Type name="FileMode" nullable="nullable"/>
31100           </Argument>
31101         </ArgumentList>
31102         <Raises>
31103           <RaiseException name="WebAPIException">
31104             <descriptive>
31105                 <description><p>
31106  with error type TypeMismatchError, if the input parameter
31107 is not compatible with the expected type for that parameter.
31108                 </p></description>
31109                 <description><p>
31110  with error type SecurityError, if the application does not have the privilege to call this method.
31111                 </p></description>
31112                 <description><p>
31113  with error type NotSupportedError, if the feature is not supported.
31114                 </p></description>
31115             </descriptive>
31116           </RaiseException>
31117         </Raises>
31118       </Operation>
31119       <Operation name="getStorage" id="::Filesystem::FileSystemManager::getStorage">
31120         <webidl>    void getStorage(DOMString label,
31121                     <ref>FileSystemStorageSuccessCallback</ref> onsuccess,
31122                     optional <ref>ErrorCallback</ref>? onerror) raises(<ref>WebAPIException</ref>);</webidl>
31123         <descriptive>
31124             <brief>
31125  Gets information about a storage based on its label.
31126             </brief>
31127            <description>
31128             <p>
31129 Get storage information based on its label (example: &quot;MyThumbDrive&quot;,
31130 &quot;InternalFlash&quot;). The onsuccess will receive as input argument the data
31131 structure containing additional information about the drive.
31132             </p>
31133             <p>
31134 The ErrorCallback is launched with these error types:
31135             </p>
31136             <ul>
31137               <li>
31138 NotFoundError: No drive was found with the given label.              </li>
31139               <li>
31140 InvalidValuesError: If any of the input parameters contain an invalid value.              </li>
31141               <li>
31142 UnknownError: In any other error case.               </li>
31143             </ul>
31144            </description>
31145             <version>
31146  1.0
31147             </version>
31148             <privilegelevel>
31149  public
31150             </privilegelevel>
31151             <privilege>
31152  http://tizen.org/privilege/filesystem.read
31153             </privilege>
31154             <Code> function onStorage(storage) {
31155      // Do something
31156  }
31157
31158  function onStorageError(e) {
31159  console.log(&quot;Storage not found!&quot; + e.message);
31160  }
31161
31162  tizen.filesystem.getStorage(&quot;music&quot;, onStorage, onStorageError);
31163  </Code>
31164         </descriptive>
31165         <Type type="void"/>
31166         <ArgumentList>
31167           <Argument name="label">
31168             <descriptive>
31169                 <description><p>
31170  Storage label.
31171                 </p></description>
31172             </descriptive>
31173             <Type type="DOMString"/>
31174           </Argument>
31175           <Argument name="onsuccess">
31176             <descriptive>
31177                 <description><p>
31178  Called when the list of storage is available,
31179 passing the storage list to the callback.
31180                 </p></description>
31181             </descriptive>
31182             <Type name="FileSystemStorageSuccessCallback"/>
31183           </Argument>
31184           <Argument optional="optional" name="onerror">
31185             <descriptive>
31186                 <description><p>
31187  Called if an error occurred.
31188                 </p></description>
31189             </descriptive>
31190             <Type name="ErrorCallback" nullable="nullable"/>
31191           </Argument>
31192         </ArgumentList>
31193         <Raises>
31194           <RaiseException name="WebAPIException">
31195             <descriptive>
31196                 <description><p>
31197  with error type TypeMismatchError, if the input parameter
31198 is not compatible with the expected type for that parameter.
31199                 </p></description>
31200                 <description><p>
31201  with error type SecurityError, if the application does not have the privilege to call this method.
31202                 </p></description>
31203                 <description><p>
31204  with error type NotSupportedError, if the feature is not supported.
31205                 </p></description>
31206             </descriptive>
31207           </RaiseException>
31208         </Raises>
31209       </Operation>
31210       <Operation name="listStorages" id="::Filesystem::FileSystemManager::listStorages">
31211         <webidl>    void listStorages(<ref>FileSystemStorageArraySuccessCallback</ref> onsuccess,
31212                       optional <ref>ErrorCallback</ref>? onerror) raises(<ref>WebAPIException</ref>);</webidl>
31213         <descriptive>
31214             <brief>
31215  Lists the available storages on the device.
31216             </brief>
31217            <description>
31218             <p>
31219 Get the list of available internal and external storage devices. The
31220 onsuccess will receive as input argument a list of the data
31221 structure containing additional information about each drive found.
31222 Can get storages would have a label named as 'internal0', virtual roots (images, documents,...), 'removable1', 'removable2'.
31223 'removable1' label would be used to resolve sdcard and 'removable2' label would be used to resolve usb host, if supported.
31224 The vfat filesystem used widly as sdcard filesystem is not case-sensitive. 
31225 If you want to handle the file on sdcard, you need to consider case-sensitive filenames are regarded as same name.
31226             </p>
31227             <p>
31228 Labels can be different, depends on platform implementation.
31229             </p>
31230             <p>
31231 The ErrorCallback is launched with these error types:
31232             </p>
31233             <ul>
31234               <li>
31235 InvalidValuesError: If any of the input parameters contain an invalid value.              </li>
31236               <li>
31237 UnknownError: In any other error case.               </li>
31238             </ul>
31239            </description>
31240             <version>
31241  1.0
31242             </version>
31243             <privilegelevel>
31244  public
31245             </privilegelevel>
31246             <privilege>
31247  http://tizen.org/privilege/filesystem.read
31248             </privilege>
31249             <Code> function alertForCorruptedRemovableDrives(storages) {
31250      for (var i = 0; i &#60; storages.length; i++) {
31251          if (storages[i].type != &quot;EXTERNAL&quot;)
31252              continue;
31253          if (storages[i].state == &quot;UNMOUNTABLE&quot;)
31254              console.log(&quot;External drive &quot; + storages[i].label + &quot; is corrupted.&quot;);
31255      }
31256  }
31257
31258  tizen.filesystem.listStorages(alertForCorruptedRemovableDrives);
31259  </Code>
31260         </descriptive>
31261         <Type type="void"/>
31262         <ArgumentList>
31263           <Argument name="onsuccess">
31264             <descriptive>
31265                 <description><p>
31266  Called when the list of storage is available,
31267 passing the storage list to the callback.
31268                 </p></description>
31269             </descriptive>
31270             <Type name="FileSystemStorageArraySuccessCallback"/>
31271           </Argument>
31272           <Argument optional="optional" name="onerror">
31273             <descriptive>
31274                 <description><p>
31275  Called if an error occurred.
31276                 </p></description>
31277             </descriptive>
31278             <Type name="ErrorCallback" nullable="nullable"/>
31279           </Argument>
31280         </ArgumentList>
31281         <Raises>
31282           <RaiseException name="WebAPIException">
31283             <descriptive>
31284                 <description><p>
31285  with error type TypeMismatchError, if the input parameter
31286 is not compatible with the expected type for that parameter.
31287                 </p></description>
31288                 <description><p>
31289  with error type SecurityError, if the application does not have the privilege to call this method.
31290                 </p></description>
31291                 <description><p>
31292  with error type NotSupportedError, if the feature is not supported.
31293                 </p></description>
31294             </descriptive>
31295           </RaiseException>
31296         </Raises>
31297       </Operation>
31298       <Operation name="addStorageStateChangeListener" id="::Filesystem::FileSystemManager::addStorageStateChangeListener">
31299         <webidl>    long addStorageStateChangeListener(<ref>FileSystemStorageSuccessCallback</ref> onsuccess,
31300                                        optional <ref>ErrorCallback</ref>? onerror) raises(<ref>WebAPIException</ref>);</webidl>
31301         <descriptive>
31302             <brief>
31303  Subscribes to notifications when a storage state changes.
31304             </brief>
31305            <description>
31306             <p>
31307 The most common usage for this method would be to watch notifications of
31308 additions and removals of external storages.
31309             </p>
31310             <p>
31311 When executed, the implementation MUST immediately return a subscription identifier that identifies
31312 the watch operation. After returning the identifier, the watch operation is started
31313 asynchronously. The onsuccess MUST be invoked every time
31314 a storage state changes. If the attempt fails, the onerror (if present)
31315 MUST be invoked with the relevant error type.
31316             </p>
31317             <p>
31318 The watch operation MUST continue until the removeStorageStateChangeListener() method is
31319 called with the corresponding subscription identifier.
31320             </p>
31321            </description>
31322             <version>
31323  1.0
31324             </version>
31325             <privilegelevel>
31326  public
31327             </privilegelevel>
31328             <privilege>
31329  http://tizen.org/privilege/filesystem.write
31330             </privilege>
31331             <Code> var watchID;
31332  function onStorageStateChanged(storage) {
31333      if (storage.state == &quot;MOUNTED&quot;)
31334          console.log(&quot;Storage &quot; + storage.label + &quot; was added!&quot;);
31335  }
31336
31337  watchID = tizen.filesystem.addStorageStateChangeListener(onStorageStateChanged);
31338  </Code>
31339         </descriptive>
31340         <Type type="long">
31341           <descriptive>
31342               <description><p>
31343  long The identifier used to clear the watch subscription.
31344               </p></description>
31345           </descriptive>
31346         </Type>
31347         <ArgumentList>
31348           <Argument name="onsuccess">
31349             <descriptive>
31350                 <description><p>
31351  To be invoked in every change on storage state.
31352                 </p></description>
31353             </descriptive>
31354             <Type name="FileSystemStorageSuccessCallback"/>
31355           </Argument>
31356           <Argument optional="optional" name="onerror">
31357             <descriptive>
31358                 <description><p>
31359  To be invoked in case of error during the watch process.
31360                 </p></description>
31361             </descriptive>
31362             <Type name="ErrorCallback" nullable="nullable"/>
31363           </Argument>
31364         </ArgumentList>
31365         <Raises>
31366           <RaiseException name="WebAPIException">
31367             <descriptive>
31368                 <description><p>
31369  with error type TypeMismatchError, if any input parameter
31370 is not compatible with the expected type for that parameter.
31371                 </p></description>
31372                 <description><p>
31373  with error type SecurityError, if the application does not have the privilege to call this method.
31374                 </p></description>
31375                 <description><p>
31376  with error type NotSupportedError, if the feature is not supported.
31377                 </p></description>
31378                 <description><p>
31379  with error type UnknownError, if any other error case.
31380                 </p></description>
31381             </descriptive>
31382           </RaiseException>
31383         </Raises>
31384       </Operation>
31385       <Operation name="removeStorageStateChangeListener" id="::Filesystem::FileSystemManager::removeStorageStateChangeListener">
31386         <webidl>    void removeStorageStateChangeListener(long watchId) raises(<ref>WebAPIException</ref>);</webidl>
31387         <descriptive>
31388             <brief>
31389  Unsubscribes a storage watch operation.
31390             </brief>
31391            <description>
31392             <p>
31393 If the watchId argument is valid and corresponds to a subscription already in
31394 place, the watch process MUST immediately stop and no further callbacks MUST be
31395 invoked.
31396             </p>
31397            </description>
31398             <version>
31399  1.0
31400             </version>
31401             <privilegelevel>
31402  public
31403             </privilegelevel>
31404             <privilege>
31405  http://tizen.org/privilege/filesystem.write
31406             </privilege>
31407             <Code> var watchID;
31408  function onStorageStateChanged(storage) {
31409      if (storage.state == &quot;MOUNTED&quot;)
31410          console.log(&quot;Storage &quot; + storage.label + &quot; was added!&quot;);
31411      tizen.filesystem.removeStorageStateChangeListener(watchID);
31412  }
31413
31414  watchID = tizen.filesystem.addStorageStateChangeListener(onStorageStateChanged);
31415  
31416
31417  </Code>
31418         </descriptive>
31419         <Type type="void"/>
31420         <ArgumentList>
31421           <Argument name="watchId">
31422             <descriptive>
31423                 <description><p>
31424  Subscription Identifier.
31425                 </p></description>
31426             </descriptive>
31427             <Type type="long"/>
31428           </Argument>
31429         </ArgumentList>
31430         <Raises>
31431           <RaiseException name="WebAPIException">
31432             <descriptive>
31433                 <description><p>
31434  with error type TypeMismatchError, if any input parameter
31435 is not compatible with the expected type for that parameter.
31436                 </p></description>
31437                 <description><p>
31438  with error type InvalidValuesError, if any of the input 
31439 parameters contain an invalid value.
31440                 </p></description>
31441                 <description><p>
31442  with error type SecurityError, if the application does not have the privilege to call this method.
31443                 </p></description>
31444                 <description><p>
31445  with error type NotSupportedError, if the feature is not supported.
31446                 </p></description>
31447                 <description><p>
31448  with error type UnknownError, if any other error case.      
31449                 </p></description>
31450                 <description><p>
31451  with error type NotFoundError, if the watchId does not exist.      
31452                 </p></description>
31453             </descriptive>
31454           </RaiseException>
31455         </Raises>
31456       </Operation>
31457     </Interface>
31458     <Interface name="FileSystemStorage" id="::Filesystem::FileSystemStorage">
31459       <webidl>  [NoInterfaceObject] interface FileSystemStorage {
31460     readonly attribute DOMString label;
31461
31462     readonly attribute <ref>FileSystemStorageType</ref> type;
31463
31464     readonly attribute <ref>FileSystemStorageState</ref> state;
31465   };</webidl>
31466       <descriptive>
31467           <brief>
31468  The FileSystemStorage interface.
31469           </brief>
31470          <description>
31471           <p>
31472 This interface gives additional information about a storage, such as if the
31473 device is mounted, if it's a removable drive or not, or the device's name.
31474 To retrieve the mount point, the resolve() method should be used using
31475 the label as argument.
31476           </p>
31477          </description>
31478           <version>
31479  1.0
31480           </version>
31481       </descriptive>
31482       <ExtendedAttributeList>
31483         <ExtendedAttribute name="NoInterfaceObject">
31484           <webidl>NoInterfaceObject</webidl>
31485         </ExtendedAttribute>
31486       </ExtendedAttributeList>
31487       <Attribute readonly="readonly" name="label" id="::Filesystem::FileSystemStorage::label">
31488         <webidl>    readonly attribute DOMString label;</webidl>
31489         <descriptive>
31490             <brief>
31491  The storage name.
31492             </brief>
31493            <description>
31494             <p>
31495 Used as input for functions like getStorage() and also used as 'location' parameter for File.resolve() and FileSystemManager.resolve().
31496             </p>
31497            </description>
31498             <version>
31499  1.0
31500             </version>
31501         </descriptive>
31502         <Type type="DOMString"/>
31503       </Attribute>
31504       <Attribute readonly="readonly" name="type" id="::Filesystem::FileSystemStorage::type">
31505         <webidl>    readonly attribute <ref>FileSystemStorageType</ref> type;</webidl>
31506         <descriptive>
31507             <brief>
31508  The storage type.
31509             </brief>
31510            <description>
31511             <p>
31512 Defines whether the storage is internal or external.
31513             </p>
31514            </description>
31515             <version>
31516  1.0
31517             </version>
31518         </descriptive>
31519         <Type name="FileSystemStorageType"/>
31520       </Attribute>
31521       <Attribute readonly="readonly" name="state" id="::Filesystem::FileSystemStorage::state">
31522         <webidl>    readonly attribute <ref>FileSystemStorageState</ref> state;</webidl>
31523         <descriptive>
31524             <brief>
31525  The storage state.
31526             </brief>
31527            <description>
31528             <p>
31529 Defines whether the storage is mounted or not.
31530             </p>
31531            </description>
31532             <version>
31533  1.0
31534             </version>
31535         </descriptive>
31536         <Type name="FileSystemStorageState"/>
31537       </Attribute>
31538     </Interface>
31539     <Interface name="File" id="::Filesystem::File">
31540       <webidl>  [NoInterfaceObject] interface File {
31541     readonly attribute <ref>File</ref>? parent;
31542
31543     readonly attribute boolean readOnly;
31544
31545     readonly attribute boolean isFile;
31546
31547     readonly attribute boolean isDirectory;
31548
31549     readonly attribute Date? created;
31550
31551     readonly attribute Date? modified;
31552
31553     readonly attribute DOMString path;
31554
31555     readonly attribute DOMString name;
31556
31557     readonly attribute DOMString fullPath;
31558
31559     readonly attribute unsigned long long fileSize;
31560
31561     readonly attribute long length;
31562
31563     DOMString toURI() raises(<ref>WebAPIException</ref>);
31564
31565     void listFiles(<ref>FileArraySuccessCallback</ref> onsuccess,
31566                    optional <ref>ErrorCallback</ref>? onerror,
31567                    optional <ref>FileFilter</ref>? filter) raises(<ref>WebAPIException</ref>);
31568
31569     void openStream(<ref>FileMode</ref> mode,
31570                     <ref>FileStreamSuccessCallback</ref> onsuccess,
31571                     optional <ref>ErrorCallback</ref>? onerror,
31572                     optional DOMString? encoding) raises(<ref>WebAPIException</ref>);
31573
31574     void readAsText(<ref>FileStringSuccessCallback</ref> onsuccess,
31575                     optional <ref>ErrorCallback</ref>? onerror,
31576                     optional DOMString? encoding) raises(<ref>WebAPIException</ref>);
31577
31578     void copyTo(DOMString originFilePath,
31579                 DOMString destinationFilePath,
31580                 boolean overwrite,
31581                 optional <ref>SuccessCallback</ref>? onsuccess,
31582                 optional <ref>ErrorCallback</ref>? onerror) raises(<ref>WebAPIException</ref>);
31583
31584     void moveTo(DOMString originFilePath,
31585                 DOMString destinationFilePath,
31586                 boolean overwrite,
31587                 optional <ref>SuccessCallback</ref>? onsuccess,
31588                 optional <ref>ErrorCallback</ref>? onerror) raises(<ref>WebAPIException</ref>);
31589
31590     <ref>File</ref> createDirectory(DOMString dirPath) raises(<ref>WebAPIException</ref>);
31591
31592     <ref>File</ref> createFile(DOMString relativeFilePath) raises(<ref>WebAPIException</ref>);
31593
31594     <ref>File</ref> resolve(DOMString filePath) raises(<ref>WebAPIException</ref>);
31595
31596     void deleteDirectory(DOMString directoryPath,
31597                          boolean recursive,
31598                          optional <ref>SuccessCallback</ref>? onsuccess,
31599                          optional <ref>ErrorCallback</ref>? onerror) raises(<ref>WebAPIException</ref>);
31600
31601     void deleteFile(DOMString filePath,
31602                     optional <ref>SuccessCallback</ref>? onsuccess,
31603                     optional <ref>ErrorCallback</ref>? onerror) raises(<ref>WebAPIException</ref>);
31604   };</webidl>
31605       <descriptive>
31606           <brief>
31607  The file interface.
31608           </brief>
31609          <description>
31610           <p>
31611 This interface represents the file abstraction in use.
31612 A file handle represents a file
31613 if the isFile property is <em>true</em>, if the isFile property is <em>false</em>, the file
31614 handle represents a directory.
31615 If a file handle represents a directory, it can address files and directories.
31616           </p>
31617           <p>
31618 The file object permissions for the file object location and tree rooted
31619 at that location depends upon the mode defined in the resolve method.
31620 When a File object creates a child File object, 
31621 the new File object inherits its access rights from
31622 the parent object without any reference to the security framework, as
31623 noted in certain methods of File.
31624           </p>
31625           <p>
31626 A file handle representing a file can be opened for I/O operations,
31627 such as reading and writing.
31628           </p>
31629           <p>
31630 A file handle representing a directory can be used for listing all
31631 files and directories rooted as the file handle location.
31632           </p>
31633          </description>
31634           <version>
31635  1.0
31636           </version>
31637           <Code> function onsuccess(files) {
31638    for(var i = 0; i &#60; files.length; i++) {
31639      // alerts each name of dir's contents
31640      console.log(files[i].name);
31641    }
31642  }
31643
31644  function onerror(error) {
31645    console.log(&quot;The error &quot; + error.message +
31646                &quot; occurred when listing the files in the selected folder&quot;);
31647  }
31648
31649  // list directory contents
31650  dir.listFiles(onsuccess, onerror);
31651  </Code>
31652       </descriptive>
31653       <ExtendedAttributeList>
31654         <ExtendedAttribute name="NoInterfaceObject">
31655           <webidl>NoInterfaceObject</webidl>
31656         </ExtendedAttribute>
31657       </ExtendedAttributeList>
31658       <Attribute readonly="readonly" name="parent" id="::Filesystem::File::parent">
31659         <webidl>    readonly attribute <ref>File</ref>? parent;</webidl>
31660         <descriptive>
31661             <brief>
31662  The parent directory handle.
31663             </brief>
31664            <description>
31665             <p>
31666 <em>null</em> if there is no parent directory.
31667             </p>
31668             <p>
31669 If there is no parent directory, this represents a root location.
31670             </p>
31671            </description>
31672             <version>
31673  1.0
31674             </version>
31675             <Code> // list directory contents
31676  dir.listFiles(onsuccess, onerror);
31677
31678  function onsuccess(files) {
31679    for(var i = 0; i &#60; files.length; i++) {
31680      // prints the file parent, should contain the
31681      // same value for all the files in the loop
31682      console.log(&quot;All the files should have the same parent &quot; +
31683                  files[i].parent);
31684    }
31685  }
31686
31687  function onerror(error){
31688    console.log(&quot;The error &quot; + error.message +
31689                &quot; occurred when listing the files in the selected folder&quot;);
31690  }
31691  </Code>
31692         </descriptive>
31693         <Type name="File" nullable="nullable"/>
31694       </Attribute>
31695       <Attribute readonly="readonly" name="readOnly" id="::Filesystem::File::readOnly">
31696         <webidl>    readonly attribute boolean readOnly;</webidl>
31697         <descriptive>
31698             <brief>
31699  The file/directory access state in the filesystem.
31700             </brief>
31701            <description>
31702             <p>
31703 <em>true</em> if object has read-only access at its location.
31704             </p>
31705             <p>
31706 <em>false</em> if object has write access at its location.
31707             </p>
31708             <p>
31709 This attribute represents the actual state of a
31710 file or directory in the filesystem. Its value is not affected by
31711 the mode used in FileSystemManager.resolve that was used to
31712 create the File object from which this File object was obtained.
31713             </p>
31714            </description>
31715             <version>
31716  1.0
31717             </version>
31718             <Code> // list directory contents
31719  dir.listFiles(onsuccess, onerror);
31720
31721  function onsuccess(files) {
31722    for(var i = 0; i &#60; files.length; i++) {
31723      if(files[i].readOnly)
31724        console.log(&quot;Cannot write to file &quot; + files[i].name);
31725      else
31726        console.log(&quot;Can write to file &quot; + files[i].name);
31727    }
31728  }
31729
31730  function onerror(error) {
31731    console.log(&quot;The error &quot; + error.message + &quot; occurred when listing the files in the selected folder&quot;);
31732  }
31733  </Code>
31734         </descriptive>
31735         <Type type="boolean"/>
31736       </Attribute>
31737       <Attribute readonly="readonly" name="isFile" id="::Filesystem::File::isFile">
31738         <webidl>    readonly attribute boolean isFile;</webidl>
31739         <descriptive>
31740             <brief>
31741  The file type.
31742             </brief>
31743            <description>
31744             <p>
31745 <em>true</em> if this handle is a file.
31746 <em>false</em> if this handle is a directory.
31747             </p>
31748            </description>
31749             <version>
31750  1.0
31751             </version>
31752         </descriptive>
31753         <Type type="boolean"/>
31754       </Attribute>
31755       <Attribute readonly="readonly" name="isDirectory" id="::Filesystem::File::isDirectory">
31756         <webidl>    readonly attribute boolean isDirectory;</webidl>
31757         <descriptive>
31758             <brief>
31759  The file type.
31760             </brief>
31761            <description>
31762             <p>
31763 <em>true</em> if this handle is a directory,
31764 <em>false</em> if this handle is a file.
31765             </p>
31766            </description>
31767             <version>
31768  1.0
31769             </version>
31770         </descriptive>
31771         <Type type="boolean"/>
31772       </Attribute>
31773       <Attribute readonly="readonly" name="created" id="::Filesystem::File::created">
31774         <webidl>    readonly attribute Date? created;</webidl>
31775         <descriptive>
31776             <brief>
31777  The creation timestamp of this file.
31778             </brief>
31779            <description>
31780             <p>
31781 This is the timestamp when the file was first created in the filesystem.
31782 Equivalent to the timestamp when a call to createFile() succeeds.
31783             </p>
31784             <p>
31785 If the platform does not support this attribute, it MUST
31786 be <em>null</em>.
31787             </p>
31788             <p>
31789 It is unspecified and platform-dependent if the creation
31790 timestamp changes when a file is moved.
31791             </p>
31792            </description>
31793             <version>
31794  1.0
31795             </version>
31796         </descriptive>
31797         <Type type="Date" nullable="nullable"/>
31798       </Attribute>
31799       <Attribute readonly="readonly" name="modified" id="::Filesystem::File::modified">
31800         <webidl>    readonly attribute Date? modified;</webidl>
31801         <descriptive>
31802             <brief>
31803  The modification timestamp.
31804             </brief>
31805            <description>
31806             <p>
31807 The modification timestamp of this file. This is the timestamp
31808 of the most recent modification to the file, usually when the last
31809 write operation succeeded. Opening a file for reading does not change
31810 the modification timestamp.
31811             </p>
31812             <p>
31813 If the platform does not support this attribute, it MUST
31814 be <em>null</em>.
31815             </p>
31816             <p>
31817 It is unspecified and platform-dependent if the modified
31818 timestamp changes when a file is moved.
31819             </p>
31820            </description>
31821             <version>
31822  1.0
31823             </version>
31824             <Code> console.log(file.modified); // displays the modification timestamp
31825  </Code>
31826         </descriptive>
31827         <Type type="Date" nullable="nullable"/>
31828       </Attribute>
31829       <Attribute readonly="readonly" name="path" id="::Filesystem::File::path">
31830         <webidl>    readonly attribute DOMString path;</webidl>
31831         <descriptive>
31832             <brief>
31833  The path of this file, excluding the file name.
31834             </brief>
31835            <description>
31836             <p>
31837 This is the path of this file, beginning with the name of the root containing the file,
31838 up to and including the directory containing the file, but excluding the file name.
31839             </p>
31840             <p>
31841 Except in a special case of the File representing the root itself, the last
31842 character is always the character '/'.
31843             </p>
31844             <p>
31845 For example, if a file is located at music/ramones/volume1/RockawayBeach.mp3,
31846 the path would be music/ramones/volume1/.
31847             </p>
31848             <p>
31849 For example, if a directory is located at music/ramones/volume1, the path would be
31850 music/ramones/.
31851             </p>
31852             <p>
31853 For the virtual roots, the path is same as the name of the virtual root. 
31854 For example, if the root is music, then the path is music. If the root is documents, then the path is documents.
31855             </p>
31856            </description>
31857             <version>
31858  1.0
31859             </version>
31860             <Code> console.log(file.path); // should be 'music/' if the file is music/foo.mp3
31861  </Code>
31862         </descriptive>
31863         <Type type="DOMString"/>
31864       </Attribute>
31865       <Attribute readonly="readonly" name="name" id="::Filesystem::File::name">
31866         <webidl>    readonly attribute DOMString name;</webidl>
31867         <descriptive>
31868             <brief>
31869  The file name, excluding any path components.
31870             </brief>
31871            <description>
31872             <p>
31873 This is the name of this file, excluding the root name and any other path components.
31874             </p>
31875             <p>
31876 For example, if a file is located at
31877 music/ramones/volume1/RockawayBeach.mp3, the name would be RockawayBeach.mp3.
31878             </p>
31879             <p>
31880 For example, if a directory is located at music/ramones/volume1, the
31881 name would be volume1.
31882             </p>
31883             <p>
31884 For the special case of the root itself, the name is an empty string.
31885             </p>
31886            </description>
31887             <version>
31888  1.0
31889             </version>
31890             <Code> console.log(file.name); // should be foo.mp3 if the file path is music/foo.mp3
31891  </Code>
31892         </descriptive>
31893         <Type type="DOMString"/>
31894       </Attribute>
31895       <Attribute readonly="readonly" name="fullPath" id="::Filesystem::File::fullPath">
31896         <webidl>    readonly attribute DOMString fullPath;</webidl>
31897         <descriptive>
31898             <brief>
31899  The full path of this file.
31900             </brief>
31901            <description>
31902             <p>
31903 The full path of this file, beginning with the name of the root containing the file,
31904 and including the name of the file or directory itself.
31905             </p>
31906             <p>
31907 For instance, for a file, if the file is located at
31908 music/ramones/volume1/RockawayBeach.mp3, then the fullPath is
31909 music/ramones/volume1/RockawayBeach.mp3.
31910             </p>
31911             <p>
31912 For a directory, if the directory is located at music/ramones/volume1, then the
31913 fullPath is music/ramones/volume1.
31914             </p>
31915             <p>
31916 For the special case of the root itself, if the root is music, then the fullPath is
31917 music.
31918             </p>
31919             <p>
31920 The fullPath is always equal to path + name.
31921             </p>
31922            </description>
31923             <version>
31924  1.0
31925             </version>
31926             <Code> console.log(file.fullPath); // should be music/track1.mp3 if the file is music/track1.mp3
31927  </Code>
31928         </descriptive>
31929         <Type type="DOMString"/>
31930       </Attribute>
31931       <Attribute readonly="readonly" name="fileSize" id="::Filesystem::File::fileSize">
31932         <webidl>    readonly attribute unsigned long long fileSize;</webidl>
31933         <descriptive>
31934             <brief>
31935  The size of this file, in bytes.
31936             </brief>
31937            <description>
31938             <p>
31939 If there's an attempt to read this attribute on a directory,
31940 <em>undefined</em> is returned. To retrieve the
31941 number of files and directories contained in the directory,
31942 use the length attribute, instead.
31943             </p>
31944            </description>
31945             <version>
31946  1.0
31947             </version>
31948             <Code> console.log(file.fileSize); // displays the file size
31949  </Code>
31950         </descriptive>
31951         <Type type="unsigned long long"/>
31952       </Attribute>
31953       <Attribute readonly="readonly" name="length" id="::Filesystem::File::length">
31954         <webidl>    readonly attribute long length;</webidl>
31955         <descriptive>
31956             <brief>
31957  The number of files and directories contained in this file handle.
31958             </brief>
31959            <description>
31960             <p>
31961 If there's an attempt to read this attribute on a file,
31962 <em>undefined</em> is returned. To retrieve the
31963 size of a file, use the fileSize attribute instead.
31964             </p>
31965            </description>
31966             <version>
31967  1.0
31968             </version>
31969             <Code> console.log(file.length); // '3' if the directory contains two files and one sub-directory
31970  </Code>
31971         </descriptive>
31972         <Type type="long"/>
31973       </Attribute>
31974       <Operation name="toURI" id="::Filesystem::File::toURI">
31975         <webidl>    DOMString toURI() raises(<ref>WebAPIException</ref>);</webidl>
31976         <descriptive>
31977             <brief>
31978  Returns a URI for the file.
31979             </brief>
31980            <description>
31981             <p>
31982 Returns a URI that can be used to identify this entry (such as using it
31983 as the src attribute on an HTML img element). The URI has no specific
31984 expiration, it should be valid at least as long as the file exists.
31985             </p>
31986             <p>
31987 When this method is invoked, the implementation MUST generate a URI.
31988             </p>
31989             <p>
31990 If that URI corresponds to any of the public virtual roots (that is
31991 images, videos, music, documents, and downloads) the URI
31992 MUST be globally unique and could be used by any widget.
31993             </p>
31994             <p>
31995 If that URI corresponds to a file located in any of the widget private
31996 areas (such as wgt-package, wgt-private, wgt-private-tmp). The generated
31997 URI MUST be unique for that file and for the widget making the request
31998 (such as including some derived from the widget id in the URI). 
31999 These URIs MUST NOT be accessible to other widgets,
32000 apart from the one invoking this method.
32001             </p>
32002            </description>
32003             <version>
32004  1.0
32005             </version>
32006             <privilegelevel>
32007  public
32008             </privilegelevel>
32009             <privilege>
32010  http://tizen.org/privilege/filesystem.read
32011             </privilege>
32012             <Code> // 'file:///opt/usr/media/music/ramones/RockawayBeach.mp3' if the file is
32013  // music/ramones/RockawayBeach.mp3
32014  console.log(file.toURI());
32015  </Code>
32016         </descriptive>
32017         <Type type="DOMString">
32018           <descriptive>
32019               <description><p>
32020  DOMString The URI that identifies the file or <em>null</em> if an error occurs.
32021               </p></description>
32022           </descriptive>
32023         </Type>
32024         <ArgumentList/>
32025         <Raises>
32026           <RaiseException name="WebAPIException">
32027             <descriptive>
32028                 <description><p>
32029  with error type NotSupportedError, if the feature is not supported.
32030                 </p></description>
32031                 <description><p>
32032  with error type SecurityError, if the application does not have the privilege to call this method.
32033                 </p></description>
32034                 <description><p>
32035  with error type UnknownError in any other error situation.     
32036                 </p></description>
32037             </descriptive>
32038           </RaiseException>
32039         </Raises>
32040       </Operation>
32041       <Operation name="listFiles" id="::Filesystem::File::listFiles">
32042         <webidl>    void listFiles(<ref>FileArraySuccessCallback</ref> onsuccess,
32043                    optional <ref>ErrorCallback</ref>? onerror,
32044                    optional <ref>FileFilter</ref>? filter) raises(<ref>WebAPIException</ref>);</webidl>
32045         <descriptive>
32046             <brief>
32047  Returns the list of all files in this directory.
32048             </brief>
32049            <description>
32050             <p>
32051 The list of files will be passed as a File[] in the onsuccess
32052 and contains directories and files. However, the directories &quot;.&quot; and &quot;..&quot;
32053 MUST NOT be returned. Each File object part of the array MUST inherit
32054 all the access rights (that is one of the values in FileMode) from the File object in which
32055 this method was invoked.
32056             </p>
32057             <p>
32058 If the filter is passed and contains valid values, only those directories
32059 and files in the directory that match the filter criteria specified
32060 in the FileFilter interface MUST be returned in the onsuccess.
32061 If no filter is passed, the filter is <em>null</em> or undefined, or the filter contains invalid
32062 values, the implementation MUST return the full list of files in the directory.
32063             </p>
32064             <p>
32065 If the directory does not contain any files or directories, or
32066 the filter criteria is unmatched to any files or directories, the onsuccess will be
32067 invoked with an empty array.
32068             </p>
32069             <p>
32070 The ErrorCallback is launched with these error types:
32071             </p>
32072             <ul>
32073               <li>
32074 IOError: The operation is launched on a file (not a directory).              </li>
32075               <li>
32076 InvalidValuesError: If any of the input parameters contain an invalid value.              </li>
32077               <li>
32078 UnknownError: In any other error case.               </li>
32079             </ul>
32080            </description>
32081             <version>
32082  1.0
32083             </version>
32084             <privilegelevel>
32085  public
32086             </privilegelevel>
32087             <privilege>
32088  http://tizen.org/privilege/filesystem.read
32089             </privilege>
32090             <Code> function onsuccess(files) {
32091    console.log(&quot;There are &quot; + files.length  + &quot; in the selected folder&quot;);
32092  }
32093
32094  function onerror(error) {
32095    console.log(&quot;The error &quot; + error.message + &quot; occurred when listing the files in the selected folder&quot;);
32096  }
32097
32098  tizen.filesystem.resolve(
32099      &quot;documents&quot;,
32100      function(dir){
32101        dir.listFiles(onsuccess, onerror);
32102      }, function(e){
32103        console.log(&quot;Error &quot; + e.message);
32104      }, &quot;r&quot;
32105  );
32106  </Code>
32107         </descriptive>
32108         <Type type="void"/>
32109         <ArgumentList>
32110           <Argument name="onsuccess">
32111             <descriptive>
32112                 <description><p>
32113  Called when the list operation has been successfully completed.
32114                 </p></description>
32115             </descriptive>
32116             <Type name="FileArraySuccessCallback"/>
32117           </Argument>
32118           <Argument optional="optional" name="onerror">
32119             <descriptive>
32120                 <description><p>
32121  Called if an error occurred.
32122                 </p></description>
32123             </descriptive>
32124             <Type name="ErrorCallback" nullable="nullable"/>
32125           </Argument>
32126           <Argument optional="optional" name="filter">
32127             <descriptive>
32128                 <description><p>
32129  Used to restrict the listed files.
32130                 </p></description>
32131             </descriptive>
32132             <Type name="FileFilter" nullable="nullable"/>
32133           </Argument>
32134         </ArgumentList>
32135         <Raises>
32136           <RaiseException name="WebAPIException">
32137             <descriptive>
32138                 <description><p>
32139  with error type TypeMismatchError, if the input parameter
32140 is not compatible with the expected type for that parameter.
32141                 </p></description>
32142                 <description><p>
32143  with error type SecurityError, if the application does not have the privilege to call this method.
32144                 </p></description>
32145                 <description><p>
32146  with error type NotSupportedError, if the feature is not supported.
32147                 </p></description>
32148             </descriptive>
32149           </RaiseException>
32150         </Raises>
32151       </Operation>
32152       <Operation name="openStream" id="::Filesystem::File::openStream">
32153         <webidl>    void openStream(<ref>FileMode</ref> mode,
32154                     <ref>FileStreamSuccessCallback</ref> onsuccess,
32155                     optional <ref>ErrorCallback</ref>? onerror,
32156                     optional DOMString? encoding) raises(<ref>WebAPIException</ref>);</webidl>
32157         <descriptive>
32158             <brief>
32159  Opens the file in the given mode supporting the given
32160 encoding.
32161             </brief>
32162            <description>
32163             <p>
32164 This operation is performed asynchronously. If the file is opened
32165 successfully, the onsuccess is invoked with a FileStream
32166 that can be used for reading and writing the file, depending on the
32167 mode. The return FileStream instance includes a file pointer, which represents
32168 the current position in the file. The filepointer will, by default, be at the start of the file,
32169 except in the case of opening with append (&quot;a&quot;) mode, in which case
32170 the filepointer points to the end of the file.
32171             </p>
32172             <p>
32173 The ErrorCallback is launched with these error types:
32174             </p>
32175             <ul>
32176               <li>
32177 InvalidValuesError: If any of the input parameters contains an invalid value.               </li>
32178               <li>
32179 IOError: The operation is launched on a directory (not a file), the file is not
32180 valid or it does not exist.              </li>
32181               <li>
32182 UnknownError: In any other error case.              </li>
32183             </ul>
32184            </description>
32185             <version>
32186  1.0
32187             </version>
32188             <privilegelevel>
32189  public
32190             </privilegelevel>
32191             <privilege>
32192  http://tizen.org/privilege/filesystem.read
32193             </privilege>
32194             <Code> var documentsDir;
32195  function onsuccess(files) {
32196    for(var i = 0; i &#60; files.length; i++) {
32197      console.log(&quot;File Name is &quot; + files[i].name); // displays file name
32198    }
32199
32200    var testFile = documentsDir.createFile(&quot;test.txt&quot;);
32201    if (testFile != null) {
32202      testFile.openStream(
32203          &quot;w&quot;,
32204          function(fs){
32205            fs.write(&quot;HelloWorld&quot;);
32206            fs.close();
32207          }, function(e){
32208            console.log(&quot;Error &quot; + e.message);
32209          }, &quot;UTF-8&quot;
32210      );
32211    }
32212  }
32213
32214  function onerror(error) {
32215    console.log(&quot;The error &quot; + error.message + &quot; occurred when listing the files in the selected folder&quot;);
32216  }
32217
32218  tizen.filesystem.resolve(
32219      'documents',
32220      function(dir){
32221        documentsDir = dir; dir.listFiles(onsuccess,onerror);
32222      }, function(e) {
32223        console.log(&quot;Error&quot; + e.message);
32224      }, &quot;rw&quot;
32225  );
32226  </Code>
32227         </descriptive>
32228         <Type type="void"/>
32229         <ArgumentList>
32230           <Argument name="mode">
32231             <descriptive>
32232                 <description><p>
32233  The mode for opening a file:
32234 <b>&quot;r&quot;</b> for reading
32235 <b>&quot;a&quot;</b> for appending
32236 <b>&quot;w&quot;</b> for [over]writing
32237 <b>&quot;rw&quot;</b> for reading and writing
32238                 </p></description>
32239             </descriptive>
32240             <Type name="FileMode"/>
32241           </Argument>
32242           <Argument name="onsuccess">
32243             <descriptive>
32244                 <description><p>
32245  Called when the file has been opened.
32246                 </p></description>
32247             </descriptive>
32248             <Type name="FileStreamSuccessCallback"/>
32249           </Argument>
32250           <Argument optional="optional" name="onerror">
32251             <descriptive>
32252                 <description><p>
32253  Called if an error occurred.
32254                 </p></description>
32255             </descriptive>
32256             <Type name="ErrorCallback" nullable="nullable"/>
32257           </Argument>
32258           <Argument optional="optional" name="encoding">
32259             <descriptive>
32260                 <description><p>
32261  The encoding for read/write operations on the file,
32262 at least the following encodings MUST be supported:
32263 &quot;<a href="http://www.ietf.org/rfc/rfc2279.txt">UTF-8</a>&quot; default encoding,
32264 &quot;<a href="http://en.wikipedia.org/wiki/ISO/IEC_8859-1">ISO-8859-1</a>&quot; latin1 encoding.
32265 If no encoding is passed by the developer, then the default platform encoding
32266 MUST be used.
32267                 </p></description>
32268             </descriptive>
32269             <Type type="DOMString" nullable="nullable"/>
32270           </Argument>
32271         </ArgumentList>
32272         <Raises>
32273           <RaiseException name="WebAPIException">
32274             <descriptive>
32275                 <description><p>
32276  with error type TypeMismatchError, if the input parameter
32277 is not compatible with the expected type for that parameter.
32278                 </p></description>
32279                 <description><p>
32280  with error type SecurityError, if the application does not have the privilege to call this method.
32281                 </p></description>
32282                 <description><p>
32283  with error type NotSupportedError, if the feature is not supported.
32284                 </p></description>
32285             </descriptive>
32286           </RaiseException>
32287         </Raises>
32288       </Operation>
32289       <Operation name="readAsText" id="::Filesystem::File::readAsText">
32290         <webidl>    void readAsText(<ref>FileStringSuccessCallback</ref> onsuccess,
32291                     optional <ref>ErrorCallback</ref>? onerror,
32292                     optional DOMString? encoding) raises(<ref>WebAPIException</ref>);</webidl>
32293         <descriptive>
32294             <brief>
32295  Reads the content of a file as a DOMString.
32296             </brief>
32297            <description>
32298             <p>
32299 If the operation is successfully executed, the onsuccess is
32300 invoked and a DOMString is passed as input parameter that represents
32301 the file content in the format determined by the encoding parameter.
32302             </p>
32303             <p>
32304 The ErrorCallback is launched with these error types:
32305             </p>
32306             <ul>
32307               <li>
32308 InvalidValuesError: If any of the input parameters contain an invalid value.              </li>
32309               <li>
32310 IOError: The operation is launched on a directory (not a file), the file is not
32311 valid, or the file does not exist.              </li>
32312               <li>
32313 UnknownError: In any other error case.              </li>
32314             </ul>
32315            </description>
32316             <version>
32317  1.0
32318             </version>
32319             <privilegelevel>
32320  public
32321             </privilegelevel>
32322             <privilege>
32323  http://tizen.org/privilege/filesystem.read
32324             </privilege>
32325             <Code> function onsuccess(files) {
32326    for(var i = 0; i &#60; files.length; i++) {
32327      console.log(&quot;File Name is &quot; + files[i].name); // displays file name
32328      if (files[i].isDirectory == false)
32329        files[i].readAsText(
32330            function(str){
32331              console.log(&quot;The file content &quot; + str);
32332            }, function(e){
32333              console.log(&quot;Error &quot; + e.message);
32334            }, &quot;UTF-8&quot;
32335        );
32336    }
32337  }
32338
32339  function onerror(error) {
32340    console.log(&quot;The error &quot; + error.message + &quot; occurred when listing the files in the selected folder&quot;);
32341  }
32342
32343  var documentsDir;
32344  tizen.filesystem.resolve(
32345      'documents', 
32346      function(dir){
32347        documentsDir = dir;
32348        dir.listFiles(onsuccess,onerror);
32349      }, function(e) {
32350        console.log(&quot;Error&quot; + e.message);
32351      }, &quot;rw&quot;
32352  );
32353  </Code>
32354         </descriptive>
32355         <Type type="void"/>
32356         <ArgumentList>
32357           <Argument name="onsuccess">
32358             <descriptive>
32359                 <description><p>
32360  Called when the file has been successfully read.
32361                 </p></description>
32362             </descriptive>
32363             <Type name="FileStringSuccessCallback"/>
32364           </Argument>
32365           <Argument optional="optional" name="onerror">
32366             <descriptive>
32367                 <description><p>
32368  If an error occurs while reading the file.
32369                 </p></description>
32370             </descriptive>
32371             <Type name="ErrorCallback" nullable="nullable"/>
32372           </Argument>
32373           <Argument optional="optional" name="encoding">
32374             <descriptive>
32375                 <description><p>
32376  The encoding for read/write operations on the file,
32377 at least the following encodings MUST be supported:
32378 &quot;<a href="http://www.ietf.org/rfc/rfc2279.txt">UTF-8</a>&quot; default encoding,
32379 &quot;<a href="http://en.wikipedia.org/wiki/ISO/IEC_8859-1">ISO-8859-1</a>&quot; latin1 encoding.
32380 If no encoding is passed by the developer, then the default platform
32381 encoding MUST be used.
32382                 </p></description>
32383             </descriptive>
32384             <Type type="DOMString" nullable="nullable"/>
32385           </Argument>
32386         </ArgumentList>
32387         <Raises>
32388           <RaiseException name="WebAPIException">
32389             <descriptive>
32390                 <description><p>
32391  with error type TypeMismatchError, if the input parameter
32392 is not compatible with the expected type for that parameter.
32393                 </p></description>
32394                 <description><p>
32395  with error type SecurityError, if the application does not have the privilege to call this method.
32396                 </p></description>
32397                 <description><p>
32398  with error type NotSupportedError, if the feature is not supported.
32399                 </p></description>
32400             </descriptive>
32401           </RaiseException>
32402         </Raises>
32403       </Operation>
32404       <Operation name="copyTo" id="::Filesystem::File::copyTo">
32405         <webidl>    void copyTo(DOMString originFilePath,
32406                 DOMString destinationFilePath,
32407                 boolean overwrite,
32408                 optional <ref>SuccessCallback</ref>? onsuccess,
32409                 optional <ref>ErrorCallback</ref>? onerror) raises(<ref>WebAPIException</ref>);</webidl>
32410         <descriptive>
32411             <brief>
32412  Copies (and overwrites if possible and specified) a file or a
32413 directory from a specified location to another specified location.
32414             </brief>
32415            <description>
32416             <p>
32417 The copy of the file or directory identified by the originFilePath parameter
32418 MUST be created in the path passed in the destinationFilePath parameter.
32419             </p>
32420             <p>
32421 The file or directory to be copied MUST be under the Directory from which the method
32422 is invoked, otherwise the operation MUST NOT be performed.
32423             </p>
32424             <p>
32425 If the copy is performed successfully, the onsuccess is invoked.
32426             </p>
32427             <p>
32428 The ErrorCallback is launched with these error types:
32429             </p>
32430             <ul>
32431               <li>
32432 InvalidValuesError: If any of the input parameters contain an invalid value.              </li>
32433               <li>
32434 NotFoundError: originFilePath does not correspond to a valid file or destinationPath is not a valid path.              </li>
32435               <li>
32436 IOError: The File in which the copyTo method is invoked is a file (not a directory), 
32437 originFilePath corresponds to a file or directory in use by another process,
32438 overwrite parameter is <em>false</em> and destinationFilePath corresponds to an existing
32439 file or directory.              </li>
32440               <li>
32441 UnknownError: In any other error case.              </li>
32442             </ul>
32443            </description>
32444             <version>
32445  1.0
32446             </version>
32447             <privilegelevel>
32448  public
32449             </privilegelevel>
32450             <privilege>
32451  http://tizen.org/privilege/filesystem.write
32452             </privilege>
32453             <Code> var documentsDir;
32454  function onsuccess(files) {
32455    for(var i = 0; i &#60; files.length; i++) {
32456      if (files[i].isDirectory == false) {
32457        documentsDir.copyTo(files[i].fullPath,
32458                            &quot;images/backup/&quot; + files[i].name,
32459                            false,
32460                            function(){console.log(&quot;file copied&quot;);});
32461      }
32462    }
32463  }
32464
32465  function onerror(error) {
32466    console.log(&quot;The error &quot; + error.message +
32467                &quot; occurred when listing the files in the selected folder&quot;);
32468  }
32469
32470  tizen.filesystem.resolve(
32471      'documents', 
32472      function(dir){
32473        documentsDir = dir;
32474        dir.listFiles(onsuccess, onerror);
32475      }, function(e) {
32476        console.log(&quot;Error&quot; + e.message);
32477      }, &quot;rw&quot;
32478  );
32479  </Code>
32480         </descriptive>
32481         <Type type="void"/>
32482         <ArgumentList>
32483           <Argument name="originFilePath">
32484             <descriptive>
32485                 <description><p>
32486  The origin full virtual file or directory path, it must be under the current directory.
32487                 </p></description>
32488             </descriptive>
32489             <Type type="DOMString"/>
32490           </Argument>
32491           <Argument name="destinationFilePath">
32492             <descriptive>
32493                 <description><p>
32494  The new full virtual file path or directory path.
32495                 </p></description>
32496             </descriptive>
32497             <Type type="DOMString"/>
32498           </Argument>
32499           <Argument name="overwrite">
32500             <descriptive>
32501                 <description><p>
32502  <em>true</em> enforces overwriting an existing file.
32503                 </p></description>
32504             </descriptive>
32505             <Type type="boolean"/>
32506           </Argument>
32507           <Argument optional="optional" name="onsuccess">
32508             <descriptive>
32509                 <description><p>
32510  Called when the file has been copied.
32511                 </p></description>
32512             </descriptive>
32513             <Type name="SuccessCallback" nullable="nullable"/>
32514           </Argument>
32515           <Argument optional="optional" name="onerror">
32516             <descriptive>
32517                 <description><p>
32518  Called if an error occurred.
32519                 </p></description>
32520             </descriptive>
32521             <Type name="ErrorCallback" nullable="nullable"/>
32522           </Argument>
32523         </ArgumentList>
32524         <Raises>
32525           <RaiseException name="WebAPIException">
32526             <descriptive>
32527                 <description><p>
32528  with error type TypeMismatchError, if the input parameter
32529 is not compatible with the expected type for that parameter.
32530                 </p></description>
32531                 <description><p>
32532  with error type SecurityError, if the application does not have the privilege to call this method.
32533                 </p></description>
32534                 <description><p>
32535  with error type NotSupportedError, if the feature is not supported.
32536                 </p></description>
32537             </descriptive>
32538           </RaiseException>
32539         </Raises>
32540       </Operation>
32541       <Operation name="moveTo" id="::Filesystem::File::moveTo">
32542         <webidl>    void moveTo(DOMString originFilePath,
32543                 DOMString destinationFilePath,
32544                 boolean overwrite,
32545                 optional <ref>SuccessCallback</ref>? onsuccess,
32546                 optional <ref>ErrorCallback</ref>? onerror) raises(<ref>WebAPIException</ref>);</webidl>
32547         <descriptive>
32548             <brief>
32549  Moves a file or a directory from a specified location to another.
32550             </brief>
32551            <description>
32552             <p>
32553 The file or directory will be moved (and will overwrite if possible and specified)
32554 atomically to the given path. This operation is different from 
32555 instantiating copyTo and then deleting the original file, as on certain
32556 platforms, this operation does not require extra disk space.
32557             </p>
32558             <p>
32559 The file or directory identified by the originFilePath parameter
32560 MUST be moved to the path passed in the destinationFilePath parameter.
32561             </p>
32562             <p>
32563 The file to be moved MUST be under the Directory from which the method
32564 is invoked, otherwise the operation MUST NOT be performed.
32565             </p>
32566             <p>
32567 If the file or directory is moved successfully, the onsuccess is
32568 invoked.
32569             </p>
32570             <p>
32571 The ErrorCallback is launched with these error types:
32572             </p>
32573             <ul>
32574               <li>
32575 InvalidValuesError: If any of the input parameters contain an invalid value.               </li>
32576               <li>
32577 NotFoundError: originFilePath does not correspond to a valid file or destinationPath is not a valid path.              </li>
32578               <li>
32579 IOError: The File in which the moveTo method is invoked is a file (not a directory),
32580 originFilePath corresponds to a file or directory in use by another process,
32581 overwrite parameter is <em>false</em> and destinationFilePath corresponds to an existing
32582 file or directory.              </li>
32583               <li>
32584 UnknownError: In any other error case.              </li>
32585             </ul>
32586            </description>
32587             <version>
32588  1.0
32589             </version>
32590             <privilegelevel>
32591  public
32592             </privilegelevel>
32593             <privilege>
32594  http://tizen.org/privilege/filesystem.write
32595             </privilege>
32596             <Code> var documentsDir;
32597  function onsuccess(files) {
32598    for(var i = 0; i &#60; files.length; i++) {
32599      if (files[i].isDirectory == false) {
32600        documentsDir.moveTo(files[i].fullPath,
32601                            &quot;images/newFolder/&quot; + files[i].name,
32602                            false,
32603                            function(){console.log(&quot;file moved&quot;);});
32604      }
32605    }
32606  }
32607
32608  function onerror(error) {
32609    console.log(&quot;The error &quot; + error.message +
32610                &quot; occurred during listing the files in the selected folder&quot;);
32611  }
32612
32613  tizen.filesystem.resolve(
32614      'documents', 
32615      function(dir){
32616        documentsDir = dir;
32617        dir.listFiles(onsuccess, onerror);
32618      }, function(e) {
32619        console.log(&quot;Error&quot; + e.message);
32620      }, &quot;rw&quot;
32621  );
32622  </Code>
32623         </descriptive>
32624         <Type type="void"/>
32625         <ArgumentList>
32626           <Argument name="originFilePath">
32627             <descriptive>
32628                 <description><p>
32629  The origin full virtual file or directory path, it must be under the current directory.
32630                 </p></description>
32631             </descriptive>
32632             <Type type="DOMString"/>
32633           </Argument>
32634           <Argument name="destinationFilePath">
32635             <descriptive>
32636                 <description><p>
32637  The new full virtual file path or directory path.
32638                 </p></description>
32639             </descriptive>
32640             <Type type="DOMString"/>
32641           </Argument>
32642           <Argument name="overwrite">
32643             <descriptive>
32644                 <description><p>
32645  <em>true</em> enforces overwriting an existing file.
32646                 </p></description>
32647             </descriptive>
32648             <Type type="boolean"/>
32649           </Argument>
32650           <Argument optional="optional" name="onsuccess">
32651             <descriptive>
32652                 <description><p>
32653  Called when the file has been moved.
32654                 </p></description>
32655             </descriptive>
32656             <Type name="SuccessCallback" nullable="nullable"/>
32657           </Argument>
32658           <Argument optional="optional" name="onerror">
32659             <descriptive>
32660                 <description><p>
32661  Called if an error occurred.
32662                 </p></description>
32663             </descriptive>
32664             <Type name="ErrorCallback" nullable="nullable"/>
32665           </Argument>
32666         </ArgumentList>
32667         <Raises>
32668           <RaiseException name="WebAPIException">
32669             <descriptive>
32670                 <description><p>
32671  with error type TypeMismatchError, if the input parameter
32672 is not compatible with the expected type for that parameter.
32673                 </p></description>
32674                 <description><p>
32675  with error type SecurityError, if the application does not have the privilege to call this method.
32676                 </p></description>
32677                 <description><p>
32678  with error type NotSupportedError, if the feature is not supported.
32679                 </p></description>
32680             </descriptive>
32681           </RaiseException>
32682         </Raises>
32683       </Operation>
32684       <Operation name="createDirectory" id="::Filesystem::File::createDirectory">
32685         <webidl>    <ref>File</ref> createDirectory(DOMString dirPath) raises(<ref>WebAPIException</ref>);</webidl>
32686         <descriptive>
32687             <brief>
32688  Creates a new directory.
32689             </brief>
32690            <description>
32691             <p>
32692 A new directory will be created relative to the current
32693 directory that this operation is performed on. The implementation will attempt to
32694 create all necessary sub-directories specified in the dirPath, as well. The use of &quot;.&quot;
32695 or &quot;..&quot; in path components is not supported.
32696             </p>
32697             <p>
32698 This operation can only be performed on file handlers that
32699 represent a directory (that is, <var>isDirectory == true</var>).
32700             </p>
32701             <p>
32702 If the directory is successfully created, it will be returned.
32703             </p>
32704             <p>
32705 In case the directory cannot be created, an error MUST be thrown
32706 with the appropriate error type.
32707             </p>
32708            </description>
32709             <version>
32710  1.0
32711             </version>
32712             <privilegelevel>
32713  public
32714             </privilegelevel>
32715             <privilege>
32716  http://tizen.org/privilege/filesystem.write
32717             </privilege>
32718             <Code> var dir; //Directory object obtained from filesystem API
32719  var newDir = dir.createDirectory(&quot;newDir&quot;);
32720  var anotherNewDir = dir.createDirectory(&quot;newDir1/subNewDir1&quot;);
32721  </Code>
32722         </descriptive>
32723         <Type name="File">
32724           <descriptive>
32725               <description><p>
32726  File The file handle of the new directory. The new File object
32727 will have &quot;rw&quot; access rights, as it inherits this from
32728 the File object on which the createDirectory() method is
32729 called.
32730               </p></description>
32731           </descriptive>
32732         </Type>
32733         <ArgumentList>
32734           <Argument name="dirPath">
32735             <descriptive>
32736                 <description><p>
32737  The relative directory path, it should only contain
32738 characters supported by the underlying filesystem.
32739                 </p></description>
32740             </descriptive>
32741             <Type type="DOMString"/>
32742           </Argument>
32743         </ArgumentList>
32744         <Raises>
32745           <RaiseException name="WebAPIException">
32746             <descriptive>
32747                 <description><p>
32748  with error type IOError, if the dirPath already exists.
32749                 </p></description>
32750                 <description><p>
32751  with error type InvalidValuesError, if the dirPath does not contain a valid path.
32752                 </p></description>
32753                 <description><p>
32754  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
32755                 </p></description>
32756                 <description><p>
32757  with error type SecurityError, if the application does not have the privilege to call this method.
32758                 </p></description>
32759                 <description><p>
32760  with error type NotSupportedError, if the feature is not supported.
32761                 </p></description>
32762                 <description><p>
32763  with error type UnknownError in any other error case.     
32764                 </p></description>
32765             </descriptive>
32766           </RaiseException>
32767         </Raises>
32768       </Operation>
32769       <Operation name="createFile" id="::Filesystem::File::createFile">
32770         <webidl>    <ref>File</ref> createFile(DOMString relativeFilePath) raises(<ref>WebAPIException</ref>);</webidl>
32771         <descriptive>
32772             <brief>
32773  Creates a new empty file in a specified location.
32774             </brief>
32775            <description>
32776             <p>
32777 A new empty file is created in the given path relative
32778 to the directory indicated by current 'File' object's 'path' attribute.
32779 The use of &quot;.&quot; or &quot;..&quot; in path components is not supported.
32780 This operation can only be performed on file handlers that
32781 represent a directory (that is, <var>isDirectory == true</var>).
32782             </p>
32783             <p>
32784 If the file is successfully created, a file handler MUST
32785 be returned by this method.
32786             </p>
32787             <p>
32788 In case the file cannot be created, an error MUST be thrown
32789 with the appropriate error type.
32790             </p>
32791            </description>
32792             <version>
32793  1.0
32794             </version>
32795             <privilegelevel>
32796  public
32797             </privilegelevel>
32798             <privilege>
32799  http://tizen.org/privilege/filesystem.write
32800             </privilege>
32801             <Code> var newFile = dir.createFile(&quot;newFilePath&quot;);
32802  </Code>
32803         </descriptive>
32804         <Type name="File">
32805           <descriptive>
32806               <description><p>
32807  File The file handle of the new empty file. The new File object
32808 will have &quot;rw&quot; access rights, as it inherits this from
32809 the File object on which the createFile() method is
32810 called.
32811               </p></description>
32812           </descriptive>
32813         </Type>
32814         <ArgumentList>
32815           <Argument name="relativeFilePath">
32816             <descriptive>
32817                 <description><p>
32818  The new file path, it should only contain characters supported by the underlying filesystem.
32819                 </p></description>
32820             </descriptive>
32821             <Type type="DOMString"/>
32822           </Argument>
32823         </ArgumentList>
32824         <Raises>
32825           <RaiseException name="WebAPIException">
32826             <descriptive>
32827                 <description><p>
32828  with error type IOError, if the filePath already exists.
32829                 </p></description>
32830                 <description><p>
32831  with error type InvalidValuesError, if the filePath contains an invalid value.
32832                 </p></description>
32833                 <description><p>
32834  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
32835                 </p></description>
32836                 <description><p>
32837  with error type SecurityError, if the application does not have the privilege to call this method.
32838                 </p></description>
32839                 <description><p>
32840  with error type NotSupportedError, if the feature is not supported.
32841                 </p></description>
32842                 <description><p>
32843  with error type UnknownError, in any other error case.     
32844                 </p></description>
32845             </descriptive>
32846           </RaiseException>
32847         </Raises>
32848       </Operation>
32849       <Operation name="resolve" id="::Filesystem::File::resolve">
32850         <webidl>    <ref>File</ref> resolve(DOMString filePath) raises(<ref>WebAPIException</ref>);</webidl>
32851         <descriptive>
32852             <brief>
32853  Resolves an existing file or directory relative to
32854 the current directory this operation is performed on, and
32855 returns a file handle for it.
32856             </brief>
32857            <description>
32858             <p>
32859 The filePath is not allowed to contain the &quot;.&quot; or &quot;..&quot; directories.
32860             </p>
32861             <p>
32862 The encoding of file paths is <a href="http://www.ietf.org/rfc/rfc2279.txt">UTF-8</a>.
32863             </p>
32864            </description>
32865             <version>
32866  1.0
32867             </version>
32868             <privilegelevel>
32869  public
32870             </privilegelevel>
32871             <privilege>
32872  http://tizen.org/privilege/filesystem.read
32873             </privilege>
32874             <Code> var file;
32875  // Resolves helloWorld.doc file that is located in the
32876  // documents root location
32877  tizen.filesystem.resolve(
32878    'documents', 
32879    function(dir){ file = dir.resolve(&quot;helloWorld.doc&quot;);},
32880    function(e){ console.log(&quot;Error&quot; + e.message);},
32881    &quot;rw&quot;);
32882  </Code>
32883         </descriptive>
32884         <Type name="File">
32885           <descriptive>
32886               <description><p>
32887  File The file handle of the file. The new File object will inherit its access
32888 rights from the File object on which this resolve() method
32889 is called.
32890               </p></description>
32891           </descriptive>
32892         </Type>
32893         <ArgumentList>
32894           <Argument name="filePath">
32895             <descriptive>
32896                 <description><p>
32897  The relative file/directory path/file URI to resolve.
32898                 </p></description>
32899             </descriptive>
32900             <Type type="DOMString"/>
32901           </Argument>
32902         </ArgumentList>
32903         <Raises>
32904           <RaiseException name="WebAPIException">
32905             <descriptive>
32906                 <description><p>
32907  with error type TypeMismatchError, if the input parameter
32908 is not compatible with the expected type for that parameter.
32909                 </p></description>
32910                 <description><p>
32911  with error type InvalidValuesError, if the file path contains an
32912 invalid value.
32913                 </p></description>
32914                 <description><p>
32915  with error type IOError, if the method is executed in a File object
32916 that does not represent a directory (that is, isDirectory attribute is false).
32917                 </p></description>
32918                 <description><p>
32919  with error type NotFoundError, if a file does not exist for the passed
32920 file path.
32921                 </p></description>
32922                 <description><p>
32923  with error type SecurityError, if the application does not have the privilege to call this method.
32924                 </p></description>
32925                 <description><p>
32926  with error type NotSupportedError, if the feature is not supported.
32927                 </p></description>
32928                 <description><p>
32929  with error type UnknownError in any other error case.     
32930                 </p></description>
32931             </descriptive>
32932           </RaiseException>
32933         </Raises>
32934       </Operation>
32935       <Operation name="deleteDirectory" id="::Filesystem::File::deleteDirectory">
32936         <webidl>    void deleteDirectory(DOMString directoryPath,
32937                          boolean recursive,
32938                          optional <ref>SuccessCallback</ref>? onsuccess,
32939                          optional <ref>ErrorCallback</ref>? onerror) raises(<ref>WebAPIException</ref>);</webidl>
32940         <descriptive>
32941             <brief>
32942  Deletes a specified directory and directory tree if specified.
32943             </brief>
32944            <description>
32945             <p>
32946 This function attempts to asynchronously delete a directory or directory tree under the current
32947 directory.
32948             </p>
32949             <p>
32950 If the recursive parameter is set to <em>true</em>, all the directories and files under the specified
32951 directory MUST be deleted. If the recursive parameter is set to false, the directory will
32952 only be deleted if it is empty, otherwise an IOError error type will be passed in onerror.
32953             </p>
32954             <p>
32955 The directory to be deleted MUST be under the Directory that the method
32956 is invoked from, otherwise the operation MUST NOT be performed.
32957 If the deletion is performed successfully, the onsuccess is invoked.
32958             </p>
32959             <p>
32960 The ErrorCallback is launched with these error types:
32961             </p>
32962             <ul>
32963               <li>
32964 InvalidValuesError: If any of the input parameters contain an invalid value.               </li>
32965               <li>
32966 NotFoundError: The passed directory does not correspond to a valid directory.               </li>
32967               <li>
32968 IOError: The File in which the delete method is invoked
32969 is a file (not a directory), the directory is in use by another process
32970 or the directory is not empty and recursive argument is <em>false</em>.
32971 This code will be also used if a recursive deletion partially fails
32972 and any data deleted so far cannot be recovered. This may occur
32973 due to the lack of filesystem permissions or if any
32974 directories or files are opened by other processes.              </li>
32975               <li>
32976 UnknownError: In any other error case.              </li>
32977             </ul>
32978            </description>
32979             <version>
32980  1.0
32981             </version>
32982             <privilegelevel>
32983  public
32984             </privilegelevel>
32985             <privilege>
32986  http://tizen.org/privilege/filesystem.write
32987             </privilege>
32988             <Code> var documentsDir;
32989  function onsuccess(files) {
32990    for(var i = 0; i &#60; files.length; i++) {
32991      if (files[i].isDirectory) {
32992        documentsDir.deleteDirectory(
32993            files[i].fullPath,
32994            false,
32995            function(){
32996              console.log(&quot;Directory Deleted&quot;);
32997            }, function(e) {
32998              console.log(&quot;Error&quot; + e.message);
32999            });
33000      } else {
33001        documentsDir.deleteFile(
33002            files[i].fullPath,
33003            function(){
33004              console.log(&quot;File Deleted&quot;);
33005            }, function(e) {
33006              console.log(&quot;Error&quot; + e.message);
33007            });
33008      }
33009    }
33010  }
33011
33012  function onerror(error) {
33013    console.log(&quot;The error &quot; + error.message + &quot; occurred when listing the files in the selected folder&quot;);
33014  }
33015
33016  tizen.filesystem.resolve(
33017      'documents', 
33018      function(dir){
33019        documentsDir = dir;
33020        dir.listFiles(onsuccess,onerror);
33021      }, function(e) {
33022        console.log(&quot;Error&quot; + e.message);
33023      }, &quot;rw&quot;
33024  );
33025  </Code>
33026         </descriptive>
33027         <Type type="void"/>
33028         <ArgumentList>
33029           <Argument name="directoryPath">
33030             <descriptive>
33031                 <description><p>
33032  The full virtual path to the directory to be deleted (must be under the current one).
33033                 </p></description>
33034             </descriptive>
33035             <Type type="DOMString"/>
33036           </Argument>
33037           <Argument name="recursive">
33038             <descriptive>
33039                 <description><p>
33040  <em>true</em> means a recursive deletion. This
33041 will delete all data in all subdirectories. Use with caution.
33042                 </p></description>
33043             </descriptive>
33044             <Type type="boolean"/>
33045           </Argument>
33046           <Argument optional="optional" name="onsuccess">
33047             <descriptive>
33048                 <description><p>
33049  Called if the directory is successfully deleted.
33050                 </p></description>
33051             </descriptive>
33052             <Type name="SuccessCallback" nullable="nullable"/>
33053           </Argument>
33054           <Argument optional="optional" name="onerror">
33055             <descriptive>
33056                 <description><p>
33057  Called if an error occurred.
33058                 </p></description>
33059             </descriptive>
33060             <Type name="ErrorCallback" nullable="nullable"/>
33061           </Argument>
33062         </ArgumentList>
33063         <Raises>
33064           <RaiseException name="WebAPIException">
33065             <descriptive>
33066                 <description><p>
33067  with error type TypeMismatchError, if the input parameter
33068 is not compatible with the expected type for that parameter.
33069                 </p></description>
33070                 <description><p>
33071  with error type SecurityError, if the application does not have the privilege to call this method.
33072                 </p></description>
33073                 <description><p>
33074  with error type NotSupportedError, if the feature is not supported.
33075                 </p></description>
33076             </descriptive>
33077           </RaiseException>
33078         </Raises>
33079       </Operation>
33080       <Operation name="deleteFile" id="::Filesystem::File::deleteFile">
33081         <webidl>    void deleteFile(DOMString filePath,
33082                     optional <ref>SuccessCallback</ref>? onsuccess,
33083                     optional <ref>ErrorCallback</ref>? onerror) raises(<ref>WebAPIException</ref>);</webidl>
33084         <descriptive>
33085             <brief>
33086  Deletes a specified file.
33087             </brief>
33088            <description>
33089             <p>
33090 This function attempts to asynchronously delete a file under the current directory.
33091             </p>
33092             <p>
33093 The file to be deleted MUST be under the Directory from which the method
33094 is invoked, otherwise the operation MUST NOT be performed.
33095             </p>
33096             <p>
33097 If the deletion is performed successfully, the onsuccess is invoked.
33098             </p>
33099             <p>
33100 The ErrorCallback is launched with these error types:
33101             </p>
33102             <ul>
33103               <li>
33104 InvalidValuesError: If any of the input parameters contain an invalid value.               </li>
33105               <li>
33106 NotFoundError: The file does not correspond to a valid file.               </li>
33107               <li>
33108 IOError: The file in which the delete method is invoked
33109 is a directory (not a file), the file is in use by another process,
33110 or there is no permission in the file system.              </li>
33111               <li>
33112 UnknownError: In any other error case.              </li>
33113             </ul>
33114            </description>
33115             <version>
33116  1.0
33117             </version>
33118             <privilegelevel>
33119  public
33120             </privilegelevel>
33121             <privilege>
33122  http://tizen.org/privilege/filesystem.write
33123             </privilege>
33124             <Code> function onsuccess(files) {
33125    for(var i = 0; i &#60; files.length; i++) {
33126      if (files[i].isDirectory) {
33127        documentsDir.deleteDirectory(
33128            files[i].fullPath,
33129            false,
33130            function(){
33131              console.log(&quot;Directory Deleted&quot;);
33132            }, function(e) {
33133              console.log(&quot;Error&quot; + e.message);
33134            });
33135      } else {
33136        documentsDir.deleteFile(
33137            files[i].fullPath,
33138            function(){
33139              console.log(&quot;File Deleted&quot;);
33140            }, function(e) {
33141              console.log(&quot;Error&quot; + e.message);
33142            });
33143      }
33144    }
33145  }
33146
33147  function onerror(error) {
33148    console.log(&quot;The error &quot; + error.message + &quot; occurred when listing the files in the selected folder&quot;);
33149  }
33150
33151  var documentsDir;
33152  tizen.filesystem.resolve(
33153    'documents', 
33154    function(dir){
33155      documentsDir = dir;
33156      dir.listFiles(onsuccess,onerror);
33157    }, function(e){
33158      console.log(&quot;Error&quot; + e.message);
33159    }, &quot;rw&quot;
33160  );
33161  </Code>
33162         </descriptive>
33163         <Type type="void"/>
33164         <ArgumentList>
33165           <Argument name="filePath">
33166             <descriptive>
33167                 <description><p>
33168  The full virtual path to the file to be deleted (must be under the current directory).
33169                 </p></description>
33170             </descriptive>
33171             <Type type="DOMString"/>
33172           </Argument>
33173           <Argument optional="optional" name="onsuccess">
33174             <descriptive>
33175                 <description><p>
33176  Called if the file is successfully deleted.
33177                 </p></description>
33178             </descriptive>
33179             <Type name="SuccessCallback" nullable="nullable"/>
33180           </Argument>
33181           <Argument optional="optional" name="onerror">
33182             <descriptive>
33183                 <description><p>
33184  Called if an error occurred.
33185                 </p></description>
33186             </descriptive>
33187             <Type name="ErrorCallback" nullable="nullable"/>
33188           </Argument>
33189         </ArgumentList>
33190         <Raises>
33191           <RaiseException name="WebAPIException">
33192             <descriptive>
33193                 <description><p>
33194  with error type TypeMismatchError, if the input parameter
33195 is not compatible with the expected type for that parameter.
33196                 </p></description>
33197                 <description><p>
33198  with error type SecurityError, if the application does not have the privilege to call this method.
33199                 </p></description>
33200                 <description><p>
33201  with error type NotSupportedError, if the feature is not supported.
33202                 </p></description>
33203             </descriptive>
33204           </RaiseException>
33205         </Raises>
33206       </Operation>
33207     </Interface>
33208     <Dictionary name="FileFilter" id="::Filesystem::FileFilter">
33209       <webidl>  dictionary FileFilter {
33210     DOMString name;
33211
33212     Date startModified;
33213
33214     Date endModified;
33215
33216     Date startCreated;
33217
33218     Date endCreated;
33219   };</webidl>
33220       <descriptive>
33221           <brief>
33222  Dictionary created to filter the items returned by the listFiles method.
33223           </brief>
33224          <description>
33225           <p>
33226 When this dictionary is passed in the listFiles method, the result-set of
33227 the listFiles method MUST only contain the file items entries that match
33228 the attribute values of the filter.
33229 The result set of the listFiles method does not guarantee any sort order.
33230           </p>
33231           <p>
33232 A file item only matches the FileFilter object if all the attributes of the file item match
33233 all the attribute values of the filter which are defined (that is, only matching values other
33234 than undefined or <em>null</em>). This is similar to an SQL &quot;AND&quot; operation.
33235           </p>
33236           <p>
33237 An attribute of the file entry matches the FileFilter attribute value in accordance with the
33238 following rules:
33239           </p>
33240           <ul>
33241             <li>
33242 For FileFilter attributes of type DOMString, an entry matches this value only if its
33243 corresponding attribute is an exact match. If the filter contains U+0025 'PERCENT SIGN' it is
33244 interpreted as a wildcard character and '%' matches any string of any length, including no
33245 length. If wildcards are used, the behavior is similar to the LIKE condition in SQL. To
33246 specify that a 'PERCENT SIGN' character is to be considered literally instead of interpreting it
33247 as a wildcard, developers may escape it with the backslash character (\).
33248 The matching is not case sensitive, such as &quot;FOO&quot; matches a &quot;foo&quot; or an &quot;f%&quot; filter.
33249             </li>
33250             <li>
33251 For File entry attributes of type Date, attributes start and end are included to allow
33252 filtering of File entries between two supplied dates. If either or both of these attributes are
33253 specified, the following rules apply:
33254 A) If both start and end dates are specified (that is, other than <em>null</em>), a File entry matches the
33255 filter if it's corresponding attribute is the same as either start or end or between the two
33256 supplied dates (that is, after start and before end).
33257 B) If only the start attribute contains a value (other than <em>null</em>), a File entry matches the
33258 filter if its corresponding attribute is later than or equal to the start one.
33259 C) If only the end date contains a value (other than <em>null</em>), a file matches the filter if its
33260 corresponding attribute is earlier than or equal to the end date.
33261             </li>
33262           </ul>
33263          </description>
33264           <version>
33265  1.0
33266           </version>
33267       </descriptive>
33268       <DictionaryMember name="name" id="::Filesystem::FileFilter::name">
33269         <webidl>    DOMString name;</webidl>
33270         <descriptive>
33271             <brief>
33272  Used for filtering the File name attribute.
33273             </brief>
33274            <description>
33275             <p>
33276 Files which name corresponds with this attribute
33277 (either exactly or with the specified wildcards) match
33278 this filtering criteria.
33279             </p>
33280            </description>
33281             <version>
33282  1.0
33283             </version>
33284         </descriptive>
33285         <Type type="DOMString"/>
33286       </DictionaryMember>
33287       <DictionaryMember name="startModified" id="::Filesystem::FileFilter::startModified">
33288         <webidl>    Date startModified;</webidl>
33289         <descriptive>
33290             <brief>
33291  Used for filtering the File modified attribute.
33292             </brief>
33293            <description>
33294             <p>
33295 Files with modified date later than this attribute or equal to it match
33296 the filtering criteria.
33297             </p>
33298            </description>
33299             <version>
33300  1.0
33301             </version>
33302         </descriptive>
33303         <Type type="Date"/>
33304       </DictionaryMember>
33305       <DictionaryMember name="endModified" id="::Filesystem::FileFilter::endModified">
33306         <webidl>    Date endModified;</webidl>
33307         <descriptive>
33308             <brief>
33309  Used for filtering the File created attribute.
33310             </brief>
33311            <description>
33312             <p>
33313 Files with modified date earlier than this attribute or equal to it
33314 match the filtering criteria.
33315             </p>
33316            </description>
33317             <version>
33318  1.0
33319             </version>
33320         </descriptive>
33321         <Type type="Date"/>
33322       </DictionaryMember>
33323       <DictionaryMember name="startCreated" id="::Filesystem::FileFilter::startCreated">
33324         <webidl>    Date startCreated;</webidl>
33325         <descriptive>
33326             <brief>
33327  Used for filtering the File created attribute.
33328             </brief>
33329            <description>
33330             <p>
33331 Files with created date later than this attribute or equal to it match
33332 the filtering criteria.
33333             </p>
33334            </description>
33335             <version>
33336  1.0
33337             </version>
33338         </descriptive>
33339         <Type type="Date"/>
33340       </DictionaryMember>
33341       <DictionaryMember name="endCreated" id="::Filesystem::FileFilter::endCreated">
33342         <webidl>    Date endCreated;</webidl>
33343         <descriptive>
33344             <brief>
33345  Used for filtering the File created attribute.
33346             </brief>
33347            <description>
33348             <p>
33349 Files with created date earlier than this attribute or equal to it
33350 match the filtering criteria.
33351             </p>
33352            </description>
33353             <version>
33354  1.0
33355             </version>
33356         </descriptive>
33357         <Type type="Date"/>
33358       </DictionaryMember>
33359     </Dictionary>
33360     <Interface name="FileStream" id="::Filesystem::FileStream">
33361       <webidl>  [NoInterfaceObject] interface FileStream {
33362     readonly attribute boolean eof;
33363
33364     attribute long position setraises(<ref>WebAPIException</ref>);
33365
33366     readonly attribute long bytesAvailable;
33367
33368     void close();
33369
33370     DOMString read(long charCount) raises(<ref>WebAPIException</ref>);
33371
33372     octet[] readBytes(long byteCount) raises(<ref>WebAPIException</ref>);
33373
33374     DOMString readBase64(long byteCount) raises(<ref>WebAPIException</ref>);
33375
33376     void write(DOMString stringData) raises(<ref>WebAPIException</ref>);
33377
33378     void writeBytes(octet[] byteData) raises(<ref>WebAPIException</ref>);
33379
33380     void writeBase64(DOMString base64Data) raises(<ref>WebAPIException</ref>);
33381   };</webidl>
33382       <descriptive>
33383           <brief>
33384  FileStream API.
33385           </brief>
33386          <description>
33387           <p>
33388 A FileStream represents a handle to a File opened for read and/or
33389 write operations. Read and write operations are performed relative
33390 to a position attribute, which is a pointer that represents the current position in the file.
33391           </p>
33392           <p>
33393 A series of read/write methods are available that permit both binary and
33394 text to be processed.
33395           </p>
33396           <p>
33397 Once a file stream is closed, any operation attempted on this stream
33398 will result in a standard JavaScript error.
33399           </p>
33400           <p>
33401 The read/write operations in this interface do not throw any security
33402 exceptions as the access rights are expected to be granted through the initial
33403 resolve() method or through the openStream() method of the File interface.
33404 Therefore, all actions performed on a successfully resolved File and FileStream are
33405 expected to succeed. This avoids successive asynchronous calls and may potentially increase
33406 application for a user.
33407           </p>
33408          </description>
33409           <version>
33410  1.0
33411           </version>
33412       </descriptive>
33413       <ExtendedAttributeList>
33414         <ExtendedAttribute name="NoInterfaceObject">
33415           <webidl>NoInterfaceObject</webidl>
33416         </ExtendedAttribute>
33417       </ExtendedAttributeList>
33418       <Attribute readonly="readonly" name="eof" id="::Filesystem::FileStream::eof">
33419         <webidl>    readonly attribute boolean eof;</webidl>
33420         <descriptive>
33421             <brief>
33422  Indicates whether or not the current file pointer is at the end
33423 of the file.
33424             </brief>
33425            <description>
33426             <p>
33427 If <em>true</em>, this attribute indicates that the file pointer is at the end of the file.
33428             </p>
33429             <p>
33430 If <em>false</em>, this attribute indicates that the file pointer is not at the end of the file
33431 and may be anywhere within the file.
33432             </p>
33433            </description>
33434             <version>
33435  1.0
33436             </version>
33437             <Code> if(stream.eof) {
33438    // file has been read completely
33439  }
33440  </Code>
33441         </descriptive>
33442         <Type type="boolean"/>
33443       </Attribute>
33444       <Attribute name="position" id="::Filesystem::FileStream::position">
33445         <webidl>    attribute long position setraises(<ref>WebAPIException</ref>);</webidl>
33446         <descriptive>
33447             <brief>
33448  Gets/sets stream position for reads/writes.
33449             </brief>
33450            <description>
33451             <p>
33452 The stream position is an offset of bytes from the start of
33453 the file stream. When invoking an operation that reads or
33454 writes from the stream, the operation will take place from the
33455 byte defined by this position attribute. If the read or write
33456 operation is successful, the position of the stream is advanced
33457 by the number of bytes read or written. If the read/write operation is not
33458 successful, the position of the stream is unchanged.
33459             </p>
33460            </description>
33461             <version>
33462  1.0
33463             </version>
33464             <Code> console.log(stream.position); // displays current stream position
33465  // alters current stream position to the begin of the file,
33466  // like seek() in C
33467  stream.position = 0;
33468  </Code>
33469         </descriptive>
33470         <Type type="long"/>
33471         <SetRaises>
33472           <RaiseException name="WebAPIException"/>
33473         </SetRaises>
33474       </Attribute>
33475       <Attribute readonly="readonly" name="bytesAvailable" id="::Filesystem::FileStream::bytesAvailable">
33476         <webidl>    readonly attribute long bytesAvailable;</webidl>
33477         <descriptive>
33478             <brief>
33479  Returns the number of bytes that are available for
33480 reading from the stream.
33481             </brief>
33482            <description>
33483             <p>
33484 The number of bytes available for reading is the maximum
33485 amount of bytes that can be read in the next read operation.
33486 It corresponds to the number of bytes available after the file pointer
33487 denoted by the position attribute.
33488             </p>
33489             <p>
33490 -1 if eof is <em>true</em>.
33491             </p>
33492            </description>
33493             <version>
33494  1.0
33495             </version>
33496             <Code> console.log(stream.bytesAvailable); // displays the available bytes to be read
33497  </Code>
33498         </descriptive>
33499         <Type type="long"/>
33500       </Attribute>
33501       <Operation name="close" id="::Filesystem::FileStream::close">
33502         <webidl>    void close();</webidl>
33503         <descriptive>
33504             <brief>
33505  Closes this FileStream.
33506             </brief>
33507            <description>
33508             <p>
33509 Flushes any pending buffered writes and closes the File. Always succeeds.
33510 Note that pending writes might not succeed.
33511             </p>
33512            </description>
33513             <version>
33514  1.0
33515             </version>
33516             <privilegelevel>
33517  public
33518             </privilegelevel>
33519             <privilege>
33520  http://tizen.org/privilege/filesystem.read
33521             </privilege>
33522             <Code> stream.close(); // closes this stream, no subsequent access to stream allowed
33523  </Code>
33524         </descriptive>
33525         <Type type="void"/>
33526         <ArgumentList/>
33527       </Operation>
33528       <Operation name="read" id="::Filesystem::FileStream::read">
33529         <webidl>    DOMString read(long charCount) raises(<ref>WebAPIException</ref>);</webidl>
33530         <descriptive>
33531             <brief>
33532  Reads the specified number of characters from this FileStream.
33533             </brief>
33534            <description>
33535             <p>
33536 Reads the specified number of characters after the position file pointer and returns them as a string.
33537 The resulting string length might be shorter than charCount if eof
33538 is <em>true</em>.
33539             </p>
33540            </description>
33541             <version>
33542  1.0
33543             </version>
33544             <privilegelevel>
33545  public
33546             </privilegelevel>
33547             <privilege>
33548  http://tizen.org/privilege/filesystem.read
33549             </privilege>
33550             <Code> var text = stream.read(file.fileSize);
33551  stream.close();
33552  </Code>
33553         </descriptive>
33554         <Type type="DOMString">
33555           <descriptive>
33556               <description><p>
33557  DOMString The result of read characters as a string.
33558               </p></description>
33559           </descriptive>
33560         </Type>
33561         <ArgumentList>
33562           <Argument name="charCount">
33563             <descriptive>
33564                 <description><p>
33565  Number of characters being read.
33566                 </p></description>
33567             </descriptive>
33568             <Type type="long"/>
33569           </Argument>
33570         </ArgumentList>
33571         <Raises>
33572           <RaiseException name="WebAPIException">
33573             <descriptive>
33574                 <description><p>
33575  with error type IOError, if a read error occurs, such as the bytes in the stream
33576 cannot be decoded with the encoding in use.
33577                 </p></description>
33578                 <description><p>
33579  with error type TypeMismatchError, if the input parameter
33580 is not compatible with the expected type for that parameter.
33581                 </p></description>
33582                 <description><p>
33583  with error type InvalidValuesError, if any of the input 
33584 parameters contain an invalid value.
33585                 </p></description>
33586                 <description><p>
33587  with error type SecurityError, if the application does not have the privilege to call this method.
33588                 </p></description>
33589                 <description><p>
33590  with error type NotSupportedError, if the feature is not supported.
33591                 </p></description>
33592             </descriptive>
33593           </RaiseException>
33594         </Raises>
33595       </Operation>
33596       <Operation name="readBytes" id="::Filesystem::FileStream::readBytes">
33597         <webidl>    octet[] readBytes(long byteCount) raises(<ref>WebAPIException</ref>);</webidl>
33598         <descriptive>
33599             <brief>
33600  Reads the specified number of bytes from this FileStream.
33601             </brief>
33602             <version>
33603  1.0
33604             </version>
33605             <privilegelevel>
33606  public
33607             </privilegelevel>
33608             <privilege>
33609  http://tizen.org/privilege/filesystem.read
33610             </privilege>
33611             <Code> // reads up to 256 bytes from the stream
33612  var raw = stream.readBytes(256);
33613  for(var i = 0; i &#60; raw.length; i++) {
33614    // raw[i] contains the i-th byte of the current data chunk
33615  }
33616  </Code>
33617         </descriptive>
33618         <Type type="array">
33619           <descriptive>
33620               <description><p>
33621  octet[] The result of read bytes as a byte (or number) array.
33622               </p></description>
33623           </descriptive>
33624           <Type type="octet"/>
33625         </Type>
33626         <ArgumentList>
33627           <Argument name="byteCount">
33628             <descriptive>
33629                 <description><p>
33630  Number of bytes being read.
33631                 </p></description>
33632             </descriptive>
33633             <Type type="long"/>
33634           </Argument>
33635         </ArgumentList>
33636         <Raises>
33637           <RaiseException name="WebAPIException">
33638             <descriptive>
33639                 <description><p>
33640  with error type IOError, if a read error occurs.
33641                 </p></description>
33642                 <description><p>
33643  with error type TypeMismatchError, if the input parameter
33644 is not compatible with the expected type for that parameter.
33645                 </p></description>
33646                 <description><p>
33647  with error type InvalidValuesError, if any of the input 
33648 parameters contain an invalid value.
33649                 </p></description>
33650                 <description><p>
33651  with error type SecurityError, if the application does not have the privilege to call this method.
33652                 </p></description>
33653                 <description><p>
33654  with error type NotSupportedError, if the feature is not supported.
33655                 </p></description>
33656             </descriptive>
33657           </RaiseException>
33658         </Raises>
33659       </Operation>
33660       <Operation name="readBase64" id="::Filesystem::FileStream::readBase64">
33661         <webidl>    DOMString readBase64(long byteCount) raises(<ref>WebAPIException</ref>);</webidl>
33662         <descriptive>
33663             <brief>
33664  Reads the specified number of bytes from this FileStream, encoding
33665 the result in base64.
33666             </brief>
33667             <version>
33668  1.0
33669             </version>
33670             <privilegelevel>
33671  public
33672             </privilegelevel>
33673             <privilege>
33674  http://tizen.org/privilege/filesystem.read
33675             </privilege>
33676             <Code> // reads up to 256 bytes from the stream
33677  var base64 = stream.readBase64(256);
33678  </Code>
33679         </descriptive>
33680         <Type type="DOMString">
33681           <descriptive>
33682               <description><p>
33683  DOMString The result of read bytes as base64 encoding string.
33684               </p></description>
33685           </descriptive>
33686         </Type>
33687         <ArgumentList>
33688           <Argument name="byteCount">
33689             <descriptive>
33690                 <description><p>
33691  Number of bytes being read.
33692                 </p></description>
33693             </descriptive>
33694             <Type type="long"/>
33695           </Argument>
33696         </ArgumentList>
33697         <Raises>
33698           <RaiseException name="WebAPIException">
33699             <descriptive>
33700                 <description><p>
33701  with error type IOError, if a read error occurs.
33702                 </p></description>
33703                 <description><p>
33704  with error type TypeMismatchError, if the input parameter
33705 is not compatible with the expected type for that parameter.
33706                 </p></description>
33707                 <description><p>
33708  with error type InvalidValuesError, if any of the input 
33709 parameters contain an invalid value.
33710                 </p></description>
33711                 <description><p>
33712  with error type SecurityError, if the application does not have the privilege to call this method.
33713                 </p></description>
33714                 <description><p>
33715  with error type NotSupportedError, if the feature is not supported.
33716                 </p></description>
33717             </descriptive>
33718           </RaiseException>
33719         </Raises>
33720       </Operation>
33721       <Operation name="write" id="::Filesystem::FileStream::write">
33722         <webidl>    void write(DOMString stringData) raises(<ref>WebAPIException</ref>);</webidl>
33723         <descriptive>
33724             <brief>
33725  Writes the specified DOMString to this FileStream.
33726             </brief>
33727             <version>
33728  1.0
33729             </version>
33730             <privilegelevel>
33731  public
33732             </privilegelevel>
33733             <privilege>
33734  http://tizen.org/privilege/filesystem.write
33735             </privilege>
33736             <Code> var text = &quot;Hello world&quot;;
33737  stream.write(text);
33738  </Code>
33739         </descriptive>
33740         <Type type="void"/>
33741         <ArgumentList>
33742           <Argument name="stringData">
33743             <descriptive>
33744                 <description><p>
33745  The actual string to be written.
33746                 </p></description>
33747             </descriptive>
33748             <Type type="DOMString"/>
33749           </Argument>
33750         </ArgumentList>
33751         <Raises>
33752           <RaiseException name="WebAPIException">
33753             <descriptive>
33754                 <description><p>
33755  with error type IOError, if a write error occurs.
33756                 </p></description>
33757                 <description><p>
33758  with error type TypeMismatchError, if the input parameter
33759 is not compatible with the expected type for that parameter.
33760                 </p></description>
33761                 <description><p>
33762  with error type SecurityError, if the application does not have the privilege to call this method.
33763                 </p></description>
33764                 <description><p>
33765  with error type NotSupportedError, if the feature is not supported.
33766                 </p></description>
33767             </descriptive>
33768           </RaiseException>
33769         </Raises>
33770       </Operation>
33771       <Operation name="writeBytes" id="::Filesystem::FileStream::writeBytes">
33772         <webidl>    void writeBytes(octet[] byteData) raises(<ref>WebAPIException</ref>);</webidl>
33773         <descriptive>
33774             <brief>
33775  Writes the specified bytes to this FileStream.
33776             </brief>
33777             <version>
33778  1.0
33779             </version>
33780             <privilegelevel>
33781  public
33782             </privilegelevel>
33783             <privilege>
33784  http://tizen.org/privilege/filesystem.write
33785             </privilege>
33786             <Code> var bytes = in.readBytes(256);
33787  out.writeBytes(bytes); // writes the bytes read from in to out
33788  </Code>
33789         </descriptive>
33790         <Type type="void"/>
33791         <ArgumentList>
33792           <Argument name="byteData">
33793             <descriptive>
33794                 <description><p>
33795  The byte data array being written.
33796                 </p></description>
33797             </descriptive>
33798             <Type type="array">
33799               <Type type="octet"/>
33800             </Type>
33801           </Argument>
33802         </ArgumentList>
33803         <Raises>
33804           <RaiseException name="WebAPIException">
33805             <descriptive>
33806                 <description><p>
33807  with error type IOError, if a write error occurs.
33808                 </p></description>
33809                 <description><p>
33810  with error type TypeMismatchError, if the input parameter
33811 is not compatible with the expected type for that parameter.
33812                 </p></description>
33813                 <description><p>
33814  with error type SecurityError, if the application does not have the privilege to call this method.
33815                 </p></description>
33816                 <description><p>
33817  with error type NotSupportedError, if the feature is not supported.
33818                 </p></description>
33819             </descriptive>
33820           </RaiseException>
33821         </Raises>
33822       </Operation>
33823       <Operation name="writeBase64" id="::Filesystem::FileStream::writeBase64">
33824         <webidl>    void writeBase64(DOMString base64Data) raises(<ref>WebAPIException</ref>);</webidl>
33825         <descriptive>
33826             <brief>
33827  Converts the specified base64 DOMString to bytes and writes the
33828 result to this FileStream.
33829             </brief>
33830             <version>
33831  1.0
33832             </version>
33833             <privilegelevel>
33834  public
33835             </privilegelevel>
33836             <privilege>
33837  http://tizen.org/privilege/filesystem.write
33838             </privilege>
33839             <Code> var base64 = in.readBase64(256);
33840  out.writeBase64(base64); // writes the base64 data read from in to out
33841  </Code>
33842         </descriptive>
33843         <Type type="void"/>
33844         <ArgumentList>
33845           <Argument name="base64Data">
33846             <descriptive>
33847                 <description><p>
33848  The base64 data being written.
33849                 </p></description>
33850             </descriptive>
33851             <Type type="DOMString"/>
33852           </Argument>
33853         </ArgumentList>
33854         <Raises>
33855           <RaiseException name="WebAPIException">
33856             <descriptive>
33857                 <description><p>
33858  with error type IOError, if an error occurs during writeBase64.
33859                 </p></description>
33860                 <description><p>
33861  with error type TypeMismatchError, if the input parameter
33862 is not compatible with the expected type for that parameter.
33863                 </p></description>
33864                 <description><p>
33865  with error type SecurityError, if the application does not have the privilege to call this method.
33866                 </p></description>
33867                 <description><p>
33868  with error type NotSupportedError, if the feature is not supported.
33869                 </p></description>
33870             </descriptive>
33871           </RaiseException>
33872         </Raises>
33873       </Operation>
33874     </Interface>
33875     <Interface name="FileSuccessCallback" id="::Filesystem::FileSuccessCallback">
33876       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface FileSuccessCallback {
33877     void onsuccess(<ref>File</ref> file);
33878   };</webidl>
33879       <descriptive>
33880           <brief>
33881  The file system specific success callback.
33882           </brief>
33883          <description>
33884           <p>
33885 This callback interface specifies a success callback with 
33886 a File object as input argument. It is used in asynchronous
33887 operations, such as FileSystemManager.resolve() and
33888 copying, moving, and deleting files.
33889           </p>
33890          </description>
33891           <version>
33892  1.0
33893           </version>
33894       </descriptive>
33895       <ExtendedAttributeList>
33896         <ExtendedAttribute name="Callback" value="FunctionOnly">
33897           <webidl>Callback</webidl>
33898         </ExtendedAttribute>
33899         <ExtendedAttribute name="NoInterfaceObject">
33900           <webidl> NoInterfaceObject</webidl>
33901         </ExtendedAttribute>
33902       </ExtendedAttributeList>
33903       <Operation name="onsuccess" id="::Filesystem::FileSuccessCallback::onsuccess">
33904         <webidl>    void onsuccess(<ref>File</ref> file);</webidl>
33905         <descriptive>
33906             <brief>
33907  The method invoked when the asynchronous call completes successfully.
33908             </brief>
33909             <version>
33910  1.0
33911             </version>
33912         </descriptive>
33913         <Type type="void"/>
33914         <ArgumentList>
33915           <Argument name="file">
33916             <descriptive>
33917                 <description><p>
33918  The file resulting from the asynchronous call.
33919                 </p></description>
33920             </descriptive>
33921             <Type name="File"/>
33922           </Argument>
33923         </ArgumentList>
33924       </Operation>
33925     </Interface>
33926     <Interface name="FileSystemStorageArraySuccessCallback" id="::Filesystem::FileSystemStorageArraySuccessCallback">
33927       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface FileSystemStorageArraySuccessCallback {
33928     void onsuccess(<ref>FileSystemStorage</ref>[] storages);
33929   };</webidl>
33930       <descriptive>
33931           <brief>
33932  The success callback to retrieve FileSystemStorage objects.
33933           </brief>
33934          <description>
33935           <p>
33936 This callback interface specifies a success callback with 
33937 an array of FileSystemStorage objects as input argument. It is used in asynchronous
33938 operations, such as FileSystemManager.listStorages().
33939           </p>
33940          </description>
33941           <version>
33942  1.0
33943           </version>
33944       </descriptive>
33945       <ExtendedAttributeList>
33946         <ExtendedAttribute name="Callback" value="FunctionOnly">
33947           <webidl>Callback</webidl>
33948         </ExtendedAttribute>
33949         <ExtendedAttribute name="NoInterfaceObject">
33950           <webidl> NoInterfaceObject</webidl>
33951         </ExtendedAttribute>
33952       </ExtendedAttributeList>
33953       <Operation name="onsuccess" id="::Filesystem::FileSystemStorageArraySuccessCallback::onsuccess">
33954         <webidl>    void onsuccess(<ref>FileSystemStorage</ref>[] storages);</webidl>
33955         <descriptive>
33956             <brief>
33957  The method invoked when the asynchronous call completes successfully.
33958             </brief>
33959             <version>
33960  1.0
33961             </version>
33962         </descriptive>
33963         <Type type="void"/>
33964         <ArgumentList>
33965           <Argument name="storages">
33966             <descriptive>
33967                 <description><p>
33968  List of available storage devices.
33969                 </p></description>
33970             </descriptive>
33971             <Type type="array">
33972               <Type name="FileSystemStorage"/>
33973             </Type>
33974           </Argument>
33975         </ArgumentList>
33976       </Operation>
33977     </Interface>
33978     <Interface name="FileSystemStorageSuccessCallback" id="::Filesystem::FileSystemStorageSuccessCallback">
33979       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface FileSystemStorageSuccessCallback {
33980     void onsuccess(<ref>FileSystemStorage</ref> storage);
33981   };</webidl>
33982       <descriptive>
33983           <brief>
33984  The success callback to retrieve a FileSystemStorage object.
33985           </brief>
33986          <description>
33987           <p>
33988 This callback interface specifies a success callback with 
33989 a FileSystmeStorage object as input argument. It is used in asynchronous
33990 operations, such as FileSystemManager.getStorage() and
33991 FileSystemManager.addStorageStateChangeListener().
33992           </p>
33993          </description>
33994           <version>
33995  1.0
33996           </version>
33997       </descriptive>
33998       <ExtendedAttributeList>
33999         <ExtendedAttribute name="Callback" value="FunctionOnly">
34000           <webidl>Callback</webidl>
34001         </ExtendedAttribute>
34002         <ExtendedAttribute name="NoInterfaceObject">
34003           <webidl> NoInterfaceObject</webidl>
34004         </ExtendedAttribute>
34005       </ExtendedAttributeList>
34006       <Operation name="onsuccess" id="::Filesystem::FileSystemStorageSuccessCallback::onsuccess">
34007         <webidl>    void onsuccess(<ref>FileSystemStorage</ref> storage);</webidl>
34008         <descriptive>
34009             <brief>
34010  The method invoked when the asynchronous call completes successfully.
34011             </brief>
34012             <version>
34013  1.0
34014             </version>
34015         </descriptive>
34016         <Type type="void"/>
34017         <ArgumentList>
34018           <Argument name="storage">
34019             <descriptive>
34020                 <description><p>
34021  The storage device structure.
34022                 </p></description>
34023             </descriptive>
34024             <Type name="FileSystemStorage"/>
34025           </Argument>
34026         </ArgumentList>
34027       </Operation>
34028     </Interface>
34029     <Interface name="FileStringSuccessCallback" id="::Filesystem::FileStringSuccessCallback">
34030       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface FileStringSuccessCallback {
34031     void onsuccess(DOMString fileStr);
34032   };</webidl>
34033       <descriptive>
34034           <brief>
34035  The success callback to read the content of a file as a DOMString.
34036           </brief>
34037          <description>
34038           <p>
34039 This callback interface specifies a success callback with 
34040 a DOMString object as input argument. It is used in asynchronous
34041 operations, such as File.readAsText().
34042           </p>
34043          </description>
34044           <version>
34045  1.0
34046           </version>
34047       </descriptive>
34048       <ExtendedAttributeList>
34049         <ExtendedAttribute name="Callback" value="FunctionOnly">
34050           <webidl>Callback</webidl>
34051         </ExtendedAttribute>
34052         <ExtendedAttribute name="NoInterfaceObject">
34053           <webidl> NoInterfaceObject</webidl>
34054         </ExtendedAttribute>
34055       </ExtendedAttributeList>
34056       <Operation name="onsuccess" id="::Filesystem::FileStringSuccessCallback::onsuccess">
34057         <webidl>    void onsuccess(DOMString fileStr);</webidl>
34058         <descriptive>
34059             <brief>
34060  The method invoked when the asynchronous call completes successfully.
34061             </brief>
34062             <version>
34063  1.0
34064             </version>
34065         </descriptive>
34066         <Type type="void"/>
34067         <ArgumentList>
34068           <Argument name="fileStr">
34069             <descriptive>
34070                 <description><p>
34071  The file represented as a DOMString resulting from the asynchronous call.
34072                 </p></description>
34073             </descriptive>
34074             <Type type="DOMString"/>
34075           </Argument>
34076         </ArgumentList>
34077       </Operation>
34078     </Interface>
34079     <Interface name="FileStreamSuccessCallback" id="::Filesystem::FileStreamSuccessCallback">
34080       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface FileStreamSuccessCallback {
34081     void onsuccess(<ref>FileStream</ref> filestream);
34082   };</webidl>
34083       <descriptive>
34084           <brief>
34085  The success callback to open a file for raw access.
34086           </brief>
34087          <description>
34088           <p>
34089 This callback interface specifies a success callback with 
34090 a FileStream object as input argument. It is used by asynchronous
34091 methods, such as File.openStream().
34092           </p>
34093          </description>
34094           <version>
34095  1.0
34096           </version>
34097       </descriptive>
34098       <ExtendedAttributeList>
34099         <ExtendedAttribute name="Callback" value="FunctionOnly">
34100           <webidl>Callback</webidl>
34101         </ExtendedAttribute>
34102         <ExtendedAttribute name="NoInterfaceObject">
34103           <webidl> NoInterfaceObject</webidl>
34104         </ExtendedAttribute>
34105       </ExtendedAttributeList>
34106       <Operation name="onsuccess" id="::Filesystem::FileStreamSuccessCallback::onsuccess">
34107         <webidl>    void onsuccess(<ref>FileStream</ref> filestream);</webidl>
34108         <descriptive>
34109             <brief>
34110  The method invoked when the File.openStream asynchronous call completes successfully.
34111             </brief>
34112             <version>
34113  1.0
34114             </version>
34115         </descriptive>
34116         <Type type="void"/>
34117         <ArgumentList>
34118           <Argument name="filestream">
34119             <descriptive>
34120                 <description><p>
34121  The filestream to access file content.
34122                 </p></description>
34123             </descriptive>
34124             <Type name="FileStream"/>
34125           </Argument>
34126         </ArgumentList>
34127       </Operation>
34128     </Interface>
34129     <Interface name="FileArraySuccessCallback" id="::Filesystem::FileArraySuccessCallback">
34130       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface FileArraySuccessCallback {
34131     void onsuccess(<ref>File</ref>[] files);
34132   };</webidl>
34133       <descriptive>
34134           <brief>
34135  The file system specific success callback for listing methods.
34136           </brief>
34137          <description>
34138           <p>
34139 This callback interface specifies a success callback with a function
34140 taking an array of File objects as input argument. It is used in asynchronous
34141 methods, such as File.listFiles().
34142           </p>
34143          </description>
34144           <version>
34145  1.0
34146           </version>
34147       </descriptive>
34148       <ExtendedAttributeList>
34149         <ExtendedAttribute name="Callback" value="FunctionOnly">
34150           <webidl>Callback</webidl>
34151         </ExtendedAttribute>
34152         <ExtendedAttribute name="NoInterfaceObject">
34153           <webidl> NoInterfaceObject</webidl>
34154         </ExtendedAttribute>
34155       </ExtendedAttributeList>
34156       <Operation name="onsuccess" id="::Filesystem::FileArraySuccessCallback::onsuccess">
34157         <webidl>    void onsuccess(<ref>File</ref>[] files);</webidl>
34158         <descriptive>
34159             <brief>
34160  The method invoked when the asynchronous call completes successfully.
34161             </brief>
34162             <version>
34163  1.0
34164             </version>
34165         </descriptive>
34166         <Type type="void"/>
34167         <ArgumentList>
34168           <Argument name="files">
34169             <descriptive>
34170                 <description><p>
34171  The files resulting from the asynchronous call.
34172                 </p></description>
34173             </descriptive>
34174             <Type type="array">
34175               <Type name="File"/>
34176             </Type>
34177           </Argument>
34178         </ArgumentList>
34179       </Operation>
34180     </Interface>
34181   </Module>
34182   <Module name="MessagePort" id="::MessagePort">
34183     <webidl>module MessagePort {
34184
34185   [NoInterfaceObject] interface MessagePortManagerObject {
34186     readonly attribute <ref>MessagePortManager</ref> messageport;
34187   };
34188   <ref>Tizen</ref> implements <ref>MessagePortManagerObject</ref>;
34189
34190   [NoInterfaceObject] interface MessagePortManager {
34191
34192     <ref>LocalMessagePort</ref> requestLocalMessagePort(DOMString localMessagePortName) raises(<ref>WebAPIException</ref>);
34193
34194     <ref>LocalMessagePort</ref> requestTrustedLocalMessagePort(DOMString localMessagePortName) raises(<ref>WebAPIException</ref>);
34195
34196     <ref>RemoteMessagePort</ref> requestRemoteMessagePort(<ref>ApplicationId</ref> appId, DOMString remoteMessagePortName) raises(<ref>WebAPIException</ref>);
34197
34198     <ref>RemoteMessagePort</ref> requestTrustedRemoteMessagePort(<ref>ApplicationId</ref> appId, DOMString remoteMessagePortName) raises(<ref>WebAPIException</ref>);
34199   };
34200
34201   [NoInterfaceObject] interface LocalMessagePort {
34202
34203     readonly attribute DOMString messagePortName;
34204
34205     readonly attribute boolean isTrusted;
34206
34207     long addMessagePortListener(<ref>MessagePortCallback</ref> listener) raises(<ref>WebAPIException</ref>);
34208
34209     void removeMessagePortListener(long watchId) raises(<ref>WebAPIException</ref>);
34210   };
34211
34212   [NoInterfaceObject] interface RemoteMessagePort {
34213
34214     readonly attribute DOMString messagePortName;
34215
34216     readonly attribute <ref>ApplicationId</ref> appId;
34217
34218     readonly attribute boolean isTrusted;
34219
34220     void sendMessage(<ref>MessagePortDataItem</ref>[] data, optional <ref>LocalMessagePort</ref>? localMessagePort) raises(<ref>WebAPIException</ref>);
34221   };
34222
34223   dictionary MessagePortDataItem {
34224     DOMString key;
34225     DOMString value;
34226   };
34227
34228   [Callback=FunctionOnly, NoInterfaceObject] interface MessagePortCallback {
34229     void onreceived(<ref>MessagePortDataItem</ref>[] data, <ref>RemoteMessagePort</ref>? remoteMessagePort);
34230   };
34231 };</webidl>
34232     <descriptive>
34233         <brief>
34234  This API provides the functionality for communicating with other applications.
34235         </brief>
34236         <version>
34237  2.1
34238         </version>
34239     </descriptive>
34240     <Interface name="MessagePortManagerObject" id="::MessagePort::MessagePortManagerObject">
34241       <webidl>  [NoInterfaceObject] interface MessagePortManagerObject {
34242     readonly attribute <ref>MessagePortManager</ref> messageport;
34243   };</webidl>
34244       <descriptive>
34245           <brief>
34246  The <em>MessagePortManagerObject</em> interface defines what is instantiated by the Tizen object from the Tizen Platform.
34247           </brief>
34248          <description>
34249           <p>
34250 There is a <em>tizen.messageport</em> object that allows access to the functionality of the Message Port API.
34251           </p>
34252          </description>
34253           <version>
34254  2.1
34255           </version>
34256       </descriptive>
34257       <ExtendedAttributeList>
34258         <ExtendedAttribute name="NoInterfaceObject">
34259           <webidl>NoInterfaceObject</webidl>
34260         </ExtendedAttribute>
34261       </ExtendedAttributeList>
34262       <Attribute readonly="readonly" name="messageport" id="::MessagePort::MessagePortManagerObject::messageport">
34263         <webidl>    readonly attribute <ref>MessagePortManager</ref> messageport;</webidl>
34264         <Type name="MessagePortManager"/>
34265       </Attribute>
34266     </Interface>
34267     <Implements name1="Tizen" name2="MessagePortManagerObject">
34268       <webidl>  <ref>Tizen</ref> implements <ref>MessagePortManagerObject</ref>;</webidl>
34269     </Implements>
34270     <Interface name="MessagePortManager" id="::MessagePort::MessagePortManager">
34271       <webidl>  [NoInterfaceObject] interface MessagePortManager {
34272
34273     <ref>LocalMessagePort</ref> requestLocalMessagePort(DOMString localMessagePortName) raises(<ref>WebAPIException</ref>);
34274
34275     <ref>LocalMessagePort</ref> requestTrustedLocalMessagePort(DOMString localMessagePortName) raises(<ref>WebAPIException</ref>);
34276
34277     <ref>RemoteMessagePort</ref> requestRemoteMessagePort(<ref>ApplicationId</ref> appId, DOMString remoteMessagePortName) raises(<ref>WebAPIException</ref>);
34278
34279     <ref>RemoteMessagePort</ref> requestTrustedRemoteMessagePort(<ref>ApplicationId</ref> appId, DOMString remoteMessagePortName) raises(<ref>WebAPIException</ref>);
34280   };</webidl>
34281       <descriptive>
34282           <brief>
34283  The <em>MessagePortManager</em> interface provides methods to request message port to communicate.
34284           </brief>
34285           <version>
34286  2.1
34287           </version>
34288       </descriptive>
34289       <ExtendedAttributeList>
34290         <ExtendedAttribute name="NoInterfaceObject">
34291           <webidl>NoInterfaceObject</webidl>
34292         </ExtendedAttribute>
34293       </ExtendedAttributeList>
34294       <Operation name="requestLocalMessagePort" id="::MessagePort::MessagePortManager::requestLocalMessagePort">
34295         <webidl>    <ref>LocalMessagePort</ref> requestLocalMessagePort(DOMString localMessagePortName) raises(<ref>WebAPIException</ref>);</webidl>
34296         <descriptive>
34297             <brief>
34298  Requests a LocalMessage Port instance to start receiving message from another application.
34299             </brief>
34300             <version>
34301  2.1
34302             </version>
34303             <Code> // Requests the LocalMessagePort instance with the specified message port name
34304  var localMsgPort = tizen.messageport.requestLocalMessagePort('MessagePortA');
34305  </Code>
34306         </descriptive>
34307         <Type name="LocalMessagePort">
34308           <descriptive>
34309               <description><p>
34310  LocalMessagePort The LocalMessagePort instance.
34311               </p></description>
34312           </descriptive>
34313         </Type>
34314         <ArgumentList>
34315           <Argument name="localMessagePortName">
34316             <descriptive>
34317                 <description><p>
34318  The name of the local message port to retrieve.<br/>The LocalMessagePort instances are identical for the same message port name.
34319                 </p></description>
34320             </descriptive>
34321             <Type type="DOMString"/>
34322           </Argument>
34323         </ArgumentList>
34324         <Raises>
34325           <RaiseException name="WebAPIException">
34326             <descriptive>
34327                 <description><p>
34328  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
34329                 </p></description>
34330                 <description><p>
34331  with error type InvalidValuesError, if the input parameter contains an invalid value.
34332                 </p></description>
34333                 <description><p>
34334  with error type UnknownError, if any other error occurs.
34335                 </p></description>
34336             </descriptive>
34337           </RaiseException>
34338         </Raises>
34339       </Operation>
34340       <Operation name="requestTrustedLocalMessagePort" id="::MessagePort::MessagePortManager::requestTrustedLocalMessagePort">
34341         <webidl>    <ref>LocalMessagePort</ref> requestTrustedLocalMessagePort(DOMString localMessagePortName) raises(<ref>WebAPIException</ref>);</webidl>
34342         <descriptive>
34343             <brief>
34344  Requests a trusted LocalMessagePort instance to receive message from another application.
34345             </brief>
34346            <description>
34347             <p>
34348 Trusted local message port can communicate with applications that are signed with same certificate.
34349             </p>
34350            </description>
34351             <version>
34352  2.1
34353             </version>
34354             <Code> // Requests the LocalMessagePort instance with the specified message port name
34355  var localMsgPort = tizen.messageport.requestTrustedLocalMessagePort('MessagePortB');
34356  </Code>
34357         </descriptive>
34358         <Type name="LocalMessagePort">
34359           <descriptive>
34360               <description><p>
34361  LocalMessagePort The trusted LocalMessagePort instance.
34362               </p></description>
34363           </descriptive>
34364         </Type>
34365         <ArgumentList>
34366           <Argument name="localMessagePortName">
34367             <descriptive>
34368                 <description><p>
34369  The name of local message port.<br/>The LocalMessagePort instances are identical for the same message port name.
34370                 </p></description>
34371             </descriptive>
34372             <Type type="DOMString"/>
34373           </Argument>
34374         </ArgumentList>
34375         <Raises>
34376           <RaiseException name="WebAPIException">
34377             <descriptive>
34378                 <description><p>
34379  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
34380                 </p></description>
34381                 <description><p>
34382  with error type InvalidValuesError, if the input parameter contains an invalid value.
34383                 </p></description>
34384                 <description><p>
34385  with error type UnknownError, if any other error occurs.
34386                 </p></description>
34387             </descriptive>
34388           </RaiseException>
34389         </Raises>
34390       </Operation>
34391       <Operation name="requestRemoteMessagePort" id="::MessagePort::MessagePortManager::requestRemoteMessagePort">
34392         <webidl>    <ref>RemoteMessagePort</ref> requestRemoteMessagePort(<ref>ApplicationId</ref> appId, DOMString remoteMessagePortName) raises(<ref>WebAPIException</ref>);</webidl>
34393         <descriptive>
34394             <brief>
34395  Requests a RemoteMessagePort instance to send message to another application.
34396             </brief>
34397            <description>
34398             <p>
34399 If the message port name and application ID is the same, the platform returns the same RemoteMessagePort instance.
34400             </p>
34401            </description>
34402             <version>
34403  2.1
34404             </version>
34405             <Code> // Requests the RemoteMessagePort instance with the specified message port name
34406  var remoteMsgPort = tizen.messageport.requestRemoteMessagePort('6xaeuflskd.App1', 'MessagePortA');
34407  </Code>
34408         </descriptive>
34409         <Type name="RemoteMessagePort">
34410           <descriptive>
34411               <description><p>
34412  RemoteMessagePort The RemoteMessagePort instance.
34413               </p></description>
34414           </descriptive>
34415         </Type>
34416         <ArgumentList>
34417           <Argument name="appId">
34418             <descriptive>
34419                 <description><p>
34420  The ID of the application to send messages.
34421                 </p></description>
34422             </descriptive>
34423             <Type name="ApplicationId"/>
34424           </Argument>
34425           <Argument name="remoteMessagePortName">
34426             <descriptive>
34427                 <description><p>
34428  The name of remote message port.
34429                 </p></description>
34430             </descriptive>
34431             <Type type="DOMString"/>
34432           </Argument>
34433         </ArgumentList>
34434         <Raises>
34435           <RaiseException name="WebAPIException">
34436             <descriptive>
34437                 <description><p>
34438  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
34439                 </p></description>
34440                 <description><p>
34441  with error type InvalidValuesError, if an input parameter contains an invalid value.
34442                 </p></description>
34443                 <description><p>
34444  with error type NotFoundError, if the port of the target application is not found.
34445                 </p></description>
34446                 <description><p>
34447  with error type UnknownError, if any other error occurs.
34448                 </p></description>
34449             </descriptive>
34450           </RaiseException>
34451         </Raises>
34452       </Operation>
34453       <Operation name="requestTrustedRemoteMessagePort" id="::MessagePort::MessagePortManager::requestTrustedRemoteMessagePort">
34454         <webidl>    <ref>RemoteMessagePort</ref> requestTrustedRemoteMessagePort(<ref>ApplicationId</ref> appId, DOMString remoteMessagePortName) raises(<ref>WebAPIException</ref>);</webidl>
34455         <descriptive>
34456             <brief>
34457  Requests a trusted RemoteMessagePort instance to receive message from another application.
34458             </brief>
34459            <description>
34460             <p>
34461 If the message port name and application ID is the same, the platform returns the same RemoteMessagePort instance.
34462 Trusted remote message port can communicate with applications that are signed with same certificate.
34463             </p>
34464            </description>
34465             <version>
34466  2.1
34467             </version>
34468             <Code> // Requests the RemoteMessagePort instance with the specified message port name.
34469  var remoteMsgPort = tizen.messageport.requestTrustedRemoteMessagePort('6xauflskd.App1', 'MessagePortB');
34470  </Code>
34471         </descriptive>
34472         <Type name="RemoteMessagePort">
34473           <descriptive>
34474               <description><p>
34475  RemoteMessagePort The trusted RemoteMessagePort instance.
34476               </p></description>
34477           </descriptive>
34478         </Type>
34479         <ArgumentList>
34480           <Argument name="appId">
34481             <descriptive>
34482                 <description><p>
34483  The ID of the application to send messages.
34484                 </p></description>
34485             </descriptive>
34486             <Type name="ApplicationId"/>
34487           </Argument>
34488           <Argument name="remoteMessagePortName">
34489             <descriptive>
34490                 <description><p>
34491  The name of remote message port.
34492                 </p></description>
34493             </descriptive>
34494             <Type type="DOMString"/>
34495           </Argument>
34496         </ArgumentList>
34497         <Raises>
34498           <RaiseException name="WebAPIException">
34499             <descriptive>
34500                 <description><p>
34501  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
34502                 </p></description>
34503                 <description><p>
34504  with error type InvalidValuesError, if an input parameter contains an invalid value.
34505                 </p></description>
34506                 <description><p>
34507  with error type NotFoundError, if the port of the target application is not found.
34508                 </p></description>
34509                 <description><p>
34510  with error type InvalidAccessError, if the target application is not signed with the same certification.
34511                 </p></description>
34512                 <description><p>
34513  with error type UnknownError, if any other error occurs
34514                 </p></description>
34515             </descriptive>
34516           </RaiseException>
34517         </Raises>
34518       </Operation>
34519     </Interface>
34520     <Interface name="LocalMessagePort" id="::MessagePort::LocalMessagePort">
34521       <webidl>  [NoInterfaceObject] interface LocalMessagePort {
34522
34523     readonly attribute DOMString messagePortName;
34524
34525     readonly attribute boolean isTrusted;
34526
34527     long addMessagePortListener(<ref>MessagePortCallback</ref> listener) raises(<ref>WebAPIException</ref>);
34528
34529     void removeMessagePortListener(long watchId) raises(<ref>WebAPIException</ref>);
34530   };</webidl>
34531       <descriptive>
34532           <brief>
34533  The <em>LocalMessagePort</em> interface provides methods to receive data.
34534           </brief>
34535           <version>
34536  2.1
34537           </version>
34538       </descriptive>
34539       <ExtendedAttributeList>
34540         <ExtendedAttribute name="NoInterfaceObject">
34541           <webidl>NoInterfaceObject</webidl>
34542         </ExtendedAttribute>
34543       </ExtendedAttributeList>
34544       <Attribute readonly="readonly" name="messagePortName" id="::MessagePort::LocalMessagePort::messagePortName">
34545         <webidl>    readonly attribute DOMString messagePortName;</webidl>
34546         <descriptive>
34547             <brief>
34548  An attribute that stores the name of the message port name.
34549             </brief>
34550             <version>
34551  2.1
34552             </version>
34553         </descriptive>
34554         <Type type="DOMString"/>
34555       </Attribute>
34556       <Attribute readonly="readonly" name="isTrusted" id="::MessagePort::LocalMessagePort::isTrusted">
34557         <webidl>    readonly attribute boolean isTrusted;</webidl>
34558         <descriptive>
34559             <brief>
34560  An attribute that determines whether the message port is trusted or not.
34561             </brief>
34562             <version>
34563  2.1
34564             </version>
34565         </descriptive>
34566         <Type type="boolean"/>
34567       </Attribute>
34568       <Operation name="addMessagePortListener" id="::MessagePort::LocalMessagePort::addMessagePortListener">
34569         <webidl>    long addMessagePortListener(<ref>MessagePortCallback</ref> listener) raises(<ref>WebAPIException</ref>);</webidl>
34570         <descriptive>
34571             <brief>
34572  Adds a message port listener to receive messages from other applications.
34573             </brief>
34574             <version>
34575  2.1.
34576             </version>
34577             <Code> function onreceived(data, remoteMsgPort) {
34578    console.log('Received data to \'' + remoteMsgPort.messagePortName + '\'');
34579  }
34580
34581  var localMsgPort = tizen.messageport.requestLocalMessagePort('MessagePortA');
34582  var watchId = localMsgPort.addMessagePortListener(onreceived);
34583  </Code>
34584         </descriptive>
34585         <Type type="long">
34586           <descriptive>
34587               <description><p>
34588  long ID of the listener that is later used to remove the listener.
34589               </p></description>
34590           </descriptive>
34591         </Type>
34592         <ArgumentList>
34593           <Argument name="listener">
34594             <descriptive>
34595                 <description><p>
34596  The method to invoke when a message is received.
34597                 </p></description>
34598             </descriptive>
34599             <Type name="MessagePortCallback"/>
34600           </Argument>
34601         </ArgumentList>
34602         <Raises>
34603           <RaiseException name="WebAPIException">
34604             <descriptive>
34605                 <description><p>
34606  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
34607                 </p></description>
34608                 <description><p>
34609  with error type InvalidValuesError, if the input parameter contains an invalid value.
34610                 </p></description>
34611                 <description><p>
34612  with error type UnknownError, if any other error occurs.
34613                 </p></description>
34614             </descriptive>
34615           </RaiseException>
34616         </Raises>
34617       </Operation>
34618       <Operation name="removeMessagePortListener" id="::MessagePort::LocalMessagePort::removeMessagePortListener">
34619         <webidl>    void removeMessagePortListener(long watchId) raises(<ref>WebAPIException</ref>);</webidl>
34620         <descriptive>
34621             <brief>
34622  Removes the message port listener.
34623             </brief>
34624             <version>
34625  2.1.
34626             </version>
34627             <Code> var localMsgPort = tizen.messageport.requestLocalMessagePort('MessagePortA');
34628  var watchId = localMsgPort.addMessagePortListener(onreceived);
34629  // Communication routines of your app...
34630  localMsgPort.removeMessagePortListener(watchId);
34631  </Code>
34632         </descriptive>
34633         <Type type="void"/>
34634         <ArgumentList>
34635           <Argument name="watchId">
34636             <descriptive>
34637                 <description><p>
34638  ID to identify the listener.
34639                 </p></description>
34640             </descriptive>
34641             <Type type="long"/>
34642           </Argument>
34643         </ArgumentList>
34644         <Raises>
34645           <RaiseException name="WebAPIException">
34646             <descriptive>
34647                 <description><p>
34648  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
34649                 </p></description>
34650                 <description><p>
34651  with error type InvalidValuesError, if the input parameter contains an invalid value.
34652                 </p></description>
34653                 <description><p>
34654  with error type NotFoundError, if the watch ID has not been found.
34655                 </p></description>
34656                 <description><p>
34657  with error type UnknownError, if any other error occurs.
34658                 </p></description>
34659             </descriptive>
34660           </RaiseException>
34661         </Raises>
34662       </Operation>
34663     </Interface>
34664     <Interface name="RemoteMessagePort" id="::MessagePort::RemoteMessagePort">
34665       <webidl>  [NoInterfaceObject] interface RemoteMessagePort {
34666
34667     readonly attribute DOMString messagePortName;
34668
34669     readonly attribute <ref>ApplicationId</ref> appId;
34670
34671     readonly attribute boolean isTrusted;
34672
34673     void sendMessage(<ref>MessagePortDataItem</ref>[] data, optional <ref>LocalMessagePort</ref>? localMessagePort) raises(<ref>WebAPIException</ref>);
34674   };</webidl>
34675       <descriptive>
34676           <brief>
34677  The <em>RemoteMessagePort</em> interface provides methods to send messages.
34678           </brief>
34679           <version>
34680  2.1
34681           </version>
34682       </descriptive>
34683       <ExtendedAttributeList>
34684         <ExtendedAttribute name="NoInterfaceObject">
34685           <webidl>NoInterfaceObject</webidl>
34686         </ExtendedAttribute>
34687       </ExtendedAttributeList>
34688       <Attribute readonly="readonly" name="messagePortName" id="::MessagePort::RemoteMessagePort::messagePortName">
34689         <webidl>    readonly attribute DOMString messagePortName;</webidl>
34690         <descriptive>
34691             <brief>
34692  An attribute to store the message port name.
34693             </brief>
34694             <version>
34695  2.1
34696             </version>
34697         </descriptive>
34698         <Type type="DOMString"/>
34699       </Attribute>
34700       <Attribute readonly="readonly" name="appId" id="::MessagePort::RemoteMessagePort::appId">
34701         <webidl>    readonly attribute <ref>ApplicationId</ref> appId;</webidl>
34702         <descriptive>
34703             <brief>
34704  An attribute that store the application ID to connect with.
34705             </brief>
34706             <version>
34707  2.1
34708             </version>
34709         </descriptive>
34710         <Type name="ApplicationId"/>
34711       </Attribute>
34712       <Attribute readonly="readonly" name="isTrusted" id="::MessagePort::RemoteMessagePort::isTrusted">
34713         <webidl>    readonly attribute boolean isTrusted;</webidl>
34714         <descriptive>
34715             <brief>
34716  An attribute that determines whether the message port is trusted or not.
34717             </brief>
34718             <version>
34719  2.1
34720             </version>
34721         </descriptive>
34722         <Type type="boolean"/>
34723       </Attribute>
34724       <Operation name="sendMessage" id="::MessagePort::RemoteMessagePort::sendMessage">
34725         <webidl>    void sendMessage(<ref>MessagePortDataItem</ref>[] data, optional <ref>LocalMessagePort</ref>? localMessagePort) raises(<ref>WebAPIException</ref>);</webidl>
34726         <descriptive>
34727             <brief>
34728  Sends messages to the specified application.
34729             </brief>
34730            <description>
34731             <p>
34732 The sent messages will be ignored without any notice, unless the target application added one or more listeners to the target local message port.
34733             </p>
34734            </description>
34735             <version>
34736  2.1
34737             </version>
34738             <Code> // Sends message
34739  var localMsgPort = tizen.messageport.requestLocalMessagePort('MessagePortA');
34740  var remoteMsgPort = tizen.messageport.requestRemoteMessagePort('6xaeuflskd.App1', 'MessagePortB');
34741  localMsgPort.addMessagePortListener(function(items, remoteport) {
34742    // ...
34743    if(remoteport !== null) {
34744      remoteport.sendMessage([{key:'RESULT', value:'OK'}]);
34745    }
34746  });
34747  remoteMsgPort.sendMessage(
34748    [
34749      { key:'CMD', value:'openWindow' },
34750      { key:'OPTION', value:'bx' }
34751    ]
34752    , localMsgPort);
34753  </Code>
34754         </descriptive>
34755         <Type type="void"/>
34756         <ArgumentList>
34757           <Argument name="data">
34758             <descriptive>
34759                 <description><p>
34760  Data array of data to send.
34761                 </p></description>
34762             </descriptive>
34763             <Type type="array">
34764               <Type name="MessagePortDataItem"/>
34765             </Type>
34766           </Argument>
34767           <Argument optional="optional" name="localMessagePort">
34768             <descriptive>
34769                 <description><p>
34770  <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.
34771 </em></em>                </p></description>
34772             </descriptive>
34773             <Type name="LocalMessagePort" nullable="nullable"/>
34774           </Argument>
34775         </ArgumentList>
34776         <Raises>
34777           <RaiseException name="WebAPIException">
34778             <descriptive>
34779                 <description><p>
34780  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
34781                 </p></description>
34782                 <description><p>
34783  with error type InvalidValuesError, if an input parameter contains an invalid value.
34784                 </p></description>
34785                 <description><p>
34786  with error type QuotaExceededError, if the size of message has exceeded the maximum limit.
34787                 </p></description>
34788                 <description><p>
34789  with error type UnknownError, if any other error occurs.
34790                 </p></description>
34791             </descriptive>
34792           </RaiseException>
34793         </Raises>
34794       </Operation>
34795     </Interface>
34796     <Dictionary name="MessagePortDataItem" id="::MessagePort::MessagePortDataItem">
34797       <webidl>  dictionary MessagePortDataItem {
34798     DOMString key;
34799     DOMString value;
34800   };</webidl>
34801       <descriptive>
34802           <brief>
34803  A dictionary for specifying the data item that is transferred.
34804           </brief>
34805           <version>
34806  2.1
34807           </version>
34808       </descriptive>
34809       <DictionaryMember name="key" id="::MessagePort::MessagePortDataItem::key">
34810         <webidl>    DOMString key;</webidl>
34811         <Type type="DOMString"/>
34812       </DictionaryMember>
34813       <DictionaryMember name="value" id="::MessagePort::MessagePortDataItem::value">
34814         <webidl>    DOMString value;</webidl>
34815         <Type type="DOMString"/>
34816       </DictionaryMember>
34817     </Dictionary>
34818     <Interface name="MessagePortCallback" id="::MessagePort::MessagePortCallback">
34819       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface MessagePortCallback {
34820     void onreceived(<ref>MessagePortDataItem</ref>[] data, <ref>RemoteMessagePort</ref>? remoteMessagePort);
34821   };</webidl>
34822       <descriptive>
34823           <brief>
34824  This interface defines notification callbacks for receiving data from other applications.
34825           </brief>
34826           <version>
34827  2.1
34828           </version>
34829       </descriptive>
34830       <ExtendedAttributeList>
34831         <ExtendedAttribute name="Callback" value="FunctionOnly">
34832           <webidl>Callback</webidl>
34833         </ExtendedAttribute>
34834         <ExtendedAttribute name="NoInterfaceObject">
34835           <webidl> NoInterfaceObject</webidl>
34836         </ExtendedAttribute>
34837       </ExtendedAttributeList>
34838       <Operation name="onreceived" id="::MessagePort::MessagePortCallback::onreceived">
34839         <webidl>    void onreceived(<ref>MessagePortDataItem</ref>[] data, <ref>RemoteMessagePort</ref>? remoteMessagePort);</webidl>
34840         <descriptive>
34841             <brief>
34842  Called when data is received from other applications via the specified message port name.
34843             </brief>
34844             <version>
34845  2.1
34846             </version>
34847         </descriptive>
34848         <Type type="void"/>
34849         <ArgumentList>
34850           <Argument name="data">
34851             <descriptive>
34852                 <description><p>
34853  An array of data received from another application.
34854                 </p></description>
34855             </descriptive>
34856             <Type type="array">
34857               <Type name="MessagePortDataItem"/>
34858             </Type>
34859           </Argument>
34860           <Argument name="remoteMessagePort">
34861             <descriptive>
34862                 <description><p>
34863  The RemoteMessagePort port that can be used to reply for the received message.
34864                 </p></description>
34865             </descriptive>
34866             <Type name="RemoteMessagePort" nullable="nullable"/>
34867           </Argument>
34868         </ArgumentList>
34869       </Operation>
34870     </Interface>
34871   </Module>
34872   <Module name="Messaging" id="::Messaging">
34873     <webidl>module Messaging {
34874
34875   [NoInterfaceObject] interface MessageManagerObject {
34876     readonly attribute <ref>Messaging</ref> messaging;
34877   };
34878   <ref>Tizen</ref> implements <ref>MessageManagerObject</ref>;
34879
34880   enum MessageServiceTag {&quot;messaging.sms&quot;, &quot;messaging.mms&quot;, &quot;messaging.email&quot; };
34881   
34882   typedef DOMString MessageId;
34883   
34884   typedef DOMString MessageAttachmentId;
34885
34886   typedef DOMString MessageConvId;
34887
34888   typedef DOMString MessageFolderId;  
34889
34890   [Constructor(<ref>MessageServiceTag</ref> type, optional <ref>MessageInit</ref>? messageInitDict)]
34891   interface Message {
34892
34893     readonly attribute <ref>MessageId</ref>? id;
34894
34895     readonly attribute <ref>MessageConvId</ref>? conversationId;
34896
34897     readonly attribute <ref>MessageFolderId</ref>? folderId;
34898
34899     readonly attribute <ref>MessageServiceTag</ref> type;
34900
34901     readonly attribute Date? timestamp;
34902
34903     readonly attribute DOMString? from;
34904
34905     attribute DOMString[] to setraises(<ref>WebAPIException</ref>);
34906
34907     attribute DOMString[] cc setraises(<ref>WebAPIException</ref>);
34908
34909     attribute DOMString[] bcc setraises(<ref>WebAPIException</ref>);
34910
34911     attribute <ref>MessageBody</ref> body setraises(<ref>WebAPIException</ref>);
34912
34913     attribute boolean isRead setraises(<ref>WebAPIException</ref>);
34914
34915     readonly attribute boolean hasAttachment;
34916
34917     attribute boolean isHighPriority setraises(<ref>WebAPIException</ref>);
34918
34919     attribute DOMString subject setraises(<ref>WebAPIException</ref>);
34920
34921     readonly attribute <ref>MessageId</ref>? inResponseTo setraises(<ref>WebAPIException</ref>);
34922
34923     readonly attribute DOMString messageStatus;
34924
34925     attribute <ref>MessageAttachment</ref>[] attachments setraises(<ref>WebAPIException</ref>);
34926   };
34927   dictionary MessageInit
34928   {
34929
34930     DOMString subject;
34931
34932     DOMString[] to;
34933
34934     DOMString[] cc;
34935
34936     DOMString[] bcc;
34937
34938     DOMString plainBody;
34939
34940     DOMString htmlBody;
34941
34942     boolean isHighPriority;
34943   };
34944
34945   [NoInterfaceObject] interface MessageBody {
34946
34947     readonly attribute <ref>MessageId</ref> messageId;
34948
34949     readonly attribute boolean loaded;
34950
34951     attribute DOMString plainBody setraises(<ref>WebAPIException</ref>);
34952
34953     attribute DOMString htmlBody setraises(<ref>WebAPIException</ref>);
34954
34955     attribute <ref>MessageAttachment</ref>[] inlineAttachments setraises(<ref>WebAPIException</ref>);
34956   };
34957
34958   [Constructor(DOMString filePath, optional DOMString? mimeType)]
34959   interface MessageAttachment {
34960     
34961     readonly attribute <ref>MessageAttachmentId</ref>? id;
34962     
34963     readonly attribute <ref>MessageId</ref>? messageId;
34964     
34965     readonly attribute DOMString? mimeType;
34966     
34967     readonly attribute DOMString? filePath;
34968   };
34969
34970   [NoInterfaceObject] interface Messaging {
34971
34972     void getMessageServices(<ref>MessageServiceTag</ref> messageServiceType,
34973                             <ref>MessageServiceArraySuccessCallback</ref> successCallback,
34974                             optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
34975   };
34976
34977   [Callback=FunctionOnly, NoInterfaceObject] interface MessageServiceArraySuccessCallback {
34978
34979     void onsuccess(<ref>MessageService</ref>[] services);
34980
34981   };
34982
34983
34984   [NoInterfaceObject] interface MessageService {
34985
34986     readonly attribute DOMString id;
34987
34988     readonly attribute <ref>MessageServiceTag</ref> type;
34989
34990     readonly attribute DOMString name;
34991                     
34992     void sendMessage(<ref>Message</ref> message,
34993                      optional <ref>MessageRecipientsCallback</ref>? successCallback,
34994                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
34995
34996     void loadMessageBody(<ref>Message</ref> message,
34997                          <ref>MessageBodySuccessCallback</ref> successCallback,
34998                          optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
34999
35000     void loadMessageAttachment(<ref>MessageAttachment</ref> attachment,
35001                                <ref>MessageAttachmentSuccessCallback</ref> successCallback,
35002                                optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
35003
35004     long sync(optional <ref>SuccessCallback</ref>? successCallback,
35005               optional <ref>ErrorCallback</ref>? errorCallback,
35006               optional unsigned long? limit) raises(<ref>WebAPIException</ref>);
35007
35008     long syncFolder(<ref>MessageFolder</ref> folder,
35009                     optional <ref>SuccessCallback</ref>? successCallback,
35010                     optional <ref>ErrorCallback</ref>? errorCallback,
35011                     optional unsigned long? limit) raises(<ref>WebAPIException</ref>);
35012
35013     void stopSync(long opId) raises(<ref>WebAPIException</ref>);
35014
35015     readonly attribute <ref>MessageStorage</ref> messageStorage getraises(<ref>WebAPIException</ref>);
35016   };
35017
35018   [Callback=FunctionOnly, NoInterfaceObject] interface MessageRecipientsCallback {
35019
35020     void onsuccess(DOMString[] recipients);
35021
35022    };
35023
35024   [Callback=FunctionOnly, NoInterfaceObject] interface MessageBodySuccessCallback {
35025
35026      void onsuccess(<ref>Message</ref> message);
35027   };
35028
35029   [Callback=FunctionOnly, NoInterfaceObject] interface MessageAttachmentSuccessCallback {
35030
35031      void onsuccess(<ref>MessageAttachment</ref> attachment);
35032    };
35033
35034   [NoInterfaceObject] interface MessageStorage {
35035
35036     void addDraftMessage(<ref>Message</ref> message,
35037                          optional <ref>SuccessCallback</ref>? successCallback,
35038                          optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
35039
35040     void findMessages(<ref>AbstractFilter</ref> filter,
35041                       <ref>MessageArraySuccessCallback</ref> successCallback,
35042                       optional <ref>ErrorCallback</ref>? errorCallback,
35043                       optional <ref>SortMode</ref>? sort,
35044                       optional unsigned long? limit,
35045                       optional unsigned long? offset) raises(<ref>WebAPIException</ref>);
35046
35047     void removeMessages(<ref>Message</ref>[] messages,
35048                         optional <ref>SuccessCallback</ref>? successCallback,
35049                         optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
35050
35051     void updateMessages(<ref>Message</ref>[] messages,
35052                         optional <ref>SuccessCallback</ref>? successCallback,
35053                         optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
35054
35055     void findConversations(<ref>AbstractFilter</ref> filter,
35056                            <ref>MessageConversationArraySuccessCallback</ref> successCallback,
35057                            optional <ref>ErrorCallback</ref>? errorCallback,
35058                            optional <ref>SortMode</ref>? sort,
35059                            optional unsigned long? limit,
35060                            optional unsigned long? offset) raises(<ref>WebAPIException</ref>);
35061
35062     void removeConversations(<ref>MessageConversation</ref>[] conversations,
35063                              optional <ref>SuccessCallback</ref>? successCallback,
35064                              optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
35065
35066
35067     void findFolders(<ref>AbstractFilter</ref> filter,
35068                      <ref>MessageFolderArraySuccessCallback</ref> successCallback,
35069                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
35070
35071     long addMessagesChangeListener(<ref>MessagesChangeCallback</ref> messagesChangeCallback,
35072                                    optional <ref>AbstractFilter</ref>? filter) raises(<ref>WebAPIException</ref>);
35073
35074     long addConversationsChangeListener(<ref>MessageConversationsChangeCallback</ref> conversationsChangeCallback,
35075                                         optional <ref>AbstractFilter</ref>? filter) raises(<ref>WebAPIException</ref>);
35076
35077     long addFoldersChangeListener(<ref>MessageFoldersChangeCallback</ref> foldersChangeCallback,
35078                                   optional <ref>AbstractFilter</ref>? filter) raises(<ref>WebAPIException</ref>);
35079
35080     void removeChangeListener(long watchId) raises(<ref>WebAPIException</ref>);
35081   };
35082
35083   [Callback=FunctionOnly, NoInterfaceObject] interface MessageArraySuccessCallback {
35084
35085     void onsuccess(<ref>Message</ref>[] messages);
35086   };
35087
35088   [Callback=FunctionOnly, NoInterfaceObject] interface MessageConversationArraySuccessCallback {
35089
35090     void onsuccess(<ref>MessageConversation</ref>[] conversations);
35091   };
35092
35093   [Callback=FunctionOnly, NoInterfaceObject] interface MessageFolderArraySuccessCallback {
35094
35095     void onsuccess(<ref>MessageFolder</ref>[] folders);
35096   };
35097
35098   [Callback, NoInterfaceObject] interface MessagesChangeCallback {
35099
35100     void messagesadded(<ref>Message</ref>[] addedMessages);
35101
35102     void messagesupdated(<ref>Message</ref>[] updatedMessages);
35103
35104     void messagesremoved(<ref>Message</ref>[] removedMessages);
35105   };
35106
35107   [Callback, NoInterfaceObject] interface MessageConversationsChangeCallback {
35108
35109     void conversationsadded(<ref>MessageConversation</ref>[] addedConversations);
35110
35111     void conversationsupdated(<ref>MessageConversation</ref>[] updatedConversations);
35112
35113     void conversationsremoved(<ref>MessageConversation</ref>[] removedConversations);
35114   };
35115
35116   [Callback, NoInterfaceObject] interface MessageFoldersChangeCallback {
35117  
35118     void foldersadded(<ref>MessageFolder</ref>[] addedFolders);
35119
35120     void foldersupdated(<ref>MessageFolder</ref>[] updatedFolders);
35121
35122     void foldersremoved(<ref>MessageFolder</ref>[] removedFolders);
35123   };
35124
35125   [NoInterfaceObject] interface MessageConversation {
35126
35127     readonly attribute <ref>MessageConvId</ref> id;
35128
35129     readonly attribute <ref>MessageServiceTag</ref> type;
35130
35131     readonly attribute Date timestamp;
35132      
35133     readonly attribute unsigned long messageCount;
35134
35135     readonly attribute unsigned long unreadMessages;
35136
35137     readonly attribute DOMString preview;
35138
35139     readonly attribute DOMString subject;
35140
35141     readonly attribute boolean isRead;
35142
35143     readonly attribute DOMString from;
35144
35145     readonly attribute DOMString[] to;
35146
35147     readonly attribute DOMString[] cc;
35148
35149     readonly attribute DOMString[] bcc;
35150
35151     readonly attribute <ref>MessageId</ref> lastMessageId;
35152   };
35153
35154   [NoInterfaceObject] interface MessageFolder {
35155
35156     readonly attribute <ref>MessageFolderId</ref> id;
35157
35158     readonly attribute <ref>MessageFolderId</ref> parentId;
35159
35160     readonly attribute DOMString serviceId;
35161
35162     readonly attribute <ref>MessageServiceTag</ref> contentType;
35163
35164     attribute DOMString name setraises(<ref>WebAPIException</ref>);
35165
35166     readonly attribute DOMString path;
35167
35168     readonly attribute DOMString type;
35169
35170     attribute boolean synchronizable setraises(<ref>WebAPIException</ref>);
35171   };
35172
35173 };</webidl>
35174     <descriptive>
35175         <brief>
35176  This API provides interfaces and methods for managing SMS, MMS, and email messages.
35177         </brief>
35178        <description>
35179         <p>
35180 The Messaging API provides access to these capabilities:
35181         </p>
35182         <ul>
35183           <li>
35184 Sending messages through different technologies: SMS, MMS, and email messages.          </li>
35185           <li>
35186 Retrieving available message services.          </li>
35187           <li>
35188 Searching for messages.          </li>
35189           <li>
35190 Managing messages: update, delete, and add.          </li>
35191           <li>
35192 Subscribing to receive notifications of message storage modifications.          </li>
35193           <li>
35194 Fetching conversations and subscribing to conversation updates.          </li>
35195         </ul>
35196         <p>
35197 For more information on the Messaging features, see <a href="../../org.tizen.web.appprogramming/html/guide/communication_guide/messaging.htm">Messaging Guide</a>.
35198         </p>
35199        </description>
35200         <version>
35201  1.0
35202         </version>
35203         <def-api-feature identifier="http://tizen.org/feature/network.telephony">
35204           <descriptive>
35205            <description>
35206             <p>
35207 To guarantee this application running on a device with SMS feature, define below in the config file: 
35208             </p>
35209            </description>
35210           </descriptive>
35211         </def-api-feature>
35212         <def-api-feature identifier="http://tizen.org/feature/network.telephony.mms">
35213           <descriptive>
35214            <description>
35215             <p>
35216 To guarantee this application running on a device with MMS feature, define below in the config file: 
35217             </p>
35218            </description>
35219           </descriptive>
35220         </def-api-feature>
35221     </descriptive>
35222     <Interface name="MessageManagerObject" id="::Messaging::MessageManagerObject">
35223       <webidl>  [NoInterfaceObject] interface MessageManagerObject {
35224     readonly attribute <ref>Messaging</ref> messaging;
35225   };</webidl>
35226       <descriptive>
35227           <brief>
35228  This interface defines what is instantiated by the Tizen object.
35229           </brief>
35230          <description>
35231           <p>
35232 There is a <em>tizen.messaging </em>object that allows access to the Messaging API.
35233           </p>
35234          </description>
35235           <version>
35236  1.0
35237           </version>
35238       </descriptive>
35239       <ExtendedAttributeList>
35240         <ExtendedAttribute name="NoInterfaceObject">
35241           <webidl>NoInterfaceObject</webidl>
35242         </ExtendedAttribute>
35243       </ExtendedAttributeList>
35244       <Attribute readonly="readonly" name="messaging" id="::Messaging::MessageManagerObject::messaging">
35245         <webidl>    readonly attribute <ref>Messaging</ref> messaging;</webidl>
35246         <Type name="Messaging"/>
35247       </Attribute>
35248     </Interface>
35249     <Implements name1="Tizen" name2="MessageManagerObject">
35250       <webidl>  <ref>Tizen</ref> implements <ref>MessageManagerObject</ref>;</webidl>
35251     </Implements>
35252     <Enum name="MessageServiceTag" id="::Messaging::MessageServiceTag">
35253       <webidl>  enum MessageServiceTag {&quot;messaging.sms&quot;, &quot;messaging.mms&quot;, &quot;messaging.email&quot; };</webidl>
35254       <descriptive>
35255           <brief>
35256  The supported Messaging service tags.
35257 The following values are supported in this release:
35258           </brief>
35259          <description>
35260           <ul>
35261             <li>
35262 messaging.sms, for SMS services            </li>
35263             <li>
35264 messaging.mms, for MMS services            </li>
35265             <li>
35266 messaging.email, for email services            </li>
35267           </ul>
35268          </description>
35269           <version>
35270  1.0
35271           </version>
35272       </descriptive>
35273       <EnumValue stringvalue="messaging.sms">
35274         <webidl>&quot;messaging.sms</webidl>
35275       </EnumValue>
35276       <EnumValue stringvalue="messaging.mms">
35277         <webidl> &quot;messaging.mms</webidl>
35278       </EnumValue>
35279       <EnumValue stringvalue="messaging.email">
35280         <webidl> &quot;messaging.email</webidl>
35281       </EnumValue>
35282     </Enum>
35283     <Typedef name="MessageId" id="::Messaging::MessageId">
35284       <webidl>  typedef DOMString MessageId;</webidl>
35285       <descriptive>
35286           <brief>
35287  The Message identifier.
35288           </brief>
35289           <version>
35290  1.0
35291           </version>
35292       </descriptive>
35293       <Type type="DOMString"/>
35294     </Typedef>
35295     <Typedef name="MessageAttachmentId" id="::Messaging::MessageAttachmentId">
35296       <webidl>  typedef DOMString MessageAttachmentId;</webidl>
35297       <descriptive>
35298           <brief>
35299  The MessageAttachment identifier within a message.
35300           </brief>
35301           <version>
35302  1.0
35303           </version>
35304       </descriptive>
35305       <Type type="DOMString"/>
35306     </Typedef>
35307     <Typedef name="MessageConvId" id="::Messaging::MessageConvId">
35308       <webidl>  typedef DOMString MessageConvId;</webidl>
35309       <descriptive>
35310           <brief>
35311  The MessageConversation identifier.
35312           </brief>
35313           <version>
35314  1.0
35315           </version>
35316       </descriptive>
35317       <Type type="DOMString"/>
35318     </Typedef>
35319     <Typedef name="MessageFolderId" id="::Messaging::MessageFolderId">
35320       <webidl>  typedef DOMString MessageFolderId;</webidl>
35321       <descriptive>
35322           <brief>
35323  The identifier of an email folder .
35324           </brief>
35325           <version>
35326  1.0
35327           </version>
35328       </descriptive>
35329       <Type type="DOMString"/>
35330     </Typedef>
35331     <Interface name="Message" id="::Messaging::Message">
35332       <webidl>  [Constructor(<ref>MessageServiceTag</ref> type, optional <ref>MessageInit</ref>? messageInitDict)]
35333   interface Message {
35334
35335     readonly attribute <ref>MessageId</ref>? id;
35336
35337     readonly attribute <ref>MessageConvId</ref>? conversationId;
35338
35339     readonly attribute <ref>MessageFolderId</ref>? folderId;
35340
35341     readonly attribute <ref>MessageServiceTag</ref> type;
35342
35343     readonly attribute Date? timestamp;
35344
35345     readonly attribute DOMString? from;
35346
35347     attribute DOMString[] to setraises(<ref>WebAPIException</ref>);
35348
35349     attribute DOMString[] cc setraises(<ref>WebAPIException</ref>);
35350
35351     attribute DOMString[] bcc setraises(<ref>WebAPIException</ref>);
35352
35353     attribute <ref>MessageBody</ref> body setraises(<ref>WebAPIException</ref>);
35354
35355     attribute boolean isRead setraises(<ref>WebAPIException</ref>);
35356
35357     readonly attribute boolean hasAttachment;
35358
35359     attribute boolean isHighPriority setraises(<ref>WebAPIException</ref>);
35360
35361     attribute DOMString subject setraises(<ref>WebAPIException</ref>);
35362
35363     readonly attribute <ref>MessageId</ref>? inResponseTo setraises(<ref>WebAPIException</ref>);
35364
35365     readonly attribute DOMString messageStatus;
35366
35367     attribute <ref>MessageAttachment</ref>[] attachments setraises(<ref>WebAPIException</ref>);
35368   };</webidl>
35369       <descriptive>
35370           <brief>
35371  Defines the content and attributes of a message.
35372           </brief>
35373          <description>
35374           <p>
35375 This interface allows a web application to define the set of properties
35376 linked to a message.
35377           </p>
35378           <p>
35379 It also allows an application to retrieve the content of a
35380 message through <em>MessageStorage </em>methods. In these
35381 cases, the implementation can return, in some situations, only the meta-information
35382 of a message without the loaded body. In such situations, the method <em>MessageService.loadMessageBody() </em>should be used.
35383           </p>
35384          </description>
35385           <version>
35386  1.0
35387           </version>
35388           <Code> // Define the success callback.
35389  var messageSentCallback = function(recipients) {
35390    console.log(&quot;Message sent successfully to &quot; + recipients.length + &quot; recipients.&quot;);
35391  }
35392
35393  // Define the error callback.
35394  function errorCallback(err) {
35395    console.log(err.name + &quot; error: &quot; + err.message);
35396  }
35397  
35398  function serviceListCB(services) {
35399    if (services.length > 0) {
35400       var msg = new tizen.Message(&quot;messaging.sms&quot;, {plainBody: &quot;Tizen first SMS message.&quot;});
35401       services[0].sendMessage(msg, messageSentCallback, errorCallback);
35402    }
35403  }
35404
35405  tizen.messaging.getMessageServices(&quot;messaging.sms&quot;,
35406                                     serviceListCB,
35407                                     errorCallback);
35408  </Code>
35409       </descriptive>
35410       <ExtendedAttributeList>
35411         <ExtendedAttribute name="Constructor">
35412           <webidl>Constructor(<ref>MessageServiceTag</ref> type, optional <ref>MessageInit</ref>? messageInitDict)</webidl>
35413           <ArgumentList>
35414             <Argument name="type">
35415               <Type name="MessageServiceTag"/>
35416             </Argument>
35417             <Argument optional="optional" name="messageInitDict">
35418               <Type name="MessageInit" nullable="nullable"/>
35419             </Argument>
35420           </ArgumentList>
35421         </ExtendedAttribute>
35422       </ExtendedAttributeList>
35423       <Attribute readonly="readonly" name="id" id="::Messaging::Message::id">
35424         <webidl>    readonly attribute <ref>MessageId</ref>? id;</webidl>
35425         <descriptive>
35426             <brief>
35427  The message identifier.
35428             </brief>
35429            <description>
35430             <p>
35431 The ID is locally unique and persistent property, assigned by the device or the Web runtime (WRT).
35432 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>.
35433             </p>
35434             <p>
35435 By default, this attribute is set to <var>null</var>.
35436             </p>
35437            </description>
35438             <version>
35439  1.0
35440             </version>
35441         </descriptive>
35442         <Type name="MessageId" nullable="nullable"/>
35443       </Attribute>
35444       <Attribute readonly="readonly" name="conversationId" id="::Messaging::Message::conversationId">
35445         <webidl>    readonly attribute <ref>MessageConvId</ref>? conversationId;</webidl>
35446         <descriptive>
35447             <brief>
35448  The identifier of the conversation to which the message belongs.
35449             </brief>
35450            <description>
35451             <p>
35452 By default, this attribute is set to <var>null</var>.
35453             </p>
35454            </description>
35455             <version>
35456  1.0
35457             </version>
35458         </descriptive>
35459         <Type name="MessageConvId" nullable="nullable"/>
35460       </Attribute>
35461       <Attribute readonly="readonly" name="folderId" id="::Messaging::Message::folderId">
35462         <webidl>    readonly attribute <ref>MessageFolderId</ref>? folderId;</webidl>
35463         <descriptive>
35464             <brief>
35465  The identifier of the folder to which the message belongs.
35466             </brief>
35467            <description>
35468             <p>
35469 By default, this attribute is set to null.
35470             </p>
35471             <p>
35472 For SMS and MMS, <em>folderId </em>can be one of these values:
35473             </p>
35474             <ul>
35475               <li>
35476 INBOX = 1,              </li>
35477               <li>
35478 OUTBOX = 2,              </li>
35479               <li>
35480 DRAFTS = 3,              </li>
35481               <li>
35482 SENTBOX = 4              </li>
35483             </ul>
35484            </description>
35485             <version>
35486  1.0
35487             </version>
35488         </descriptive>
35489         <Type name="MessageFolderId" nullable="nullable"/>
35490       </Attribute>
35491       <Attribute readonly="readonly" name="type" id="::Messaging::Message::type">
35492         <webidl>    readonly attribute <ref>MessageServiceTag</ref> type;</webidl>
35493         <descriptive>
35494             <brief>
35495  The type of a given message.          
35496             </brief>
35497             <version>
35498  1.0
35499             </version>
35500         </descriptive>
35501         <Type name="MessageServiceTag"/>
35502       </Attribute>
35503       <Attribute readonly="readonly" name="timestamp" id="::Messaging::Message::timestamp">
35504         <webidl>    readonly attribute Date? timestamp;</webidl>
35505         <descriptive>
35506             <brief>
35507  The timestamp of a message.
35508             </brief>
35509            <description>
35510             <p>
35511 For a received message, the timestamps indicates the time at which a message is received.
35512 For a sent message, the timestamp indicates the time at which a message is sent.
35513 For a draft message, the timestamp indicates the time at which a message is added.
35514 By default, this attribute is set to <var>null</var>.
35515             </p>
35516            </description>
35517             <version>
35518  1.0
35519             </version>
35520         </descriptive>
35521         <Type type="Date" nullable="nullable"/>
35522       </Attribute>
35523       <Attribute readonly="readonly" name="from" id="::Messaging::Message::from">
35524         <webidl>    readonly attribute DOMString? from;</webidl>
35525         <descriptive>
35526             <brief>
35527  The source address (or source phone number) of a message.
35528             </brief>
35529            <description>
35530             <p>
35531 This property is set up by the device or the web runtime environment.
35532 By default, this attribute is set to null.
35533             </p>
35534            </description>
35535             <version>
35536  1.0
35537             </version>
35538         </descriptive>
35539         <Type type="DOMString" nullable="nullable"/>
35540       </Attribute>
35541       <Attribute name="to" id="::Messaging::Message::to">
35542         <webidl>    attribute DOMString[] to setraises(<ref>WebAPIException</ref>);</webidl>
35543         <descriptive>
35544             <brief>
35545  The destination of a message.
35546             </brief>
35547             <version>
35548  1.0
35549             </version>
35550         </descriptive>
35551         <Type type="array">
35552           <Type type="DOMString"/>
35553         </Type>
35554         <SetRaises>
35555           <RaiseException name="WebAPIException"/>
35556         </SetRaises>
35557       </Attribute>
35558       <Attribute name="cc" id="::Messaging::Message::cc">
35559         <webidl>    attribute DOMString[] cc setraises(<ref>WebAPIException</ref>);</webidl>
35560         <descriptive>
35561             <brief>
35562  The carbon copy address of a message.
35563             </brief>
35564            <description>
35565             <p>
35566 This property is used only for email messages.
35567             </p>
35568            </description>
35569             <version>
35570  1.0
35571             </version>
35572         </descriptive>
35573         <Type type="array">
35574           <Type type="DOMString"/>
35575         </Type>
35576         <SetRaises>
35577           <RaiseException name="WebAPIException"/>
35578         </SetRaises>
35579       </Attribute>
35580       <Attribute name="bcc" id="::Messaging::Message::bcc">
35581         <webidl>    attribute DOMString[] bcc setraises(<ref>WebAPIException</ref>);</webidl>
35582         <descriptive>
35583             <brief>
35584  The blind carbon copy (bcc) address of a message.
35585             </brief>
35586            <description>
35587             <p>
35588 This property is used only with email messages.
35589             </p>
35590            </description>
35591             <version>
35592  1.0
35593             </version>
35594         </descriptive>
35595         <Type type="array">
35596           <Type type="DOMString"/>
35597         </Type>
35598         <SetRaises>
35599           <RaiseException name="WebAPIException"/>
35600         </SetRaises>
35601       </Attribute>
35602       <Attribute name="body" id="::Messaging::Message::body">
35603         <webidl>    attribute <ref>MessageBody</ref> body setraises(<ref>WebAPIException</ref>);</webidl>
35604         <descriptive>
35605             <brief>
35606  An attribute to store the body of a message.
35607             </brief>
35608             <version>
35609  1.0
35610             </version>
35611         </descriptive>
35612         <Type name="MessageBody"/>
35613         <SetRaises>
35614           <RaiseException name="WebAPIException"/>
35615         </SetRaises>
35616       </Attribute>
35617       <Attribute name="isRead" id="::Messaging::Message::isRead">
35618         <webidl>    attribute boolean isRead setraises(<ref>WebAPIException</ref>);</webidl>
35619         <descriptive>
35620             <brief>
35621  An attribute to indicate the read state for a message.
35622             </brief>
35623            <description>
35624             <p>
35625 This property is set to <var>true</var> if the message has been read. Else it is set to <var>false</var>.
35626             </p>
35627            </description>
35628             <version>
35629  1.0
35630             </version>
35631         </descriptive>
35632         <Type type="boolean"/>
35633         <SetRaises>
35634           <RaiseException name="WebAPIException"/>
35635         </SetRaises>
35636       </Attribute>
35637       <Attribute readonly="readonly" name="hasAttachment" id="::Messaging::Message::hasAttachment">
35638         <webidl>    readonly attribute boolean hasAttachment;</webidl>
35639         <descriptive>
35640             <brief>
35641  An attribute to indicate whether an attachment(s) exists or not.
35642             </brief>
35643            <description>
35644             <p>
35645 It is set to <var>true</var> if a message has one or more attachments.
35646             </p>
35647             <p>
35648 This property is used only with email and MMS messages.(It is valid when body is loaded)
35649             </p>
35650            </description>
35651             <version>
35652  1.0
35653             </version>
35654         </descriptive>
35655         <Type type="boolean"/>
35656       </Attribute>
35657       <Attribute name="isHighPriority" id="::Messaging::Message::isHighPriority">
35658         <webidl>    attribute boolean isHighPriority setraises(<ref>WebAPIException</ref>);</webidl>
35659         <descriptive>
35660             <brief>
35661  An attribute to indicate the priority of a message.
35662             </brief>
35663            <description>
35664             <p>
35665 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.
35666             </p>
35667             <p>
35668 This property is used only with email messages.
35669             </p>
35670            </description>
35671             <version>
35672  1.0
35673             </version>
35674         </descriptive>
35675         <Type type="boolean"/>
35676         <SetRaises>
35677           <RaiseException name="WebAPIException"/>
35678         </SetRaises>
35679       </Attribute>
35680       <Attribute name="subject" id="::Messaging::Message::subject">
35681         <webidl>    attribute DOMString subject setraises(<ref>WebAPIException</ref>);</webidl>
35682         <descriptive>
35683             <brief>
35684  An attribute to store the subject of a message.
35685             </brief>
35686            <description>
35687             <p>
35688 This property is used only with email and MMS messages.
35689             </p>
35690            </description>
35691             <version>
35692  1.0
35693             </version>
35694         </descriptive>
35695         <Type type="DOMString"/>
35696         <SetRaises>
35697           <RaiseException name="WebAPIException"/>
35698         </SetRaises>
35699       </Attribute>
35700       <Attribute readonly="readonly" name="inResponseTo" id="::Messaging::Message::inResponseTo">
35701         <webidl>    readonly attribute <ref>MessageId</ref>? inResponseTo setraises(<ref>WebAPIException</ref>);</webidl>
35702         <descriptive>
35703             <brief>
35704  The identifier of the original message.
35705             </brief>
35706            <description>
35707             <p>
35708 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>.
35709             </p>
35710            </description>
35711             <version>
35712  1.0
35713             </version>
35714         </descriptive>
35715         <Type name="MessageId" nullable="nullable"/>
35716         <SetRaises>
35717           <RaiseException name="WebAPIException"/>
35718         </SetRaises>
35719       </Attribute>
35720       <Attribute readonly="readonly" name="messageStatus" id="::Messaging::Message::messageStatus">
35721         <webidl>    readonly attribute DOMString messageStatus;</webidl>
35722         <descriptive>
35723             <brief>
35724  The status of a given message.
35725             </brief>
35726            <description>
35727             <p>
35728 It can be one of these values:
35729             </p>
35730             <ul>
35731               <li>
35732 SENT              </li>
35733               <li>
35734 SENDING              </li>
35735               <li>
35736 FAILED              </li>
35737               <li>
35738 DRAFT              </li>
35739             </ul>
35740             <p>
35741 If the status of the current message does not correspond to any item from
35742 the list, an empty value is returned.
35743             </p>
35744            </description>
35745             <version>
35746  1.0
35747             </version>
35748         </descriptive>
35749         <Type type="DOMString"/>
35750       </Attribute>
35751       <Attribute name="attachments" id="::Messaging::Message::attachments">
35752         <webidl>    attribute <ref>MessageAttachment</ref>[] attachments setraises(<ref>WebAPIException</ref>);</webidl>
35753         <descriptive>
35754             <brief>
35755  The list of the message attachments.
35756             </brief>
35757            <description>
35758             <p>
35759 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).
35760             </p>
35761            </description>
35762             <version>
35763  1.0
35764             </version>
35765             <Code> // Define the success callback.
35766  function serviceListCB(services) {
35767      if (services.length > 0) {
35768          var msg = new tizen.Message(&quot;messaging.email&quot;);    
35769          msg.attachments = [new tizen.MessageAttachment(&quot;images/myimage.png&quot;, &quot;image/png&quot;),
35770                             new tizen.MessageAttachment(&quot;documents/mydoc.pdf&quot;, &quot;text/pdf&quot;)];
35771      }
35772  }
35773
35774  tizen.messaging.getMessageServices(&quot;messaging.email&quot;, serviceListCB);
35775
35776      
35777 </Code>
35778         </descriptive>
35779         <Type type="array">
35780           <Type name="MessageAttachment"/>
35781         </Type>
35782         <SetRaises>
35783           <RaiseException name="WebAPIException"/>
35784         </SetRaises>
35785       </Attribute>
35786     </Interface>
35787     <Dictionary name="MessageInit" id="::Messaging::MessageInit">
35788       <webidl>  dictionary MessageInit
35789   {
35790
35791     DOMString subject;
35792
35793     DOMString[] to;
35794
35795     DOMString[] cc;
35796
35797     DOMString[] bcc;
35798
35799     DOMString plainBody;
35800
35801     DOMString htmlBody;
35802
35803     boolean isHighPriority;
35804   };</webidl>
35805       <descriptive>
35806           <brief>
35807  Provides specific message attributes upon message creation.
35808           </brief>
35809          <description>
35810           <p>
35811 This interface is used to input parameters when messages are created using
35812 the Message constructor.
35813           </p>
35814           <p>
35815 All the attributes are optional and are <var>undefined </var>by default, unless otherwise stated in the parameter description.
35816           </p>
35817          </description>
35818           <version>
35819  1.0
35820           </version>
35821       </descriptive>
35822       <DictionaryMember name="subject" id="::Messaging::MessageInit::subject">
35823         <webidl>    DOMString subject;</webidl>
35824         <descriptive>
35825             <brief>
35826  The subject of a message.
35827             </brief>
35828            <description>
35829             <p>
35830 This property is used only with email and MMS messages.
35831             </p>
35832            </description>
35833             <version>
35834  1.0
35835             </version>
35836         </descriptive>
35837         <Type type="DOMString"/>
35838       </DictionaryMember>
35839       <DictionaryMember name="to" id="::Messaging::MessageInit::to">
35840         <webidl>    DOMString[] to;</webidl>
35841         <descriptive>
35842             <brief>
35843  The destination addresses (or phone numbers) of a message.
35844             </brief>
35845             <version>
35846  1.0
35847             </version>
35848         </descriptive>
35849         <Type type="array">
35850           <Type type="DOMString"/>
35851         </Type>
35852       </DictionaryMember>
35853       <DictionaryMember name="cc" id="::Messaging::MessageInit::cc">
35854         <webidl>    DOMString[] cc;</webidl>
35855         <descriptive>
35856             <brief>
35857  The carbon copy addresses of a message.
35858             </brief>
35859            <description>
35860             <p>
35861 This property is used only with email messages.
35862             </p>
35863            </description>
35864             <version>
35865  1.0
35866             </version>
35867         </descriptive>
35868         <Type type="array">
35869           <Type type="DOMString"/>
35870         </Type>
35871       </DictionaryMember>
35872       <DictionaryMember name="bcc" id="::Messaging::MessageInit::bcc">
35873         <webidl>    DOMString[] bcc;</webidl>
35874         <descriptive>
35875             <brief>
35876  The blind carbon copy addresses of a message.
35877             </brief>
35878            <description>
35879             <p>
35880 This property is used only with email messages.
35881             </p>
35882            </description>
35883             <version>
35884  1.0
35885             </version>
35886         </descriptive>
35887         <Type type="array">
35888           <Type type="DOMString"/>
35889         </Type>
35890       </DictionaryMember>
35891       <DictionaryMember name="plainBody" id="::Messaging::MessageInit::plainBody">
35892         <webidl>    DOMString plainBody;</webidl>
35893         <descriptive>
35894             <brief>
35895  The plain text representation of a message body.
35896             </brief>
35897             <version>
35898  1.0
35899             </version>
35900         </descriptive>
35901         <Type type="DOMString"/>
35902       </DictionaryMember>
35903       <DictionaryMember name="htmlBody" id="::Messaging::MessageInit::htmlBody">
35904         <webidl>    DOMString htmlBody;</webidl>
35905         <descriptive>
35906             <brief>
35907  The HTML representation of a message body.
35908             </brief>
35909            <description>
35910             <p>
35911 This property is used only with email messages.
35912             </p>
35913            </description>
35914             <version>
35915  1.0
35916             </version>
35917         </descriptive>
35918         <Type type="DOMString"/>
35919       </DictionaryMember>
35920       <DictionaryMember name="isHighPriority" id="::Messaging::MessageInit::isHighPriority">
35921         <webidl>    boolean isHighPriority;</webidl>
35922         <descriptive>
35923             <brief>
35924  The priority of a message.
35925             </brief>
35926            <description>
35927             <p>
35928 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.
35929             </p>
35930             <p>
35931 This property is used only with email messages.
35932             </p>
35933            </description>
35934             <version>
35935  1.0
35936             </version>
35937         </descriptive>
35938         <Type type="boolean"/>
35939       </DictionaryMember>
35940     </Dictionary>
35941     <Interface name="MessageBody" id="::Messaging::MessageBody">
35942       <webidl>  [NoInterfaceObject] interface MessageBody {
35943
35944     readonly attribute <ref>MessageId</ref> messageId;
35945
35946     readonly attribute boolean loaded;
35947
35948     attribute DOMString plainBody setraises(<ref>WebAPIException</ref>);
35949
35950     attribute DOMString htmlBody setraises(<ref>WebAPIException</ref>);
35951
35952     attribute <ref>MessageAttachment</ref>[] inlineAttachments setraises(<ref>WebAPIException</ref>);
35953   };</webidl>
35954       <descriptive>
35955           <brief>
35956  This interface describes a message body.
35957           </brief>
35958          <description>
35959           <p>
35960 Message body is comprised of a plain text, an HTML, and inline attachments.
35961           </p>
35962          </description>
35963           <version>
35964  1.0
35965           </version>
35966       </descriptive>
35967       <ExtendedAttributeList>
35968         <ExtendedAttribute name="NoInterfaceObject">
35969           <webidl>NoInterfaceObject</webidl>
35970         </ExtendedAttribute>
35971       </ExtendedAttributeList>
35972       <Attribute readonly="readonly" name="messageId" id="::Messaging::MessageBody::messageId">
35973         <webidl>    readonly attribute <ref>MessageId</ref> messageId;</webidl>
35974         <descriptive>
35975             <brief>
35976  The ID of a parent message.
35977             </brief>
35978            <description>
35979             <p>
35980 It holds the ID of the message containing this body.
35981             </p>
35982            </description>
35983             <version>
35984  1.0
35985             </version>
35986         </descriptive>
35987         <Type name="MessageId"/>
35988       </Attribute>
35989       <Attribute readonly="readonly" name="loaded" id="::Messaging::MessageBody::loaded">
35990         <webidl>    readonly attribute boolean loaded;</webidl>
35991         <descriptive>
35992             <brief>
35993  An attribute to indicate whether the message body has been loaded or not.
35994             </brief>
35995            <description>
35996             <p>
35997 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.
35998 The default value is <var>false</var>.
35999             </p>
36000            </description>
36001             <version>
36002  1.0
36003             </version>
36004         </descriptive>
36005         <Type type="boolean"/>
36006       </Attribute>
36007       <Attribute name="plainBody" id="::Messaging::MessageBody::plainBody">
36008         <webidl>    attribute DOMString plainBody setraises(<ref>WebAPIException</ref>);</webidl>
36009         <descriptive>
36010             <brief>
36011  The plain text representation of a message body.
36012             </brief>
36013             <version>
36014  1.0
36015             </version>
36016         </descriptive>
36017         <Type type="DOMString"/>
36018         <SetRaises>
36019           <RaiseException name="WebAPIException"/>
36020         </SetRaises>
36021       </Attribute>
36022       <Attribute name="htmlBody" id="::Messaging::MessageBody::htmlBody">
36023         <webidl>    attribute DOMString htmlBody setraises(<ref>WebAPIException</ref>);</webidl>
36024         <descriptive>
36025             <brief>
36026  The HTML representation of a message body.
36027             </brief>
36028            <description>
36029             <p>
36030 This attribute holds an empty string if the message does not have any HTML body content.
36031 This property is used only with email messages.
36032             </p>
36033            </description>
36034             <version>
36035  1.0
36036             </version>
36037         </descriptive>
36038         <Type type="DOMString"/>
36039         <SetRaises>
36040           <RaiseException name="WebAPIException"/>
36041         </SetRaises>
36042       </Attribute>
36043       <Attribute name="inlineAttachments" id="::Messaging::MessageBody::inlineAttachments">
36044         <webidl>    attribute <ref>MessageAttachment</ref>[] inlineAttachments setraises(<ref>WebAPIException</ref>);</webidl>
36045         <descriptive>
36046             <brief>
36047  The list of the inline attachments.
36048             </brief>
36049            <description>
36050             <p>
36051 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).
36052             </p>
36053             <p>
36054 To indicate where to show an inline attachment within the HTML body, a link of the following format should be provided:
36055 &quot;&lt;img src=&quot;The file name of a inline attachment&quot;>&quot; 
36056 This property is used only with email messages.
36057             </p>
36058            </description>
36059             <version>
36060  1.0
36061             </version>
36062             <Code> // Define the success callback.
36063  function serviceListCB(services) {
36064      if (services.length > 0) {
36065          var msg = new tizen.Message(&quot;messaging.email&quot;);
36066          msg.body.htmlBody = &quot;&lt;html>&lt;body>&lt;img src='myimage.png'>&lt;/body>&lt;/html>&quot;;
36067          msg.body.inlineAttachments = [new tizen.MessageAttachment(&quot;images/myimage.png&quot;)];
36068      }
36069  }
36070
36071  tizen.messaging.getMessageServices(&quot;messaging.email&quot;, serviceListCB);
36072
36073  </Code>
36074         </descriptive>
36075         <Type type="array">
36076           <Type name="MessageAttachment"/>
36077         </Type>
36078         <SetRaises>
36079           <RaiseException name="WebAPIException"/>
36080         </SetRaises>
36081       </Attribute>
36082     </Interface>
36083     <Interface name="MessageAttachment" id="::Messaging::MessageAttachment">
36084       <webidl>  [Constructor(DOMString filePath, optional DOMString? mimeType)]
36085   interface MessageAttachment {
36086     
36087     readonly attribute <ref>MessageAttachmentId</ref>? id;
36088     
36089     readonly attribute <ref>MessageId</ref>? messageId;
36090     
36091     readonly attribute DOMString? mimeType;
36092     
36093     readonly attribute DOMString? filePath;
36094   };</webidl>
36095       <descriptive>
36096           <brief>
36097  This interface defines the content and attributes of a message attachment.
36098           </brief>
36099           <version>
36100  1.0
36101           </version>
36102       </descriptive>
36103       <ExtendedAttributeList>
36104         <ExtendedAttribute name="Constructor">
36105           <webidl>Constructor(DOMString filePath, optional DOMString? mimeType)</webidl>
36106           <ArgumentList>
36107             <Argument name="filePath">
36108               <Type type="DOMString"/>
36109             </Argument>
36110             <Argument optional="optional" name="mimeType">
36111               <Type type="DOMString" nullable="nullable"/>
36112             </Argument>
36113           </ArgumentList>
36114         </ExtendedAttribute>
36115       </ExtendedAttributeList>
36116       <Attribute readonly="readonly" name="id" id="::Messaging::MessageAttachment::id">
36117         <webidl>    readonly attribute <ref>MessageAttachmentId</ref>? id;</webidl>
36118         <descriptive>
36119             <brief>
36120  The ID of an attachment.
36121             </brief>
36122            <description>
36123             <p>
36124 It holds the identifier of the attachment within its parent message.
36125             </p>
36126             <p>
36127 By default, this attribute is set to <var>null</var>.
36128             </p>
36129            </description>
36130             <version>
36131  1.0
36132             </version>
36133         </descriptive>
36134         <Type name="MessageAttachmentId" nullable="nullable"/>
36135       </Attribute>
36136       <Attribute readonly="readonly" name="messageId" id="::Messaging::MessageAttachment::messageId">
36137         <webidl>    readonly attribute <ref>MessageId</ref>? messageId;</webidl>
36138         <descriptive>
36139             <brief>
36140  The ID of a parent message.
36141             </brief>
36142            <description>
36143             <p>
36144 By default, this attribute is set to <var>null</var>.
36145             </p>
36146            </description>
36147             <version>
36148  1.0
36149             </version>
36150         </descriptive>
36151         <Type name="MessageId" nullable="nullable"/>
36152       </Attribute>
36153       <Attribute readonly="readonly" name="mimeType" id="::Messaging::MessageAttachment::mimeType">
36154         <webidl>    readonly attribute DOMString? mimeType;</webidl>
36155         <descriptive>
36156             <brief>
36157  The attachment MIME type.
36158             </brief>
36159            <description>
36160             <p>
36161 It describes the MIME type of an attachment, for example; &quot;text/html&quot;.
36162             </p>
36163             <p>
36164 By default, this attribute is set to <var>null</var>.
36165             </p>
36166            </description>
36167             <version>
36168  1.0
36169             </version>
36170         </descriptive>
36171         <Type type="DOMString" nullable="nullable"/>
36172       </Attribute>
36173       <Attribute readonly="readonly" name="filePath" id="::Messaging::MessageAttachment::filePath">
36174         <webidl>    readonly attribute DOMString? filePath;</webidl>
36175         <descriptive>
36176             <brief>
36177  The location path to a loaded attachment file.
36178             </brief>
36179            <description>
36180             <p>
36181 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.
36182             </p>
36183            </description>
36184             <version>
36185  1.0
36186             </version>
36187         </descriptive>
36188         <Type type="DOMString" nullable="nullable"/>
36189       </Attribute>
36190     </Interface>
36191     <Interface name="Messaging" id="::Messaging::Messaging">
36192       <webidl>  [NoInterfaceObject] interface Messaging {
36193
36194     void getMessageServices(<ref>MessageServiceTag</ref> messageServiceType,
36195                             <ref>MessageServiceArraySuccessCallback</ref> successCallback,
36196                             optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
36197   };</webidl>
36198       <descriptive>
36199           <brief>
36200  This interface retrieves messaging services.
36201           </brief>
36202          <description>
36203           <p>
36204 Fetches all existing messaging services by type or a messaging service of a given type
36205 for concrete account.
36206           </p>
36207          </description>
36208           <version>
36209  1.0
36210           </version>
36211           <Code> // Define the success callback.
36212  function serviceListCB(services) {
36213    if (services.length > 0) {
36214      var msg = new tizen.Message(&quot;messaging.sms&quot;);
36215    }
36216  }
36217
36218  // Define error callback.
36219  function errorCallback(error) {
36220    console.log(&quot;Cannot get messaging service &quot; + error.message);
36221  }
36222
36223  tizen.messaging.getMessageServices(&quot;messaging.sms&quot;, serviceListCB,
36224                                      errorCallback);
36225  </Code>
36226       </descriptive>
36227       <ExtendedAttributeList>
36228         <ExtendedAttribute name="NoInterfaceObject">
36229           <webidl>NoInterfaceObject</webidl>
36230         </ExtendedAttribute>
36231       </ExtendedAttributeList>
36232       <Operation name="getMessageServices" id="::Messaging::Messaging::getMessageServices">
36233         <webidl>    void getMessageServices(<ref>MessageServiceTag</ref> messageServiceType,
36234                             <ref>MessageServiceArraySuccessCallback</ref> successCallback,
36235                             optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
36236         <descriptive>
36237             <brief>
36238  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.
36239             </brief>
36240            <description>
36241             <p>
36242 The errorCallback is launched with these error types:
36243             </p>
36244             <ul>
36245               <li>
36246 InvalidValuesError - If any of the input parameters contain an invalid value, the encoding is not valid or onsuccess is null. 
36247 Please note that to allow developers to ignore errors, errorCallback accepts null as a valid value.              </li>
36248               <li>
36249 UnknownError - In any other error case.              </li>
36250             </ul>
36251            </description>
36252             <version>
36253  1.0
36254             </version>
36255             <Code> // Define the error callback.
36256  function errorCallback(error) {
36257    console.log(&quot;Cannot get messaging service &quot; + error.message);
36258  }
36259
36260  // Define the success callback.
36261  function serviceListCB(services) {
36262    console.log(&quot;Found &quot; + services.length + &quot;email services&quot;);
36263  }
36264
36265  tizen.messaging.getMessageServices(&quot;messaging.email&quot;, serviceListCB,
36266                                       errorCallback);
36267  </Code>
36268         </descriptive>
36269         <Type type="void"/>
36270         <ArgumentList>
36271           <Argument name="messageServiceType">
36272             <descriptive>
36273                 <description><p>
36274  Type of the services to be retrieved.
36275                 </p></description>
36276             </descriptive>
36277             <Type name="MessageServiceTag"/>
36278           </Argument>
36279           <Argument name="successCallback">
36280             <descriptive>
36281                 <description><p>
36282  The method invoked when the services are successfully retrieved.
36283                 </p></description>
36284             </descriptive>
36285             <Type name="MessageServiceArraySuccessCallback"/>
36286           </Argument>
36287           <Argument optional="optional" name="errorCallback">
36288             <descriptive>
36289                 <description><p>
36290  The method invoked when an error occurs.
36291                 </p></description>
36292             </descriptive>
36293             <Type name="ErrorCallback" nullable="nullable"/>
36294           </Argument>
36295         </ArgumentList>
36296         <Raises>
36297           <RaiseException name="WebAPIException">
36298             <descriptive>
36299                 <description><p>
36300  with error type TypeMismatchError, if any input parameter
36301 is not compatible with the expected type for that parameter.
36302                 </p></description>
36303                 <description><p>
36304  with error type NotSupportedError, if this feature is not supported.
36305                 </p></description>
36306             </descriptive>
36307           </RaiseException>
36308         </Raises>
36309       </Operation>
36310     </Interface>
36311     <Interface name="MessageServiceArraySuccessCallback" id="::Messaging::MessageServiceArraySuccessCallback">
36312       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface MessageServiceArraySuccessCallback {
36313
36314     void onsuccess(<ref>MessageService</ref>[] services);
36315
36316   };</webidl>
36317       <descriptive>
36318           <brief>
36319  Defines callback(s) for retrieving message services.
36320           </brief>
36321           <version>
36322  1.0
36323           </version>
36324       </descriptive>
36325       <ExtendedAttributeList>
36326         <ExtendedAttribute name="Callback" value="FunctionOnly">
36327           <webidl>Callback</webidl>
36328         </ExtendedAttribute>
36329         <ExtendedAttribute name="NoInterfaceObject">
36330           <webidl> NoInterfaceObject</webidl>
36331         </ExtendedAttribute>
36332       </ExtendedAttributeList>
36333       <Operation name="onsuccess" id="::Messaging::MessageServiceArraySuccessCallback::onsuccess">
36334         <webidl>    void onsuccess(<ref>MessageService</ref>[] services);</webidl>
36335         <descriptive>
36336             <brief>
36337  Called when finding message services is successful.
36338             </brief>
36339             <version>
36340  1.0
36341             </version>
36342         </descriptive>
36343         <Type type="void"/>
36344         <ArgumentList>
36345           <Argument name="services">
36346             <descriptive>
36347                 <description><p>
36348  Array of available <em>MessageService</em> objects on the device.
36349                 </p></description>
36350             </descriptive>
36351             <Type type="array">
36352               <Type name="MessageService"/>
36353             </Type>
36354           </Argument>
36355         </ArgumentList>
36356       </Operation>
36357     </Interface>
36358     <Interface name="MessageService" id="::Messaging::MessageService">
36359       <webidl>  [NoInterfaceObject] interface MessageService {
36360
36361     readonly attribute DOMString id;
36362
36363     readonly attribute <ref>MessageServiceTag</ref> type;
36364
36365     readonly attribute DOMString name;
36366                     
36367     void sendMessage(<ref>Message</ref> message,
36368                      optional <ref>MessageRecipientsCallback</ref>? successCallback,
36369                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
36370
36371     void loadMessageBody(<ref>Message</ref> message,
36372                          <ref>MessageBodySuccessCallback</ref> successCallback,
36373                          optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
36374
36375     void loadMessageAttachment(<ref>MessageAttachment</ref> attachment,
36376                                <ref>MessageAttachmentSuccessCallback</ref> successCallback,
36377                                optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
36378
36379     long sync(optional <ref>SuccessCallback</ref>? successCallback,
36380               optional <ref>ErrorCallback</ref>? errorCallback,
36381               optional unsigned long? limit) raises(<ref>WebAPIException</ref>);
36382
36383     long syncFolder(<ref>MessageFolder</ref> folder,
36384                     optional <ref>SuccessCallback</ref>? successCallback,
36385                     optional <ref>ErrorCallback</ref>? errorCallback,
36386                     optional unsigned long? limit) raises(<ref>WebAPIException</ref>);
36387
36388     void stopSync(long opId) raises(<ref>WebAPIException</ref>);
36389
36390     readonly attribute <ref>MessageStorage</ref> messageStorage getraises(<ref>WebAPIException</ref>);
36391   };</webidl>
36392       <descriptive>
36393           <brief>
36394  This interface allows a web application to manipulate and send messages and supports the message creating, sending, and fetching capabilities.
36395           </brief>
36396          <description>
36397           <p>
36398 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.
36399           </p>
36400           <p>
36401 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.
36402           </p>
36403           <p>
36404 The interface allows fetching of the message body for a given message using loadMessageBody() method.
36405           </p>
36406          </description>
36407           <version>
36408  1.0
36409           </version>
36410           <Code> // Define the success callback.
36411  function messageSent(recipients) {
36412    console.log(&quot;The SMS has been sent&quot;);
36413  }
36414
36415  // Define the error callback.
36416  function messageFailed(error) {
36417    console.log(&quot;The SMS could not be sent &quot; + error.message);
36418  }
36419
36420  // Define service error callback.
36421  function serviceErrorCB(error) {
36422    console.log(&quot;Cannot get messaging service &quot; + error.message);
36423  }
36424
36425  // Define the success callback.
36426  function serviceListCB(services) {
36427    if (services.length > 0) {
36428      // SMS sending example
36429      var msg = new tizen.Message(&quot;messaging.sms&quot;, {plainBody:&quot;I will arrive in 10 minutes.&quot;,
36430                                   to:[&quot;+34666666666&quot;]});
36431      // Send request
36432      services[0].sendMessage(msg, messageSent, messageFailed);
36433    }
36434  }
36435
36436  tizen.messaging.getMessageServices(&quot;messaging.sms&quot;,
36437                                     serviceListCB,
36438                                     serviceErrorCB);
36439  </Code>
36440       </descriptive>
36441       <ExtendedAttributeList>
36442         <ExtendedAttribute name="NoInterfaceObject">
36443           <webidl>NoInterfaceObject</webidl>
36444         </ExtendedAttribute>
36445       </ExtendedAttributeList>
36446       <Attribute readonly="readonly" name="id" id="::Messaging::MessageService::id">
36447         <webidl>    readonly attribute DOMString id;</webidl>
36448         <descriptive>
36449             <brief>
36450  The unique identifier of this Messaging service. 
36451             </brief>
36452             <version>
36453  1.0.
36454             </version>
36455         </descriptive>
36456         <Type type="DOMString"/>
36457       </Attribute>
36458       <Attribute readonly="readonly" name="type" id="::Messaging::MessageService::type">
36459         <webidl>    readonly attribute <ref>MessageServiceTag</ref> type;</webidl>
36460         <descriptive>
36461             <brief>
36462  The tag supported by this messaging service.
36463             </brief>
36464             <version>
36465  1.0
36466             </version>
36467         </descriptive>
36468         <Type name="MessageServiceTag"/>
36469       </Attribute>
36470       <Attribute readonly="readonly" name="name" id="::Messaging::MessageService::name">
36471         <webidl>    readonly attribute DOMString name;</webidl>
36472         <descriptive>
36473             <brief>
36474  The messaging service name taken from the messaging service
36475             </brief>
36476             <version>
36477  1.0.
36478             </version>
36479         </descriptive>
36480         <Type type="DOMString"/>
36481       </Attribute>
36482       <Operation name="sendMessage" id="::Messaging::MessageService::sendMessage">
36483         <webidl>    void sendMessage(<ref>Message</ref> message,
36484                      optional <ref>MessageRecipientsCallback</ref>? successCallback,
36485                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
36486         <descriptive>
36487             <brief>
36488  Sends a specified message.
36489             </brief>
36490            <description>
36491             <p>
36492 For messaging technologies in which the message is sent individually to every recipient(such as SMS), individual notification must be supported as follows:
36493             </p>
36494             <p>
36495 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.
36496 These error types may be passed, depending on the error conditions:
36497             </p>
36498             <ul>
36499               <li>
36500  NetworkError - If the network connection is not accessible.              </li>
36501               <li>
36502  InvalidValuesError - If any of the input parameters contains an invalid value.              </li>
36503               <li>
36504  UnknownError - If any other error occurs.              </li>
36505             </ul>
36506             <p>
36507 The error message contains the name of the recipient who has failed to receive the sent message.
36508             </p>
36509             <p>
36510 When the operation is fully completed (that is, the implementation has the
36511 result of the send operation for all recipients), the onsuccess() 
36512 method of the successCallback will be invoked with an array of recipients who received 
36513 the sent message, as input parameter.
36514             </p>
36515            </description>
36516             <version>
36517  1.0
36518             </version>
36519             <privilegelevel>
36520  public
36521             </privilegelevel>
36522             <privilege>
36523  http://tizen.org/privilege/messaging.write
36524             </privilege>
36525             <Code> // Define the success callback
36526  function messageSent(recipients) {
36527    for (var i = 0; i &#60; recipients.length; i++) {
36528      console.log(&quot;The SMS has been sent to &quot; + recipients[i]);
36529    }
36530  }
36531
36532  // Define the error callback.
36533  function messageFailed(error) {
36534    console.log(&quot;The SMS could not be sent &quot; + error.message);
36535  }
36536
36537  // Define the success callback.
36538  function serviceListCB(services) {
36539    if (services.length > 0) {
36540      // SMS sending example
36541      var msg = new tizen.Message(&quot;messaging.sms&quot;, {plainBody: &quot;I will arrive in 10 minutes.&quot;,
36542                                  to: [&quot;+34666666666&quot;, &quot;+34888888888&quot;]});
36543      // Send request
36544      services[0].sendMessage(msg, messageSent, messageFailed);
36545    }
36546  }
36547  tizen.messaging.getMessageServices(&quot;messaging.sms&quot;, serviceListCB);
36548  </Code>
36549         </descriptive>
36550         <Type type="void"/>
36551         <ArgumentList>
36552           <Argument name="message">
36553             <descriptive>
36554                 <description><p>
36555  The message to be sent.
36556                 </p></description>
36557             </descriptive>
36558             <Type name="Message"/>
36559           </Argument>
36560           <Argument optional="optional" name="successCallback">
36561             <descriptive>
36562                 <description><p>
36563  The method to be invoked when the message is successfully sent.
36564                 </p></description>
36565             </descriptive>
36566             <Type name="MessageRecipientsCallback" nullable="nullable"/>
36567           </Argument>
36568           <Argument optional="optional" name="errorCallback">
36569             <descriptive>
36570                 <description><p>
36571  The method to be invoked when the sending request has failed.
36572                 </p></description>
36573             </descriptive>
36574             <Type name="ErrorCallback" nullable="nullable"/>
36575           </Argument>
36576         </ArgumentList>
36577         <Raises>
36578           <RaiseException name="WebAPIException">
36579             <descriptive>
36580                 <description><p>
36581  with error type TypeMismatchError, if any input parameter
36582 is not compatible with the expected type for that parameter.
36583                 </p></description>
36584                 <description><p>
36585  with error type SecurityError, if the application does not have the privilege to call this method.
36586                 </p></description>
36587                 <description><p>
36588  with error type NotSupportedError, if this feature is not supported.
36589                 </p></description>
36590             </descriptive>
36591           </RaiseException>
36592         </Raises>
36593       </Operation>
36594       <Operation name="loadMessageBody" id="::Messaging::MessageService::loadMessageBody">
36595         <webidl>    void loadMessageBody(<ref>Message</ref> message,
36596                          <ref>MessageBodySuccessCallback</ref> successCallback,
36597                          optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
36598         <descriptive>
36599             <brief>
36600  Loads the body for a specified message.
36601             </brief>
36602            <description>
36603             <p>
36604 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.
36605 If the message body is already loaded, the onsuccess() method of the successCallback will be invoked immediately.
36606             </p>
36607             <p>
36608 The errorCallback is launched with these error types:
36609             </p>
36610             <ul>
36611               <li>
36612  InvalidValuesError - If any of the input parameters contains an invalid value.              </li>
36613               <li>
36614  UnknownError - If any other error occurs.              </li>
36615             </ul>
36616            </description>
36617             <version>
36618  1.0
36619             </version>
36620             <privilegelevel>
36621  public
36622             </privilegelevel>
36623             <privilege>
36624  http://tizen.org/privilege/messaging.write
36625             </privilege>
36626             <Code> // Assume messaging service is initialized.
36627  var service; 
36628  // Define the success body loaded callback.
36629  function successCallback(message) {
36630    console.log (&quot;body for message: &quot; + message.subject + &quot;from: &quot; + message.from + &quot;loaded.&quot;);
36631  }
36632  // Define error callback.
36633  function errorCallback(error) {
36634    console.log(&quot;Cannot load message body&quot; + error.message);
36635  }
36636
36637  function messageQueryCallback(messages) {
36638    for (var i = 0; i &#60; messages.length; i++) {
36639      var message = messages[i];
36640      if (!message.body.loaded) {
36641         service.loadMessageBody(message, successCallback, errorCallback);
36642      }
36643    }
36644  }
36645
36646  service.messageStorage.findMessages(new tizen.AttributeFilter(&quot;type&quot;, &quot;EXACTLY&quot;, &quot;messaging.email&quot;), messageQueryCallback);
36647  </Code>
36648         </descriptive>
36649         <Type type="void"/>
36650         <ArgumentList>
36651           <Argument name="message">
36652             <descriptive>
36653                 <description><p>
36654  Message with the body to be loaded.
36655                 </p></description>
36656             </descriptive>
36657             <Type name="Message"/>
36658           </Argument>
36659           <Argument name="successCallback">
36660             <descriptive>
36661                 <description><p>
36662  The method to be invoked when the message body is successfully loaded.
36663                 </p></description>
36664             </descriptive>
36665             <Type name="MessageBodySuccessCallback"/>
36666           </Argument>
36667           <Argument optional="optional" name="errorCallback">
36668             <descriptive>
36669                 <description><p>
36670  The method to be invoked when the loading request fails.
36671                 </p></description>
36672             </descriptive>
36673             <Type name="ErrorCallback" nullable="nullable"/>
36674           </Argument>
36675         </ArgumentList>
36676         <Raises>
36677           <RaiseException name="WebAPIException">
36678             <descriptive>
36679                 <description><p>
36680  with error type TypeMismatchError, if any input parameter
36681 is not compatible with the expected type for that parameter.
36682                 </p></description>
36683                 <description><p>
36684  with error type SecurityError, if the application does not have the privilege to call this method.
36685                 </p></description>
36686                 <description><p>
36687  with error type NotSupportedError, if this feature is not supported.
36688                 </p></description>
36689             </descriptive>
36690           </RaiseException>
36691         </Raises>
36692       </Operation>
36693       <Operation name="loadMessageAttachment" id="::Messaging::MessageService::loadMessageAttachment">
36694         <webidl>    void loadMessageAttachment(<ref>MessageAttachment</ref> attachment,
36695                                <ref>MessageAttachmentSuccessCallback</ref> successCallback,
36696                                optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
36697         <descriptive>
36698             <brief>
36699  Loads a specified message attachment.
36700             </brief>
36701            <description>
36702             <p>
36703 This method is used only for email services. If the message attachment is already loaded, the onsuccess() method of the successCallback is invoked immediately.
36704             </p>
36705             <p>
36706 The errorCallback is launched with these error types:
36707             </p>
36708             <ul>
36709               <li>
36710  InvalidValuesError - If any of the input parameters contains an invalid value.              </li>
36711               <li>
36712  UnknownError - If any other error occurs.              </li>
36713             </ul>
36714            </description>
36715             <version>
36716  1.0
36717             </version>
36718             <privilegelevel>
36719  public
36720             </privilegelevel>
36721             <privilege>
36722  http://tizen.org/privilege/messaging.write
36723             </privilege>
36724             <Code> // Assume messaging service is initialized.
36725  var service;
36726  // Define success body loaded callback
36727  function successCallback(attachment) {
36728    console.log(&quot;attachment&quot; + attachment.id + &quot;is loaded to:&quot; + attachment.filePath);
36729  }
36730  // Define error callback
36731  function errorCallback(error) {
36732    console.log(&quot;Cannot load message attachment&quot; + error.message);
36733  }
36734
36735  function messagesFoundCB(messages) {
36736    for (var i = 0; i &#60; messages.length; i++) {
36737      var message = messages[i];
36738      if (!message.attachments[0].loaded) {
36739         service.loadMessageAttachment(message.attachments[0], successCallback, errorCallback);
36740      }
36741    }
36742  }
36743
36744  service.messageStorage.findMessages(new tizen.AttributeFilter(&quot;hasAttachment&quot;, &quot;EXACTLY&quot;, true), messagesFoundCB);
36745  </Code>
36746         </descriptive>
36747         <Type type="void"/>
36748         <ArgumentList>
36749           <Argument name="attachment">
36750             <descriptive>
36751                 <description><p>
36752  Message attachment to be loaded.
36753                 </p></description>
36754             </descriptive>
36755             <Type name="MessageAttachment"/>
36756           </Argument>
36757           <Argument name="successCallback">
36758             <descriptive>
36759                 <description><p>
36760  The method to be invoked when the message attachment is successfully loaded.
36761                 </p></description>
36762             </descriptive>
36763             <Type name="MessageAttachmentSuccessCallback"/>
36764           </Argument>
36765           <Argument optional="optional" name="errorCallback">
36766             <descriptive>
36767                 <description><p>
36768  The method to be invoked when the loading request fails.
36769                 </p></description>
36770             </descriptive>
36771             <Type name="ErrorCallback" nullable="nullable"/>
36772           </Argument>
36773         </ArgumentList>
36774         <Raises>
36775           <RaiseException name="WebAPIException">
36776             <descriptive>
36777                 <description><p>
36778  with error type TypeMismatchError, if any input parameter
36779 is not compatible with the expected type for that parameter.
36780                 </p></description>
36781                 <description><p>
36782  with error type SecurityError, if the application does not have the privilege to call this method.
36783                 </p></description>
36784                 <description><p>
36785  with error type NotSupportedError, if this feature is not supported.
36786                 </p></description>
36787             </descriptive>
36788           </RaiseException>
36789         </Raises>
36790       </Operation>
36791       <Operation name="sync" id="::Messaging::MessageService::sync">
36792         <webidl>    long sync(optional <ref>SuccessCallback</ref>? successCallback,
36793               optional <ref>ErrorCallback</ref>? errorCallback,
36794               optional unsigned long? limit) raises(<ref>WebAPIException</ref>);</webidl>
36795         <descriptive>
36796             <brief>
36797  Synchronizes the service content with an external mail server.
36798             </brief>
36799            <description>
36800             <p>
36801 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.
36802             </p>
36803             <p>
36804 The errorCallback is launched with these error types:
36805             </p>
36806             <ul>
36807               <li>
36808  InvalidValuesError - If any of the input parameters contains an invalid value.              </li>
36809               <li>
36810  AbortError - If the operation has been stopped.              </li>
36811               <li>
36812  UnknownError - If any other error occurs.              </li>
36813             </ul>
36814            </description>
36815             <version>
36816  1.0
36817             </version>
36818             <privilegelevel>
36819  public
36820             </privilegelevel>
36821             <privilege>
36822  http://tizen.org/privilege/messaging.write
36823             </privilege>
36824             <Code> // Define the success callback.
36825  function serviceSynced() {
36826    console.log(&quot;New messages are fetched!&quot;);
36827  }
36828
36829  // Define the success callback.
36830  function servicesListSuccessCB(services) {
36831    services[0].sync(serviceSynced, null, 30);
36832    // Subscribe to MessageStorage notification
36833  }
36834  tizen.messaging.getMessageServices(&quot;messaging.email&quot;, servicesListSuccessCB);
36835  </Code>
36836         </descriptive>
36837         <Type type="long">
36838           <descriptive>
36839               <description><p>
36840  long The identifier which can be used to stop this service operation.
36841               </p></description>
36842           </descriptive>
36843         </Type>
36844         <ArgumentList>
36845           <Argument optional="optional" name="successCallback">
36846             <descriptive>
36847                 <description><p>
36848  The method to be invoked when all the actions are completed successfully.
36849                 </p></description>
36850             </descriptive>
36851             <Type name="SuccessCallback" nullable="nullable"/>
36852           </Argument>
36853           <Argument optional="optional" name="errorCallback">
36854             <descriptive>
36855                 <description><p>
36856  The method to be invoked when the request fails.
36857                 </p></description>
36858             </descriptive>
36859             <Type name="ErrorCallback" nullable="nullable"/>
36860           </Argument>
36861           <Argument optional="optional" name="limit">
36862             <descriptive>
36863                 <description><p>
36864  The maximum amount of messages retrieved within each folder.
36865                 </p></description>
36866             </descriptive>
36867             <Type type="unsigned long" nullable="nullable"/>
36868           </Argument>
36869         </ArgumentList>
36870         <Raises>
36871           <RaiseException name="WebAPIException">
36872             <descriptive>
36873                 <description><p>
36874  with error type TypeMismatchError, if any input parameter
36875 is not compatible with the expected type for that parameter.
36876                 </p></description>
36877                 <description><p>
36878  with error type SecurityError, if the application does not have the privilege to call this method.
36879                 </p></description>
36880                 <description><p>
36881  with error type NotSupportedError, if this feature is not supported.
36882                 </p></description>
36883             </descriptive>
36884           </RaiseException>
36885         </Raises>
36886       </Operation>
36887       <Operation name="syncFolder" id="::Messaging::MessageService::syncFolder">
36888         <webidl>    long syncFolder(<ref>MessageFolder</ref> folder,
36889                     optional <ref>SuccessCallback</ref>? successCallback,
36890                     optional <ref>ErrorCallback</ref>? errorCallback,
36891                     optional unsigned long? limit) raises(<ref>WebAPIException</ref>);</webidl>
36892         <descriptive>
36893             <brief>
36894  Synchronizes the folder content with an external mail server.
36895             </brief>
36896            <description>
36897             <p>
36898 This method is used only for email services. This method performs the following actions:
36899             </p>
36900             <ul>
36901               <li>
36902 Exports local changes within a given folder from device to server.              </li>
36903               <li>
36904 Retrieves the list of available messages from within the given folder.              </li>
36905             </ul>
36906             <p>
36907 Messages that are retrieved from a given folder, even if synchronizable flag for this folder is not set.
36908 The backend is responsible in deciding which data is retrieved for every message. It can be:
36909             </p>
36910             <ul>
36911               <li>
36912 Message header details              </li>
36913               <li>
36914 Whole message body              </li>
36915             </ul>
36916             <p>
36917 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.
36918             </p>
36919             <p>
36920 The errorCallback is launched with these error types:
36921             </p>
36922             <ul>
36923               <li>
36924  InvalidValuesError - If any of the input parameters contains an invalid value.              </li>
36925               <li>
36926  AbortError - If the operation is stopped.              </li>
36927               <li>
36928  UnknownError - If any other error occurs.              </li>
36929             </ul>
36930            </description>
36931             <version>
36932  1.0
36933             </version>
36934             <privilegelevel>
36935  public
36936             </privilegelevel>
36937             <privilege>
36938  http://tizen.org/privilege/messaging.write
36939             </privilege>
36940             <Code> var emailService; // Assume email service is initialized
36941   // Define the error callback.
36942  function errorCallback(err) {
36943    console.log(err.name + &quot; error: &quot; + err.message);
36944  }
36945  function serviceCallback(services) {
36946    emailService = services[0];
36947    var filter = new tizen.AttributeFilter(&quot;serviceId&quot;, &quot;EXACTLY&quot;, emailService.id);
36948
36949    emailService.messageStorage.findFolders(filter, folderQueryCallback);
36950  }
36951   
36952  // Define the success callback.
36953  function folderSynced() {
36954    console.log(&quot;New messages are fetched!&quot;);
36955  }
36956  function folderQueryCallback(folders) {
36957    console.log(folders.length + &quot; folders(s) found!&quot;);
36958    for (var i = 0; i &#60; folders.length; i++) {
36959      emailService.syncFolder (folders[i], folderSynced, null, 30);
36960    }
36961  }
36962  
36963  tizen.messaging.getMessageServices(&quot;messaging.email&quot;, serviceCallback, errorCallback);
36964  </Code>
36965         </descriptive>
36966         <Type type="long">
36967           <descriptive>
36968               <description><p>
36969  long The identifier which can be used to stop this service operation.
36970               </p></description>
36971           </descriptive>
36972         </Type>
36973         <ArgumentList>
36974           <Argument name="folder">
36975             <descriptive>
36976                 <description><p>
36977  The folder to be synchronized.
36978                 </p></description>
36979             </descriptive>
36980             <Type name="MessageFolder"/>
36981           </Argument>
36982           <Argument optional="optional" name="successCallback">
36983             <descriptive>
36984                 <description><p>
36985  The method to be invoked when all actions are completed successfully.
36986                 </p></description>
36987             </descriptive>
36988             <Type name="SuccessCallback" nullable="nullable"/>
36989           </Argument>
36990           <Argument optional="optional" name="errorCallback">
36991             <descriptive>
36992                 <description><p>
36993  The method to be invoked when the request fails.
36994                 </p></description>
36995             </descriptive>
36996             <Type name="ErrorCallback" nullable="nullable"/>
36997           </Argument>
36998           <Argument optional="optional" name="limit">
36999             <descriptive>
37000                 <description><p>
37001  The maximum amount of messages retrieved within a given folder.
37002                 </p></description>
37003             </descriptive>
37004             <Type type="unsigned long" nullable="nullable"/>
37005           </Argument>
37006         </ArgumentList>
37007         <Raises>
37008           <RaiseException name="WebAPIException">
37009             <descriptive>
37010                 <description><p>
37011  with error type TypeMismatchError, if any input parameter
37012 is not compatible with the expected type for that parameter.
37013                 </p></description>
37014                 <description><p>
37015  with error type SecurityError, if the application does not have the privilege to call this method.
37016                 </p></description>
37017                 <description><p>
37018  with error type NotSupportedError, if this feature is not supported.
37019                 </p></description>
37020             </descriptive>
37021           </RaiseException>
37022         </Raises>
37023       </Operation>
37024       <Operation name="stopSync" id="::Messaging::MessageService::stopSync">
37025         <webidl>    void stopSync(long opId) raises(<ref>WebAPIException</ref>);</webidl>
37026         <descriptive>
37027             <brief>
37028  Stops sync() and syncFoler() operation.
37029             </brief>
37030            <description>
37031             <p>
37032 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.
37033             </p>
37034             <p>
37035 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.
37036             </p>
37037            </description>
37038             <version>
37039  1.0
37040             </version>
37041         </descriptive>
37042         <Type type="void"/>
37043         <ArgumentList>
37044           <Argument name="opId">
37045             <descriptive>
37046                 <description><p>
37047   A service operation identifier.
37048                 </p></description>
37049             </descriptive>
37050             <Type type="long"/>
37051           </Argument>
37052         </ArgumentList>
37053         <Raises>
37054           <RaiseException name="WebAPIException">
37055             <descriptive>
37056                 <description><p>
37057  with error type TypeMismatchError, if any input parameter
37058 is not compatible with the expected type for that parameter.
37059                 </p></description>
37060                 <description><p>
37061  with error type InvalidValuesError, if any of the input parameters contains an invalid value.
37062                 </p></description>
37063             </descriptive>
37064           </RaiseException>
37065         </Raises>
37066       </Operation>
37067       <Attribute readonly="readonly" name="messageStorage" id="::Messaging::MessageService::messageStorage">
37068         <webidl>    readonly attribute <ref>MessageStorage</ref> messageStorage getraises(<ref>WebAPIException</ref>);</webidl>
37069         <descriptive>
37070             <brief>
37071  An attribute to access <em>MessageStorage </em>for this messaging service.
37072             </brief>
37073            <description>
37074             <p>
37075 If the backend does not support <em>MessageStorage </em>for this messaging service, a WebAPIException is raised with error type NotSupportedError.
37076             </p>
37077            </description>
37078             <version>
37079  1.0
37080             </version>
37081         </descriptive>
37082         <Type name="MessageStorage"/>
37083         <GetRaises>
37084           <RaiseException name="WebAPIException"/>
37085         </GetRaises>
37086       </Attribute>
37087     </Interface>
37088     <Interface name="MessageRecipientsCallback" id="::Messaging::MessageRecipientsCallback">
37089       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface MessageRecipientsCallback {
37090
37091     void onsuccess(DOMString[] recipients);
37092
37093    };</webidl>
37094       <descriptive>
37095           <brief>
37096  This interface specifies the methods to be called for the sendMessage() operation.
37097           </brief>
37098           <version>
37099  1.0
37100           </version>
37101       </descriptive>
37102       <ExtendedAttributeList>
37103         <ExtendedAttribute name="Callback" value="FunctionOnly">
37104           <webidl>Callback</webidl>
37105         </ExtendedAttribute>
37106         <ExtendedAttribute name="NoInterfaceObject">
37107           <webidl> NoInterfaceObject</webidl>
37108         </ExtendedAttribute>
37109       </ExtendedAttributeList>
37110       <Operation name="onsuccess" id="::Messaging::MessageRecipientsCallback::onsuccess">
37111         <webidl>    void onsuccess(DOMString[] recipients);</webidl>
37112         <descriptive>
37113             <brief>
37114  Called when the message sending is finished.
37115             </brief>
37116             <version>
37117  1.0
37118             </version>
37119         </descriptive>
37120         <Type type="void"/>
37121         <ArgumentList>
37122           <Argument name="recipients">
37123             <descriptive>
37124                 <description><p>
37125  The recipients of the message.
37126                 </p></description>
37127             </descriptive>
37128             <Type type="array">
37129               <Type type="DOMString"/>
37130             </Type>
37131           </Argument>
37132         </ArgumentList>
37133       </Operation>
37134     </Interface>
37135     <Interface name="MessageBodySuccessCallback" id="::Messaging::MessageBodySuccessCallback">
37136       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface MessageBodySuccessCallback {
37137
37138      void onsuccess(<ref>Message</ref> message);
37139   };</webidl>
37140       <descriptive>
37141           <brief>
37142  This interface specifies a success callback function that takes a message as the input argument.
37143 It is used in the loadMessageBody() asynchronous operation.
37144           </brief>
37145           <version>
37146  1.0
37147           </version>
37148       </descriptive>
37149       <ExtendedAttributeList>
37150         <ExtendedAttribute name="Callback" value="FunctionOnly">
37151           <webidl>Callback</webidl>
37152         </ExtendedAttribute>
37153         <ExtendedAttribute name="NoInterfaceObject">
37154           <webidl> NoInterfaceObject</webidl>
37155         </ExtendedAttribute>
37156       </ExtendedAttributeList>
37157       <Operation name="onsuccess" id="::Messaging::MessageBodySuccessCallback::onsuccess">
37158         <webidl>     void onsuccess(<ref>Message</ref> message);</webidl>
37159         <descriptive>
37160             <brief>
37161  Called when the asynchronous query completes successfully.
37162             </brief>
37163             <version>
37164  1.0
37165             </version>
37166         </descriptive>
37167         <Type type="void"/>
37168         <ArgumentList>
37169           <Argument name="message">
37170             <descriptive>
37171                 <description><p>
37172  The message containing the loaded body.
37173                 </p></description>
37174             </descriptive>
37175             <Type name="Message"/>
37176           </Argument>
37177         </ArgumentList>
37178       </Operation>
37179     </Interface>
37180     <Interface name="MessageAttachmentSuccessCallback" id="::Messaging::MessageAttachmentSuccessCallback">
37181       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface MessageAttachmentSuccessCallback {
37182
37183      void onsuccess(<ref>MessageAttachment</ref> attachment);
37184    };</webidl>
37185       <descriptive>
37186           <brief>
37187  This callback interface specifies a success callback function that takes the loaded attachment as the input argument.
37188 It is used in the loadMessageAttachment() asynchronous operation.
37189           </brief>
37190           <version>
37191  1.0
37192           </version>
37193       </descriptive>
37194       <ExtendedAttributeList>
37195         <ExtendedAttribute name="Callback" value="FunctionOnly">
37196           <webidl>Callback</webidl>
37197         </ExtendedAttribute>
37198         <ExtendedAttribute name="NoInterfaceObject">
37199           <webidl> NoInterfaceObject</webidl>
37200         </ExtendedAttribute>
37201       </ExtendedAttributeList>
37202       <Operation name="onsuccess" id="::Messaging::MessageAttachmentSuccessCallback::onsuccess">
37203         <webidl>     void onsuccess(<ref>MessageAttachment</ref> attachment);</webidl>
37204         <descriptive>
37205             <brief>
37206  Called when the asynchronous query completes successfully.
37207             </brief>
37208             <version>
37209  1.0
37210             </version>
37211         </descriptive>
37212         <Type type="void"/>
37213         <ArgumentList>
37214           <Argument name="attachment">
37215             <descriptive>
37216                 <description><p>
37217  The loaded attachment.
37218                 </p></description>
37219             </descriptive>
37220             <Type name="MessageAttachment"/>
37221           </Argument>
37222         </ArgumentList>
37223       </Operation>
37224     </Interface>
37225     <Interface name="MessageStorage" id="::Messaging::MessageStorage">
37226       <webidl>  [NoInterfaceObject] interface MessageStorage {
37227
37228     void addDraftMessage(<ref>Message</ref> message,
37229                          optional <ref>SuccessCallback</ref>? successCallback,
37230                          optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
37231
37232     void findMessages(<ref>AbstractFilter</ref> filter,
37233                       <ref>MessageArraySuccessCallback</ref> successCallback,
37234                       optional <ref>ErrorCallback</ref>? errorCallback,
37235                       optional <ref>SortMode</ref>? sort,
37236                       optional unsigned long? limit,
37237                       optional unsigned long? offset) raises(<ref>WebAPIException</ref>);
37238
37239     void removeMessages(<ref>Message</ref>[] messages,
37240                         optional <ref>SuccessCallback</ref>? successCallback,
37241                         optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
37242
37243     void updateMessages(<ref>Message</ref>[] messages,
37244                         optional <ref>SuccessCallback</ref>? successCallback,
37245                         optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
37246
37247     void findConversations(<ref>AbstractFilter</ref> filter,
37248                            <ref>MessageConversationArraySuccessCallback</ref> successCallback,
37249                            optional <ref>ErrorCallback</ref>? errorCallback,
37250                            optional <ref>SortMode</ref>? sort,
37251                            optional unsigned long? limit,
37252                            optional unsigned long? offset) raises(<ref>WebAPIException</ref>);
37253
37254     void removeConversations(<ref>MessageConversation</ref>[] conversations,
37255                              optional <ref>SuccessCallback</ref>? successCallback,
37256                              optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
37257
37258
37259     void findFolders(<ref>AbstractFilter</ref> filter,
37260                      <ref>MessageFolderArraySuccessCallback</ref> successCallback,
37261                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
37262
37263     long addMessagesChangeListener(<ref>MessagesChangeCallback</ref> messagesChangeCallback,
37264                                    optional <ref>AbstractFilter</ref>? filter) raises(<ref>WebAPIException</ref>);
37265
37266     long addConversationsChangeListener(<ref>MessageConversationsChangeCallback</ref> conversationsChangeCallback,
37267                                         optional <ref>AbstractFilter</ref>? filter) raises(<ref>WebAPIException</ref>);
37268
37269     long addFoldersChangeListener(<ref>MessageFoldersChangeCallback</ref> foldersChangeCallback,
37270                                   optional <ref>AbstractFilter</ref>? filter) raises(<ref>WebAPIException</ref>);
37271
37272     void removeChangeListener(long watchId) raises(<ref>WebAPIException</ref>);
37273   };</webidl>
37274       <descriptive>
37275           <brief>
37276  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.
37277           </brief>
37278          <description>
37279           <p>
37280 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.
37281           </p>
37282          </description>
37283           <version>
37284  1.0
37285           </version>
37286       </descriptive>
37287       <ExtendedAttributeList>
37288         <ExtendedAttribute name="NoInterfaceObject">
37289           <webidl>NoInterfaceObject</webidl>
37290         </ExtendedAttribute>
37291       </ExtendedAttributeList>
37292       <Operation name="addDraftMessage" id="::Messaging::MessageStorage::addDraftMessage">
37293         <webidl>    void addDraftMessage(<ref>Message</ref> message,
37294                          optional <ref>SuccessCallback</ref>? successCallback,
37295                          optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
37296         <descriptive>
37297             <brief>
37298  Adds a draft message to <em>MessageStorage</em> and these messages are stored in the Drafts folder.
37299             </brief>
37300            <description>
37301             <p>
37302 The errorCallback is launched with these error types:
37303             </p>
37304             <ul>
37305               <li>
37306  InvalidValuesError - If any of the input parameters contain an invalid value.              </li>
37307               <li>
37308  UnknownError - If any other error occurs.              </li>
37309             </ul>
37310            </description>
37311             <version>
37312  1.0
37313             </version>
37314             <privilegelevel>
37315  public
37316             </privilegelevel>
37317             <privilege>
37318  http://tizen.org/privilege/messaging.write
37319             </privilege>
37320             <Code> // Define success callback
37321  function successCallback() {
37322    console.log(&quot;Draft message added&quot;);
37323  }
37324
37325  // Define error callback
37326  function errorCallback(error) {
37327    console.log(&quot;Cannot add draft message &quot; + error.message);
37328  }
37329
37330  // Define service query success callback.
37331  function serviceListCB(services) {
37332    if (services.length > 0) {
37333      var msg = new tizen.Message(&quot;messaging.sms&quot;, {plainBody: &quot;Tizen draft SMS message.&quot;});
37334      services[0].messageStorage.addDraftMessage(msg,
37335                                                 successCallback,
37336                                                 errorCallback);
37337    }
37338  }
37339  tizen.messaging.getMessageServices(&quot;messaging.sms&quot;, serviceListCB);
37340  </Code>
37341         </descriptive>
37342         <Type type="void"/>
37343         <ArgumentList>
37344           <Argument name="message">
37345             <descriptive>
37346                 <description><p>
37347  The draft message to add to the storage.
37348                 </p></description>
37349             </descriptive>
37350             <Type name="Message"/>
37351           </Argument>
37352           <Argument optional="optional" name="successCallback">
37353             <descriptive>
37354                 <description><p>
37355  The method called when draft messages successfully added.
37356                 </p></description>
37357             </descriptive>
37358             <Type name="SuccessCallback" nullable="nullable"/>
37359           </Argument>
37360           <Argument optional="optional" name="errorCallback">
37361             <descriptive>
37362                 <description><p>
37363  The method called when an error occurs.
37364                 </p></description>
37365             </descriptive>
37366             <Type name="ErrorCallback" nullable="nullable"/>
37367           </Argument>
37368         </ArgumentList>
37369         <Raises>
37370           <RaiseException name="WebAPIException">
37371             <descriptive>
37372                 <description><p>
37373  with error type TypeMismatchError, if any input parameter
37374 is not compatible with the expected type for that parameter or if the method is invoked for an incoming message.
37375                 </p></description>
37376                 <description><p>
37377  with error type SecurityError, if the application does not have the privilege to call this method.
37378                 </p></description>
37379                 <description><p>
37380  with error type NotSupportedError, if this feature is not supported.
37381                 </p></description>
37382             </descriptive>
37383           </RaiseException>
37384         </Raises>
37385       </Operation>
37386       <Operation name="findMessages" id="::Messaging::MessageStorage::findMessages">
37387         <webidl>    void findMessages(<ref>AbstractFilter</ref> filter,
37388                       <ref>MessageArraySuccessCallback</ref> successCallback,
37389                       optional <ref>ErrorCallback</ref>? errorCallback,
37390                       optional <ref>SortMode</ref>? sort,
37391                       optional unsigned long? limit,
37392                       optional unsigned long? offset) raises(<ref>WebAPIException</ref>);</webidl>
37393         <descriptive>
37394             <brief>
37395  Finds messages from <em>MessageStorage</em>.
37396             </brief>
37397            <description>
37398             <p>
37399 The errorCallback is launched with these error types:
37400             </p>
37401             <ul>
37402               <li>
37403  InvalidValuesError - If any of the input parameters contains an invalid value.              </li>
37404               <li>
37405  UnknownError - If any other error occurs.              </li>
37406             </ul>
37407            </description>
37408             <version>
37409  1.0
37410             </version>
37411             <privilegelevel>
37412  public
37413             </privilegelevel>
37414             <privilege>
37415  http://tizen.org/privilege/messaging.read
37416             </privilege>
37417             <Code> var service; // Assume messaging service is initialized
37418  var messageStorage = service.messageStorage; 
37419  function messageArrayCB(messages) {
37420    console.log(messages.length + &quot; message(s) fetched!&quot;);
37421    for (var i = 0; i &#60; messages.length; i++) {
37422      console.log(i + &quot;. message from &quot; + messages[i].from);
37423    }
37424  }
37425
37426  // Define error callback
37427  function errorCallback(error) {
37428    console.log(&quot;Cannot query messages&quot; + error.message);
37429  }
37430
37431  var filter = new tizen.AttributeFilter(&quot;from&quot;, &quot;CONTAINS&quot;, &quot;2593&quot;);
37432  messageStorage.findMessages(filter, messageArrayCB, errorCallback);
37433  </Code>
37434         </descriptive>
37435         <Type type="void"/>
37436         <ArgumentList>
37437           <Argument name="filter">
37438             <descriptive>
37439                 <description><p>
37440  The criteria to be used when filtering.
37441                 </p></description>
37442             </descriptive>
37443             <Type name="AbstractFilter"/>
37444           </Argument>
37445           <Argument name="successCallback">
37446             <descriptive>
37447                 <description><p>
37448  The method called when the invocation ends successfully.
37449                 </p></description>
37450             </descriptive>
37451             <Type name="MessageArraySuccessCallback"/>
37452           </Argument>
37453           <Argument optional="optional" name="errorCallback">
37454             <descriptive>
37455                 <description><p>
37456  The method called when an error occurs.
37457                 </p></description>
37458             </descriptive>
37459             <Type name="ErrorCallback" nullable="nullable"/>
37460           </Argument>
37461           <Argument optional="optional" name="sort">
37462             <descriptive>
37463                 <description><p>
37464  The sorting mode for the query.
37465                 </p></description>
37466             </descriptive>
37467             <Type name="SortMode" nullable="nullable"/>
37468           </Argument>
37469           <Argument optional="optional" name="limit">
37470             <descriptive>
37471                 <description><p>
37472  The maximum limit the query result is set to as specified by the parameter (It is the same meaning as SQL LIMIT).
37473 If <var>0</var>, there is no limit set.
37474                 </p></description>
37475             </descriptive>
37476             <Type type="unsigned long" nullable="nullable"/>
37477           </Argument>
37478           <Argument optional="optional" name="offset">
37479             <descriptive>
37480                 <description><p>
37481  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.
37482                 </p></description>
37483             </descriptive>
37484             <Type type="unsigned long" nullable="nullable"/>
37485           </Argument>
37486         </ArgumentList>
37487         <Raises>
37488           <RaiseException name="WebAPIException">
37489             <descriptive>
37490                 <description><p>
37491  with error type TypeMismatchError, if any input parameter
37492 is not compatible with the expected type for that parameter.
37493                 </p></description>
37494                 <description><p>
37495  with error type SecurityError, if the application does not have the privilege to call this method.
37496                 </p></description>
37497                 <description><p>
37498  with error type NotSupportedError, if this feature is not supported.
37499                 </p></description>
37500             </descriptive>
37501           </RaiseException>
37502         </Raises>
37503       </Operation>
37504       <Operation name="removeMessages" id="::Messaging::MessageStorage::removeMessages">
37505         <webidl>    void removeMessages(<ref>Message</ref>[] messages,
37506                         optional <ref>SuccessCallback</ref>? successCallback,
37507                         optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
37508         <descriptive>
37509             <brief>
37510  Removes messages from <em>MessageStorage</em>.
37511             </brief>
37512            <description>
37513             <p>
37514 The errorCallback is launched with these error types:
37515             </p>
37516             <ul>
37517               <li>
37518 InvalidValuesError - If any of the input parameters contain an invalid value              </li>
37519               <li>
37520  UnknownError - If any other error occurs.              </li>
37521             </ul>
37522            </description>
37523             <version>
37524  1.0
37525             </version>
37526             <privilegelevel>
37527  public
37528             </privilegelevel>
37529             <privilege>
37530  http://tizen.org/privilege/messaging.write
37531             </privilege>
37532             <Code> // Define success callback
37533  var service; // Assume messaging service is initialized
37534  var messageStorage = service.messageStorage; 
37535  function successCallback() {
37536    console.log(&quot;Messages were deleted&quot;);
37537  }
37538
37539  // Define error callback
37540  function errorCallback(error) {
37541    console.log(&quot;Cannot delete messages &quot; + error.message);
37542  }
37543
37544  function messageArrayCB(messages) {
37545    if (messages.length > 0) {
37546      messageStorage.removeMessages(messages, successCallback, errorCallback);
37547    } else {
37548      console.log(&quot;No messages found&quot;);
37549    }
37550  }
37551
37552  var filter = new tizen.AttributeFilter(&quot;from&quot;, &quot;CONTAINS&quot;, &quot;2593&quot;);
37553  messageStorage.findMessages(filter, messageArrayCB);
37554  </Code>
37555         </descriptive>
37556         <Type type="void"/>
37557         <ArgumentList>
37558           <Argument name="messages">
37559             <descriptive>
37560                 <description><p>
37561  An array of messages to delete.
37562                 </p></description>
37563             </descriptive>
37564             <Type type="array">
37565               <Type name="Message"/>
37566             </Type>
37567           </Argument>
37568           <Argument optional="optional" name="successCallback">
37569             <descriptive>
37570                 <description><p>
37571  The method called when messages are successfully deleted.
37572                 </p></description>
37573             </descriptive>
37574             <Type name="SuccessCallback" nullable="nullable"/>
37575           </Argument>
37576           <Argument optional="optional" name="errorCallback">
37577             <descriptive>
37578                 <description><p>
37579  The method called when an error occurs.
37580                 </p></description>
37581             </descriptive>
37582             <Type name="ErrorCallback" nullable="nullable"/>
37583           </Argument>
37584         </ArgumentList>
37585         <Raises>
37586           <RaiseException name="WebAPIException">
37587             <descriptive>
37588                 <description><p>
37589  with error type TypeMismatchError, if any input parameter
37590 is not compatible with the expected type for that parameter.
37591                 </p></description>
37592                 <description><p>
37593  with error type SecurityError, if the application does not have the privilege to call this method.
37594                 </p></description>
37595                 <description><p>
37596  with error type NotSupportedError, if this feature is not supported.
37597                 </p></description>
37598             </descriptive>
37599           </RaiseException>
37600         </Raises>
37601       </Operation>
37602       <Operation name="updateMessages" id="::Messaging::MessageStorage::updateMessages">
37603         <webidl>    void updateMessages(<ref>Message</ref>[] messages,
37604                         optional <ref>SuccessCallback</ref>? successCallback,
37605                         optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
37606         <descriptive>
37607             <brief>
37608  Updates messages in <em>MessageStorage</em>.
37609             </brief>
37610            <description>
37611             <p>
37612 The backend must check whether the required updates can be applied and invoke the errorCallback method, if they cannot be checked.
37613 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.
37614             </p>
37615             <p>
37616 The errorCallback is launched with these error types:
37617             </p>
37618             <ul>
37619               <li>
37620  InvalidValuesError - If any of the input parameters contains an invalid value.              </li>
37621               <li>
37622  UnknownError - If any other error occurs.              </li>
37623             </ul>
37624            </description>
37625             <version>
37626  1.0
37627             </version>
37628             <privilegelevel>
37629  public
37630             </privilegelevel>
37631             <privilege>
37632  http://tizen.org/privilege/messaging.write
37633             </privilege>
37634             <Code> var service; // Assume messaging service is initialized
37635  var messageStorage = service.messageStorage; 
37636
37637  // Define success callback
37638  function successCallback() {
37639    console.log(&quot;Messages were updated&quot;);
37640  }
37641
37642  // Define error callback
37643  function errorCallback(error) {
37644    console.log(&quot;Cannot update messages &quot; + error.message);
37645  }
37646
37647  function messageArrayCB(messages) {
37648    if (messages.length > 0) {
37649      messages[0].isRead = true;
37650      messageStorage.updateMessages([messages[0]], successCallback, errorCallback);
37651    } else {
37652      console.log(&quot;No messages found&quot;);
37653    }
37654  }
37655
37656  var filter = new tizen.AttributeFilter('isRead', 'EXACTLY', false);
37657  messageStorage.findMessages(filter, messageArrayCB);
37658
37659  </Code>
37660         </descriptive>
37661         <Type type="void"/>
37662         <ArgumentList>
37663           <Argument name="messages">
37664             <descriptive>
37665                 <description><p>
37666  An array to update
37667                 </p></description>
37668             </descriptive>
37669             <Type type="array">
37670               <Type name="Message"/>
37671             </Type>
37672           </Argument>
37673           <Argument optional="optional" name="successCallback">
37674             <descriptive>
37675                 <description><p>
37676  The method called when messages are successfully updated.
37677                 </p></description>
37678             </descriptive>
37679             <Type name="SuccessCallback" nullable="nullable"/>
37680           </Argument>
37681           <Argument optional="optional" name="errorCallback">
37682             <descriptive>
37683                 <description><p>
37684  The method called when an error occurs.
37685                 </p></description>
37686             </descriptive>
37687             <Type name="ErrorCallback" nullable="nullable"/>
37688           </Argument>
37689         </ArgumentList>
37690         <Raises>
37691           <RaiseException name="WebAPIException">
37692             <descriptive>
37693                 <description><p>
37694  with error type TypeMismatchError, if any input parameter
37695 is not compatible with the expected type for that parameter.
37696                 </p></description>
37697                 <description><p>
37698  with error type SecurityError, if the application does not have the privilege to call this method.
37699                 </p></description>
37700                 <description><p>
37701  with error type NotSupportedError, if this feature is not supported.
37702                 </p></description>
37703             </descriptive>
37704           </RaiseException>
37705         </Raises>
37706       </Operation>
37707       <Operation name="findConversations" id="::Messaging::MessageStorage::findConversations">
37708         <webidl>    void findConversations(<ref>AbstractFilter</ref> filter,
37709                            <ref>MessageConversationArraySuccessCallback</ref> successCallback,
37710                            optional <ref>ErrorCallback</ref>? errorCallback,
37711                            optional <ref>SortMode</ref>? sort,
37712                            optional unsigned long? limit,
37713                            optional unsigned long? offset) raises(<ref>WebAPIException</ref>);</webidl>
37714         <descriptive>
37715             <brief>
37716  Finds conversations from <em>MessageStorage</em>.
37717             </brief>
37718            <description>
37719             <p>
37720 The errorCallback is launched with these error types:
37721             </p>
37722             <ul>
37723               <li>
37724  InvalidValuesError - If any of the input parameters contains an invalid value.              </li>
37725               <li>
37726  UnknownError - If any other error occurs.              </li>
37727             </ul>
37728            </description>
37729             <version>
37730  1.0
37731             </version>
37732             <privilegelevel>
37733  public
37734             </privilegelevel>
37735             <privilege>
37736  http://tizen.org/privilege/messaging.read
37737             </privilege>
37738             <Code> var service; // Assume messaging service is initialized
37739  var messageStorage = service.messageStorage; 
37740  function conversationsArrayCB(conversations) {
37741    console.log(conversations.length + &quot; conversation(s) found!&quot;);
37742    for (var i = 0; i &#60; conversations.length; i++) {
37743      console.log(i + &quot;. conversation preview &quot; + conversations[i].preview);
37744    }
37745  }
37746
37747  // Define error callback.
37748  function errorCallback(error) {
37749    console.log(&quot;Cannot query conversations&quot; + error.message);
37750  }
37751
37752  var filter = new tizen.AttributeFilter('from', 'CONTAINS', '2593');
37753  messageStorage.findConversations(filter, conversationsArrayCB, errorCallback);
37754  </Code>
37755         </descriptive>
37756         <Type type="void"/>
37757         <ArgumentList>
37758           <Argument name="filter">
37759             <descriptive>
37760                 <description><p>
37761  The criteria to be used when filtering.
37762                 </p></description>
37763             </descriptive>
37764             <Type name="AbstractFilter"/>
37765           </Argument>
37766           <Argument name="successCallback">
37767             <descriptive>
37768                 <description><p>
37769  The method called when the invocation ends successfully.
37770                 </p></description>
37771             </descriptive>
37772             <Type name="MessageConversationArraySuccessCallback"/>
37773           </Argument>
37774           <Argument optional="optional" name="errorCallback">
37775             <descriptive>
37776                 <description><p>
37777  The method called when an error occurs.
37778                 </p></description>
37779             </descriptive>
37780             <Type name="ErrorCallback" nullable="nullable"/>
37781           </Argument>
37782           <Argument optional="optional" name="sort">
37783             <descriptive>
37784                 <description><p>
37785  The sorting rules for the query.
37786                 </p></description>
37787             </descriptive>
37788             <Type name="SortMode" nullable="nullable"/>
37789           </Argument>
37790           <Argument optional="optional" name="limit">
37791             <descriptive>
37792                 <description><p>
37793  The maximum limit the query result is set to as specified by the parameter (It is the same meaning as SQL LIMIT).
37794 If set to <var>0</var>, there is no limit set.
37795                 </p></description>
37796             </descriptive>
37797             <Type type="unsigned long" nullable="nullable"/>
37798           </Argument>
37799           <Argument optional="optional" name="offset">
37800             <descriptive>
37801                 <description><p>
37802  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.
37803                 </p></description>
37804             </descriptive>
37805             <Type type="unsigned long" nullable="nullable"/>
37806           </Argument>
37807         </ArgumentList>
37808         <Raises>
37809           <RaiseException name="WebAPIException">
37810             <descriptive>
37811                 <description><p>
37812  with error type TypeMismatchError, if any input parameter
37813 is not compatible with the expected type for that parameter.
37814                 </p></description>
37815                 <description><p>
37816  with error type SecurityError, if the application does not have the privilege to call this method.
37817                 </p></description>
37818                 <description><p>
37819  with error type NotSupportedError, if this feature is not supported.
37820                 </p></description>
37821             </descriptive>
37822           </RaiseException>
37823         </Raises>
37824       </Operation>
37825       <Operation name="removeConversations" id="::Messaging::MessageStorage::removeConversations">
37826         <webidl>    void removeConversations(<ref>MessageConversation</ref>[] conversations,
37827                              optional <ref>SuccessCallback</ref>? successCallback,
37828                              optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
37829         <descriptive>
37830             <brief>
37831  Removes conversations from <em>MessageStorage</em>.
37832             </brief>
37833            <description>
37834             <p>
37835 The errorCallback is launched with these error types:
37836             </p>
37837             <ul>
37838               <li>
37839  InvalidValuesError - If any of the input parameters contains an invalid value.              </li>
37840               <li>
37841  UnknownError - If any other error occurs.              </li>
37842             </ul>
37843            </description>
37844             <version>
37845  1.0
37846             </version>
37847             <privilegelevel>
37848  public
37849             </privilegelevel>
37850             <privilege>
37851  http://tizen.org/privilege/messaging.write
37852             </privilege>
37853             <Code> var service; // Assume messaging service is initialized
37854  var messageStorage = service.messageStorage; 
37855  // Define success callback.
37856  function successCallback() {
37857    console.log(&quot;Conversations deleted&quot;);
37858  }
37859
37860  // Define error callback.
37861  function errorCallback(error) {
37862    console.log(&quot;Cannot delete conversations &quot; + error.message);
37863  }
37864
37865  function conversationsArrayCB(conversations) {
37866    if (conversations.length > 0) {
37867      messageStorage.removeConversations(conversations, successCallback,
37868                                                        errorCallback);
37869    } else {
37870      console.log(&quot;No conversations found&quot;);
37871    }
37872    console.log(&quot;Deleted &quot; + conversations.length + &quot; conversation(s)&quot;);
37873  }
37874
37875  // Define error callback.
37876  function queryErrorCB(error) {
37877    console.log(&quot;Cannot query conversations&quot; + error.message);
37878  }
37879
37880  var filter = new tizen.AttributeFilter('from', 'CONTAINS', '2593');
37881  messageStorage.findConversations(filter, conversationsArrayCB,
37882                                           queryErrorCB);
37883  </Code>
37884         </descriptive>
37885         <Type type="void"/>
37886         <ArgumentList>
37887           <Argument name="conversations">
37888             <descriptive>
37889                 <description><p>
37890  An array of conversations to delete.
37891                 </p></description>
37892             </descriptive>
37893             <Type type="array">
37894               <Type name="MessageConversation"/>
37895             </Type>
37896           </Argument>
37897           <Argument optional="optional" name="successCallback">
37898             <descriptive>
37899                 <description><p>
37900  The method called when conversations are successfully deleted.
37901                 </p></description>
37902             </descriptive>
37903             <Type name="SuccessCallback" nullable="nullable"/>
37904           </Argument>
37905           <Argument optional="optional" name="errorCallback">
37906             <descriptive>
37907                 <description><p>
37908  The method called when an error occurs.
37909                 </p></description>
37910             </descriptive>
37911             <Type name="ErrorCallback" nullable="nullable"/>
37912           </Argument>
37913         </ArgumentList>
37914         <Raises>
37915           <RaiseException name="WebAPIException">
37916             <descriptive>
37917                 <description><p>
37918  with error type TypeMismatchError, if any input parameter
37919 is not compatible with the expected type for that parameter.
37920                 </p></description>
37921                 <description><p>
37922  with error type SecurityError, if the application does not have the privilege to call this method.
37923                 </p></description>
37924                 <description><p>
37925  with error type NotSupportedError, if this feature is not supported.
37926                 </p></description>
37927             </descriptive>
37928           </RaiseException>
37929         </Raises>
37930       </Operation>
37931       <Operation name="findFolders" id="::Messaging::MessageStorage::findFolders">
37932         <webidl>    void findFolders(<ref>AbstractFilter</ref> filter,
37933                      <ref>MessageFolderArraySuccessCallback</ref> successCallback,
37934                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
37935         <descriptive>
37936             <brief>
37937  Queries folders from MessageStorage.
37938             </brief>
37939            <description>
37940             <p>
37941 The errorCallback is launched with these error types:
37942             </p>
37943             <ul>
37944               <li>
37945  InvalidValuesError: If any of the input parameters contains an invalid value.              </li>
37946               <li>
37947  UnknownError: In any other error case.               </li>
37948             </ul>
37949            </description>
37950             <version>
37951  1.0
37952             </version>
37953             <privilegelevel>
37954  public
37955             </privilegelevel>
37956             <privilege>
37957  http://tizen.org/privilege/messaging.read
37958             </privilege>
37959             <Code> var service; // Assume messaging service is initialized
37960  var messageStorage = service.messageStorage; 
37961  function folderArrayCB(folders) {
37962    console.log(folders.length + &quot; folders(s) found!&quot;);
37963    for (var i = 0; i &#60; folders.length; i++) {
37964      console.log(i + &quot;, folder: &quot; + folders[i].name);
37965    }
37966  }
37967  var filter = new tizen.AttributeFilter(&quot;serviceId&quot;, &quot;EXACTLY&quot;, service.id);
37968  messageStorage.findFolders(filter, folderArrayCB);
37969  </Code>
37970         </descriptive>
37971         <Type type="void"/>
37972         <ArgumentList>
37973           <Argument name="filter">
37974             <descriptive>
37975                 <description><p>
37976  The criteria used when filtering.
37977                 </p></description>
37978             </descriptive>
37979             <Type name="AbstractFilter"/>
37980           </Argument>
37981           <Argument name="successCallback">
37982             <descriptive>
37983                 <description><p>
37984  The method called when the invocation ends successfully.
37985                 </p></description>
37986             </descriptive>
37987             <Type name="MessageFolderArraySuccessCallback"/>
37988           </Argument>
37989           <Argument optional="optional" name="errorCallback">
37990             <descriptive>
37991                 <description><p>
37992  The method called when an error occurs.
37993                 </p></description>
37994             </descriptive>
37995             <Type name="ErrorCallback" nullable="nullable"/>
37996           </Argument>
37997         </ArgumentList>
37998         <Raises>
37999           <RaiseException name="WebAPIException">
38000             <descriptive>
38001                 <description><p>
38002  with error type TypeMismatchError, if any input parameter
38003 is not compatible with the expected type for that parameter.
38004                 </p></description>
38005                 <description><p>
38006  with error type SecurityError, if the application does not have the privilege to call this method.
38007                 </p></description>
38008                 <description><p>
38009  with error type NotSupportedError, if this feature is not supported.
38010                 </p></description>
38011             </descriptive>
38012           </RaiseException>
38013         </Raises>
38014       </Operation>
38015       <Operation name="addMessagesChangeListener" id="::Messaging::MessageStorage::addMessagesChangeListener">
38016         <webidl>    long addMessagesChangeListener(<ref>MessagesChangeCallback</ref> messagesChangeCallback,
38017                                    optional <ref>AbstractFilter</ref>? filter) raises(<ref>WebAPIException</ref>);</webidl>
38018         <descriptive>
38019             <brief>
38020  Adds a listener to subscribe to notification for MessageStorage changes.
38021             </brief>
38022            <description>
38023             <p>
38024 The errorCallback is launched with these error types:
38025             </p>
38026             <ul>
38027               <li>
38028  InvalidValuesError - If any of the input parameters contains an invalid value.              </li>
38029               <li>
38030  UnknownError - If any other error occurs.               </li>
38031             </ul>
38032            </description>
38033             <version>
38034  1.0
38035             </version>
38036             <privilegelevel>
38037  public
38038             </privilegelevel>
38039             <privilege>
38040  http://tizen.org/privilege/messaging.read
38041             </privilege>
38042             <Code> var service; // Assume messaging service is initialized
38043  var messageStorage = service.messageStorage; 
38044  var messageChangeCallback = {
38045        messagesupdated: function(messages) {
38046          console.log(messages.length + &quot; message(s) updated&quot;);},
38047        messagesadded: function(messages) {
38048          console.log(messages.length + &quot; message(s) added&quot;);},
38049        messagesremoved: function(messages) {
38050          console.log(messages.length + &quot; message(s) removed&quot;);}
38051  };
38052
38053  messageStorage.addMessagesChangeListener(messageChangeCallback);
38054  </Code>
38055         </descriptive>
38056         <Type type="long">
38057           <descriptive>
38058               <description><p>
38059  long The subscription identifier.
38060               </p></description>
38061           </descriptive>
38062         </Type>
38063         <ArgumentList>
38064           <Argument name="messagesChangeCallback">
38065             <descriptive>
38066                 <description><p>
38067  Callback that is called when the MessageStorage is changed.
38068                 </p></description>
38069             </descriptive>
38070             <Type name="MessagesChangeCallback"/>
38071           </Argument>
38072           <Argument optional="optional" name="filter">
38073             <descriptive>
38074                 <description><p>
38075  The criteria to be used when filtering.
38076                 </p></description>
38077             </descriptive>
38078             <Type name="AbstractFilter" nullable="nullable"/>
38079           </Argument>
38080         </ArgumentList>
38081         <Raises>
38082           <RaiseException name="WebAPIException">
38083             <descriptive>
38084                 <description><p>
38085  with error type TypeMismatchError, if any input parameter
38086 is not compatible with the expected type for that parameter.
38087                 </p></description>
38088                 <description><p>
38089  with error type SecurityError, if the application does not have the privilege to call this method.
38090                 </p></description>
38091                 <description><p>
38092  with error type NotSupportedError, if this feature is not supported.
38093                 </p></description>
38094             </descriptive>
38095           </RaiseException>
38096         </Raises>
38097       </Operation>
38098       <Operation name="addConversationsChangeListener" id="::Messaging::MessageStorage::addConversationsChangeListener">
38099         <webidl>    long addConversationsChangeListener(<ref>MessageConversationsChangeCallback</ref> conversationsChangeCallback,
38100                                         optional <ref>AbstractFilter</ref>? filter) raises(<ref>WebAPIException</ref>);</webidl>
38101         <descriptive>
38102             <brief>
38103  Adds a listener to subscribe to notifications for MessageConversation changes.
38104             </brief>
38105            <description>
38106             <p>
38107 The errorCallback is launched with these error types:
38108             </p>
38109             <ul>
38110               <li>
38111  InvalidValuesError - If any of the input parameters contains an invalid value.              </li>
38112               <li>
38113  UnknownError - If any other error occurs.              </li>
38114             </ul>
38115            </description>
38116             <version>
38117  1.0
38118             </version>
38119             <privilegelevel>
38120  public
38121             </privilegelevel>
38122             <privilege>
38123  http://tizen.org/privilege/messaging.read
38124             </privilege>
38125             <Code> var service; // Assume messaging service is initialized
38126  var messageStorage = service.messageStorage; 
38127  var conversationChangeCB = {
38128        conversationsupdated: function(conversations) {
38129          console.log(conversations.length + &quot; conversations(s) updated&quot;);},
38130        conversationsadded: function(conversations) {
38131          console.log(conversations.length + &quot; conversations(s) added&quot;);},
38132        conversationsremoved: function(conversations) {
38133          console.log(conversations.length + &quot; conversations(s) removed&quot;);}
38134  };
38135
38136  messageStorage.addConversationsChangeListener(conversationChangeCB);
38137  </Code>
38138         </descriptive>
38139         <Type type="long">
38140           <descriptive>
38141               <description><p>
38142  long The subscription identifier.
38143               </p></description>
38144           </descriptive>
38145         </Type>
38146         <ArgumentList>
38147           <Argument name="conversationsChangeCallback">
38148             <descriptive>
38149                 <description><p>
38150  Callback that is called when the MessageStorage is changed.
38151                 </p></description>
38152             </descriptive>
38153             <Type name="MessageConversationsChangeCallback"/>
38154           </Argument>
38155           <Argument optional="optional" name="filter">
38156             <descriptive>
38157                 <description><p>
38158  The criteria to be used when filtering.
38159                 </p></description>
38160             </descriptive>
38161             <Type name="AbstractFilter" nullable="nullable"/>
38162           </Argument>
38163         </ArgumentList>
38164         <Raises>
38165           <RaiseException name="WebAPIException">
38166             <descriptive>
38167                 <description><p>
38168  with error type TypeMismatchError, if any input parameter
38169 is not compatible with the expected type for that parameter.
38170                 </p></description>
38171                 <description><p>
38172  with error type SecurityError, if the application does not have the privilege to call this method.
38173                 </p></description>
38174                 <description><p>
38175  with error type NotSupportedError, if this feature is not supported.
38176                 </p></description>
38177             </descriptive>
38178           </RaiseException>
38179         </Raises>
38180       </Operation>
38181       <Operation name="addFoldersChangeListener" id="::Messaging::MessageStorage::addFoldersChangeListener">
38182         <webidl>    long addFoldersChangeListener(<ref>MessageFoldersChangeCallback</ref> foldersChangeCallback,
38183                                   optional <ref>AbstractFilter</ref>? filter) raises(<ref>WebAPIException</ref>);</webidl>
38184         <descriptive>
38185             <brief>
38186  Adds a listener to subscribe to notifications for MessageFolder changes.
38187             </brief>
38188            <description>
38189             <p>
38190 The errorCallback is launched with these error types:
38191             </p>
38192             <ul>
38193               <li>
38194  InvalidValuesError - If any of the input parameters contains an invalid value.              </li>
38195               <li>
38196  UnknownError - If any other error occurs.              </li>
38197             </ul>
38198            </description>
38199             <version>
38200  1.0
38201             </version>
38202             <privilegelevel>
38203  public
38204             </privilegelevel>
38205             <privilege>
38206  http://tizen.org/privilege/messaging.read
38207             </privilege>
38208             <Code> var service; // Assume messaging service is initialized
38209  var messageStorage = service.messageStorage; 
38210  var folderChangeCB = {
38211        foldersupdated: function(folders) {
38212          console.log(folders.length + &quot; folders(s) updated&quot;);},
38213        foldersadded: function(folders) {
38214          console.log(folders.length + &quot; folders(s) added&quot;);},
38215        foldersremoved: function(folders) {
38216          console.log(folders.length + &quot; folders(s) removed&quot;);}
38217  };
38218
38219  messageStorage.addFoldersChangeListener(folderChangeCB);
38220  </Code>
38221         </descriptive>
38222         <Type type="long">
38223           <descriptive>
38224               <description><p>
38225  long The subscription identifier.
38226               </p></description>
38227           </descriptive>
38228         </Type>
38229         <ArgumentList>
38230           <Argument name="foldersChangeCallback">
38231             <descriptive>
38232                 <description><p>
38233  Callback that is called when the MessageStorage is changed.
38234                 </p></description>
38235             </descriptive>
38236             <Type name="MessageFoldersChangeCallback"/>
38237           </Argument>
38238           <Argument optional="optional" name="filter">
38239             <descriptive>
38240                 <description><p>
38241  The criteria to be used when filtering.
38242                 </p></description>
38243             </descriptive>
38244             <Type name="AbstractFilter" nullable="nullable"/>
38245           </Argument>
38246         </ArgumentList>
38247         <Raises>
38248           <RaiseException name="WebAPIException">
38249             <descriptive>
38250                 <description><p>
38251  with error type TypeMismatchError, if any input parameter
38252 is not compatible with the expected type for that parameter.
38253                 </p></description>
38254                 <description><p>
38255  with error type SecurityError, if the application does not have the privilege to call this method.
38256                 </p></description>
38257                 <description><p>
38258  with error type NotSupportedError, if this feature is not supported.
38259                 </p></description>
38260             </descriptive>
38261           </RaiseException>
38262         </Raises>
38263       </Operation>
38264       <Operation name="removeChangeListener" id="::Messaging::MessageStorage::removeChangeListener">
38265         <webidl>    void removeChangeListener(long watchId) raises(<ref>WebAPIException</ref>);</webidl>
38266         <descriptive>
38267             <brief>
38268  Removes a listener to unsubscribe from receiving message notifications.
38269             </brief>
38270            <description>
38271             <p>
38272 The errorCallback is launched with these error types:
38273             </p>
38274             <ul>
38275               <li>
38276  InvalidValuesError - If any of the input parameters contains an invalid value.              </li>
38277               <li>
38278  UnknownError - If any other error occurs.              </li>
38279             </ul>
38280             <p>
38281 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.
38282 If the <em>subscriptionId argument does not correspond to a valid subscription, the method will return without any further action.
38283 </em>            </p>
38284            </description>
38285             <version>
38286  1.0
38287             </version>
38288             <privilegelevel>
38289  public
38290             </privilegelevel>
38291             <privilege>
38292  http://tizen.org/privilege/messaging.read
38293             </privilege>
38294             <Code> var watchId;
38295  var service; // Assume messaging service is initialized
38296  var messageStorage = service.messageStorage; 
38297  var folderChangeCB = {
38298        foldersupdated: function(folders) {
38299          console.log(folders.length + &quot; folders(s) updated. Cancel watching.&quot;);
38300          messageStorage.removeChangeListener(watchId); },
38301        foldersadded: function(folders) {
38302          console.log(folders.length + &quot; folders(s) added. Cancel watching.&quot;);
38303          messageStorage.removeChangeListener(watchId); },
38304        foldersremoved: function(folders) {
38305          console.log(folders.length + &quot; folders(s) removed. Cancel watching.&quot;);
38306          messageStorage.removeChangeListener(watchId);}
38307  };
38308
38309  watchId = messageStorage.addFoldersChangeListener(folderChangeCB);
38310
38311  </Code>
38312         </descriptive>
38313         <Type type="void"/>
38314         <ArgumentList>
38315           <Argument name="watchId">
38316             <descriptive>
38317                 <description><p>
38318  An identifier of the subscription returned by addMessagesChangeListener, addConversationsChangeListener or
38319 addFoldersChangeListener methods.
38320                 </p></description>
38321             </descriptive>
38322             <Type type="long"/>
38323           </Argument>
38324         </ArgumentList>
38325         <Raises>
38326           <RaiseException name="WebAPIException">
38327             <descriptive>
38328                 <description><p>
38329  with error type TypeMismatchError, if any input parameter
38330 is not compatible with the expected type for that parameter.
38331                 </p></description>
38332                 <description><p>
38333  with error type SecurityError, if the application does not have the privilege to call this method.
38334                 </p></description>
38335                 <description><p>
38336  with error type NotSupportedError, if this feature is not supported.
38337                 </p></description>
38338             </descriptive>
38339           </RaiseException>
38340         </Raises>
38341       </Operation>
38342     </Interface>
38343     <Interface name="MessageArraySuccessCallback" id="::Messaging::MessageArraySuccessCallback">
38344       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface MessageArraySuccessCallback {
38345
38346     void onsuccess(<ref>Message</ref>[] messages);
38347   };</webidl>
38348       <descriptive>
38349           <brief>
38350  findMessages specific success callback.
38351           </brief>
38352          <description>
38353           <p>
38354 This callback interface specifies a success callback function,
38355 taking a list of messages that satisfy the filtering criteria as the input argument.
38356 It is used in the findMessages asynchronous operation.
38357           </p>
38358          </description>
38359           <version>
38360  1.0
38361           </version>
38362       </descriptive>
38363       <ExtendedAttributeList>
38364         <ExtendedAttribute name="Callback" value="FunctionOnly">
38365           <webidl>Callback</webidl>
38366         </ExtendedAttribute>
38367         <ExtendedAttribute name="NoInterfaceObject">
38368           <webidl> NoInterfaceObject</webidl>
38369         </ExtendedAttribute>
38370       </ExtendedAttributeList>
38371       <Operation name="onsuccess" id="::Messaging::MessageArraySuccessCallback::onsuccess">
38372         <webidl>    void onsuccess(<ref>Message</ref>[] messages);</webidl>
38373         <descriptive>
38374             <brief>
38375  Method invoked when an asynchronous query completes successfully.
38376             </brief>
38377             <version>
38378  1.0
38379             </version>
38380         </descriptive>
38381         <Type type="void"/>
38382         <ArgumentList>
38383           <Argument name="messages">
38384             <descriptive>
38385                 <description><p>
38386  Array of messages that satisfy the query.
38387                 </p></description>
38388             </descriptive>
38389             <Type type="array">
38390               <Type name="Message"/>
38391             </Type>
38392           </Argument>
38393         </ArgumentList>
38394       </Operation>
38395     </Interface>
38396     <Interface name="MessageConversationArraySuccessCallback" id="::Messaging::MessageConversationArraySuccessCallback">
38397       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface MessageConversationArraySuccessCallback {
38398
38399     void onsuccess(<ref>MessageConversation</ref>[] conversations);
38400   };</webidl>
38401       <descriptive>
38402           <brief>
38403  findConversations specific success callback.
38404           </brief>
38405          <description>
38406           <p>
38407 This callback interface specifies a success callback function,
38408 taking a list of conversations that satisfy the filtering criteria as the input argument.
38409 It is used in the findConversations asynchronous operation.
38410           </p>
38411          </description>
38412           <version>
38413  1.0
38414           </version>
38415       </descriptive>
38416       <ExtendedAttributeList>
38417         <ExtendedAttribute name="Callback" value="FunctionOnly">
38418           <webidl>Callback</webidl>
38419         </ExtendedAttribute>
38420         <ExtendedAttribute name="NoInterfaceObject">
38421           <webidl> NoInterfaceObject</webidl>
38422         </ExtendedAttribute>
38423       </ExtendedAttributeList>
38424       <Operation name="onsuccess" id="::Messaging::MessageConversationArraySuccessCallback::onsuccess">
38425         <webidl>    void onsuccess(<ref>MessageConversation</ref>[] conversations);</webidl>
38426         <descriptive>
38427             <brief>
38428  Method invoked when an asynchronous query completes successfully.
38429             </brief>
38430             <version>
38431  1.0
38432             </version>
38433         </descriptive>
38434         <Type type="void"/>
38435         <ArgumentList>
38436           <Argument name="conversations">
38437             <descriptive>
38438                 <description><p>
38439  Array of conversations that satisfy the query.
38440                 </p></description>
38441             </descriptive>
38442             <Type type="array">
38443               <Type name="MessageConversation"/>
38444             </Type>
38445           </Argument>
38446         </ArgumentList>
38447       </Operation>
38448     </Interface>
38449     <Interface name="MessageFolderArraySuccessCallback" id="::Messaging::MessageFolderArraySuccessCallback">
38450       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface MessageFolderArraySuccessCallback {
38451
38452     void onsuccess(<ref>MessageFolder</ref>[] folders);
38453   };</webidl>
38454       <descriptive>
38455           <brief>
38456  findFolders specific success callback.
38457           </brief>
38458          <description>
38459           <p>
38460 This callback interface specifies a success callback function,
38461 taking a list of folders that satisfy the filtering criteria as the input argument.
38462 It is used in the findFolders asynchronous operation.
38463           </p>
38464          </description>
38465           <version>
38466  1.0
38467           </version>
38468       </descriptive>
38469       <ExtendedAttributeList>
38470         <ExtendedAttribute name="Callback" value="FunctionOnly">
38471           <webidl>Callback</webidl>
38472         </ExtendedAttribute>
38473         <ExtendedAttribute name="NoInterfaceObject">
38474           <webidl> NoInterfaceObject</webidl>
38475         </ExtendedAttribute>
38476       </ExtendedAttributeList>
38477       <Operation name="onsuccess" id="::Messaging::MessageFolderArraySuccessCallback::onsuccess">
38478         <webidl>    void onsuccess(<ref>MessageFolder</ref>[] folders);</webidl>
38479         <descriptive>
38480             <brief>
38481  Method invoked when an asynchronous query completes successfully.
38482             </brief>
38483             <version>
38484  1.0
38485             </version>
38486         </descriptive>
38487         <Type type="void"/>
38488         <ArgumentList>
38489           <Argument name="folders">
38490             <descriptive>
38491                 <description><p>
38492  Array of folders that satisfy the query.
38493                 </p></description>
38494             </descriptive>
38495             <Type type="array">
38496               <Type name="MessageFolder"/>
38497             </Type>
38498           </Argument>
38499         </ArgumentList>
38500       </Operation>
38501     </Interface>
38502     <Interface name="MessagesChangeCallback" id="::Messaging::MessagesChangeCallback">
38503       <webidl>  [Callback, NoInterfaceObject] interface MessagesChangeCallback {
38504
38505     void messagesadded(<ref>Message</ref>[] addedMessages);
38506
38507     void messagesupdated(<ref>Message</ref>[] updatedMessages);
38508
38509     void messagesremoved(<ref>Message</ref>[] removedMessages);
38510   };</webidl>
38511       <descriptive>
38512           <brief>
38513  watchMessagesChanges callback.
38514           </brief>
38515          <description>
38516           <p>
38517 This callback interface specifies a callback as a set of functions that will be
38518 invoked when messages from MessageStorage change. Each function takes a list of messages as the input argument.
38519           </p>
38520          </description>
38521           <version>
38522  1.0
38523           </version>
38524       </descriptive>
38525       <ExtendedAttributeList>
38526         <ExtendedAttribute name="Callback">
38527           <webidl>Callback</webidl>
38528         </ExtendedAttribute>
38529         <ExtendedAttribute name="NoInterfaceObject">
38530           <webidl> NoInterfaceObject</webidl>
38531         </ExtendedAttribute>
38532       </ExtendedAttributeList>
38533       <Operation name="messagesadded" id="::Messaging::MessagesChangeCallback::messagesadded">
38534         <webidl>    void messagesadded(<ref>Message</ref>[] addedMessages);</webidl>
38535         <descriptive>
38536             <brief>
38537  Method invoked when messages are added to the MessageStorage.
38538             </brief>
38539             <version>
38540  1.0
38541             </version>
38542         </descriptive>
38543         <Type type="void"/>
38544         <ArgumentList>
38545           <Argument name="addedMessages">
38546             <descriptive>
38547                 <description><p>
38548  Array of added messages.
38549                 </p></description>
38550             </descriptive>
38551             <Type type="array">
38552               <Type name="Message"/>
38553             </Type>
38554           </Argument>
38555         </ArgumentList>
38556       </Operation>
38557       <Operation name="messagesupdated" id="::Messaging::MessagesChangeCallback::messagesupdated">
38558         <webidl>    void messagesupdated(<ref>Message</ref>[] updatedMessages);</webidl>
38559         <descriptive>
38560             <brief>
38561  Method invoked when messages are updated in MessageStorage.
38562             </brief>
38563             <version>
38564  1.0
38565             </version>
38566         </descriptive>
38567         <Type type="void"/>
38568         <ArgumentList>
38569           <Argument name="updatedMessages">
38570             <descriptive>
38571                 <description><p>
38572  Array of updated messages.
38573                 </p></description>
38574             </descriptive>
38575             <Type type="array">
38576               <Type name="Message"/>
38577             </Type>
38578           </Argument>
38579         </ArgumentList>
38580       </Operation>
38581       <Operation name="messagesremoved" id="::Messaging::MessagesChangeCallback::messagesremoved">
38582         <webidl>    void messagesremoved(<ref>Message</ref>[] removedMessages);</webidl>
38583         <descriptive>
38584             <brief>
38585  Method invoked when messages are removed from MessageStorage.
38586             </brief>
38587             <version>
38588  1.0
38589             </version>
38590         </descriptive>
38591         <Type type="void"/>
38592         <ArgumentList>
38593           <Argument name="removedMessages">
38594             <descriptive>
38595                 <description><p>
38596  Array of removed messages. It contains only MessageId attribute.
38597                 </p></description>
38598             </descriptive>
38599             <Type type="array">
38600               <Type name="Message"/>
38601             </Type>
38602           </Argument>
38603         </ArgumentList>
38604       </Operation>
38605     </Interface>
38606     <Interface name="MessageConversationsChangeCallback" id="::Messaging::MessageConversationsChangeCallback">
38607       <webidl>  [Callback, NoInterfaceObject] interface MessageConversationsChangeCallback {
38608
38609     void conversationsadded(<ref>MessageConversation</ref>[] addedConversations);
38610
38611     void conversationsupdated(<ref>MessageConversation</ref>[] updatedConversations);
38612
38613     void conversationsremoved(<ref>MessageConversation</ref>[] removedConversations);
38614   };</webidl>
38615       <descriptive>
38616           <brief>
38617  watchConversationsChanges callback.
38618           </brief>
38619          <description>
38620           <p>
38621 This callback interface specifies a callback as a set of functions that will be
38622 invoked when conversations from MessageStorage change. Each function takes a list of conversations as the input argument.
38623           </p>
38624          </description>
38625           <version>
38626  1.0
38627           </version>
38628       </descriptive>
38629       <ExtendedAttributeList>
38630         <ExtendedAttribute name="Callback">
38631           <webidl>Callback</webidl>
38632         </ExtendedAttribute>
38633         <ExtendedAttribute name="NoInterfaceObject">
38634           <webidl> NoInterfaceObject</webidl>
38635         </ExtendedAttribute>
38636       </ExtendedAttributeList>
38637       <Operation name="conversationsadded" id="::Messaging::MessageConversationsChangeCallback::conversationsadded">
38638         <webidl>    void conversationsadded(<ref>MessageConversation</ref>[] addedConversations);</webidl>
38639         <descriptive>
38640             <brief>
38641  Method invoked when conversations are added to MessageStorage.
38642             </brief>
38643             <version>
38644  1.0
38645             </version>
38646         </descriptive>
38647         <Type type="void"/>
38648         <ArgumentList>
38649           <Argument name="addedConversations">
38650             <descriptive>
38651                 <description><p>
38652  Array of added conversations.
38653                 </p></description>
38654             </descriptive>
38655             <Type type="array">
38656               <Type name="MessageConversation"/>
38657             </Type>
38658           </Argument>
38659         </ArgumentList>
38660       </Operation>
38661       <Operation name="conversationsupdated" id="::Messaging::MessageConversationsChangeCallback::conversationsupdated">
38662         <webidl>    void conversationsupdated(<ref>MessageConversation</ref>[] updatedConversations);</webidl>
38663         <descriptive>
38664             <brief>
38665  Method invoked when conversations are updated in MessageStorage.
38666             </brief>
38667             <version>
38668  1.0
38669             </version>
38670         </descriptive>
38671         <Type type="void"/>
38672         <ArgumentList>
38673           <Argument name="updatedConversations">
38674             <descriptive>
38675                 <description><p>
38676  Array of updated conversations.
38677                 </p></description>
38678             </descriptive>
38679             <Type type="array">
38680               <Type name="MessageConversation"/>
38681             </Type>
38682           </Argument>
38683         </ArgumentList>
38684       </Operation>
38685       <Operation name="conversationsremoved" id="::Messaging::MessageConversationsChangeCallback::conversationsremoved">
38686         <webidl>    void conversationsremoved(<ref>MessageConversation</ref>[] removedConversations);</webidl>
38687         <descriptive>
38688             <brief>
38689  Method invoked when conversations are removed from MessageStorage.
38690             </brief>
38691             <version>
38692  1.0
38693             </version>
38694         </descriptive>
38695         <Type type="void"/>
38696         <ArgumentList>
38697           <Argument name="removedConversations">
38698             <descriptive>
38699                 <description><p>
38700  Array of removed conversations. It contains only MessageConvId attribute.
38701                 </p></description>
38702             </descriptive>
38703             <Type type="array">
38704               <Type name="MessageConversation"/>
38705             </Type>
38706           </Argument>
38707         </ArgumentList>
38708       </Operation>
38709     </Interface>
38710     <Interface name="MessageFoldersChangeCallback" id="::Messaging::MessageFoldersChangeCallback">
38711       <webidl>  [Callback, NoInterfaceObject] interface MessageFoldersChangeCallback {
38712  
38713     void foldersadded(<ref>MessageFolder</ref>[] addedFolders);
38714
38715     void foldersupdated(<ref>MessageFolder</ref>[] updatedFolders);
38716
38717     void foldersremoved(<ref>MessageFolder</ref>[] removedFolders);
38718   };</webidl>
38719       <descriptive>
38720           <brief>
38721  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.
38722           </brief>
38723           <version>
38724  1.0
38725           </version>
38726       </descriptive>
38727       <ExtendedAttributeList>
38728         <ExtendedAttribute name="Callback">
38729           <webidl>Callback</webidl>
38730         </ExtendedAttribute>
38731         <ExtendedAttribute name="NoInterfaceObject">
38732           <webidl> NoInterfaceObject</webidl>
38733         </ExtendedAttribute>
38734       </ExtendedAttributeList>
38735       <Operation name="foldersadded" id="::Messaging::MessageFoldersChangeCallback::foldersadded">
38736         <webidl>    void foldersadded(<ref>MessageFolder</ref>[] addedFolders);</webidl>
38737         <descriptive>
38738             <brief>
38739  Called when folders are added to <em>MessageStorage</em>.
38740             </brief>
38741             <version>
38742  1.0
38743             </version>
38744         </descriptive>
38745         <Type type="void"/>
38746         <ArgumentList>
38747           <Argument name="addedFolders">
38748             <descriptive>
38749                 <description><p>
38750  An array of added folders.
38751                 </p></description>
38752             </descriptive>
38753             <Type type="array">
38754               <Type name="MessageFolder"/>
38755             </Type>
38756           </Argument>
38757         </ArgumentList>
38758       </Operation>
38759       <Operation name="foldersupdated" id="::Messaging::MessageFoldersChangeCallback::foldersupdated">
38760         <webidl>    void foldersupdated(<ref>MessageFolder</ref>[] updatedFolders);</webidl>
38761         <descriptive>
38762             <brief>
38763  Called when folders are updated in <em>MessageStorage</em>.
38764             </brief>
38765             <version>
38766  1.0
38767             </version>
38768         </descriptive>
38769         <Type type="void"/>
38770         <ArgumentList>
38771           <Argument name="updatedFolders">
38772             <descriptive>
38773                 <description><p>
38774  An array of updated folders.
38775                 </p></description>
38776             </descriptive>
38777             <Type type="array">
38778               <Type name="MessageFolder"/>
38779             </Type>
38780           </Argument>
38781         </ArgumentList>
38782       </Operation>
38783       <Operation name="foldersremoved" id="::Messaging::MessageFoldersChangeCallback::foldersremoved">
38784         <webidl>    void foldersremoved(<ref>MessageFolder</ref>[] removedFolders);</webidl>
38785         <descriptive>
38786             <brief>
38787  Called when folders are removed from <em>MessageStorage</em>.
38788             </brief>
38789             <version>
38790  1.0
38791             </version>
38792         </descriptive>
38793         <Type type="void"/>
38794         <ArgumentList>
38795           <Argument name="removedFolders">
38796             <descriptive>
38797                 <description><p>
38798  Array of removed folders. It contains only MessageFolderId attribute.
38799                 </p></description>
38800             </descriptive>
38801             <Type type="array">
38802               <Type name="MessageFolder"/>
38803             </Type>
38804           </Argument>
38805         </ArgumentList>
38806       </Operation>
38807     </Interface>
38808     <Interface name="MessageConversation" id="::Messaging::MessageConversation">
38809       <webidl>  [NoInterfaceObject] interface MessageConversation {
38810
38811     readonly attribute <ref>MessageConvId</ref> id;
38812
38813     readonly attribute <ref>MessageServiceTag</ref> type;
38814
38815     readonly attribute Date timestamp;
38816      
38817     readonly attribute unsigned long messageCount;
38818
38819     readonly attribute unsigned long unreadMessages;
38820
38821     readonly attribute DOMString preview;
38822
38823     readonly attribute DOMString subject;
38824
38825     readonly attribute boolean isRead;
38826
38827     readonly attribute DOMString from;
38828
38829     readonly attribute DOMString[] to;
38830
38831     readonly attribute DOMString[] cc;
38832
38833     readonly attribute DOMString[] bcc;
38834
38835     readonly attribute <ref>MessageId</ref> lastMessageId;
38836   };</webidl>
38837       <descriptive>
38838           <brief>
38839  This interface defines the message conversation (also known as the thread of messages).
38840           </brief>
38841          <description>
38842           <p>
38843 This interface allows a web application to get the set of properties linked to a conversation.
38844 This interface provides only read-only attributes.
38845           </p>
38846          </description>
38847           <version>
38848  1.0
38849           </version>
38850       </descriptive>
38851       <ExtendedAttributeList>
38852         <ExtendedAttribute name="NoInterfaceObject">
38853           <webidl>NoInterfaceObject</webidl>
38854         </ExtendedAttribute>
38855       </ExtendedAttributeList>
38856       <Attribute readonly="readonly" name="id" id="::Messaging::MessageConversation::id">
38857         <webidl>    readonly attribute <ref>MessageConvId</ref> id;</webidl>
38858         <descriptive>
38859             <brief>
38860  The conversation identifier.
38861             </brief>
38862            <description>
38863             <p>
38864 The ID is locally unique and persistent property, assigned by the device or the Web runtime (WRT).
38865             </p>
38866            </description>
38867             <version>
38868  1.0
38869             </version>
38870         </descriptive>
38871         <Type name="MessageConvId"/>
38872       </Attribute>
38873       <Attribute readonly="readonly" name="type" id="::Messaging::MessageConversation::type">
38874         <webidl>    readonly attribute <ref>MessageServiceTag</ref> type;</webidl>
38875         <descriptive>
38876             <brief>
38877  The type of a given conversation.
38878             </brief>
38879             <version>
38880  1.0
38881             </version>
38882         </descriptive>
38883         <Type name="MessageServiceTag"/>
38884       </Attribute>
38885       <Attribute readonly="readonly" name="timestamp" id="::Messaging::MessageConversation::timestamp">
38886         <webidl>    readonly attribute Date timestamp;</webidl>
38887         <descriptive>
38888             <brief>
38889  The timestamp of the latest message in a conversation.
38890             </brief>
38891            <description>
38892             <p>
38893 This property is set up by the device or the Web runtime environment.
38894             </p>
38895            </description>
38896             <version>
38897  1.0
38898             </version>
38899         </descriptive>
38900         <Type type="Date"/>
38901       </Attribute>
38902       <Attribute readonly="readonly" name="messageCount" id="::Messaging::MessageConversation::messageCount">
38903         <webidl>    readonly attribute unsigned long messageCount;</webidl>
38904         <descriptive>
38905             <brief>
38906  The count of messages in a conversation.
38907             </brief>
38908             <version>
38909  1.0
38910             </version>
38911         </descriptive>
38912         <Type type="unsigned long"/>
38913       </Attribute>
38914       <Attribute readonly="readonly" name="unreadMessages" id="::Messaging::MessageConversation::unreadMessages">
38915         <webidl>    readonly attribute unsigned long unreadMessages;</webidl>
38916         <descriptive>
38917             <brief>
38918  The count of unread messages in a conversation.
38919             </brief>
38920             <version>
38921  1.0
38922             </version>
38923         </descriptive>
38924         <Type type="unsigned long"/>
38925       </Attribute>
38926       <Attribute readonly="readonly" name="preview" id="::Messaging::MessageConversation::preview">
38927         <webidl>    readonly attribute DOMString preview;</webidl>
38928         <descriptive>
38929             <brief>
38930  A preview of the latest message in a conversation.
38931             </brief>
38932             <version>
38933  1.0
38934             </version>
38935         </descriptive>
38936         <Type type="DOMString"/>
38937       </Attribute>
38938       <Attribute readonly="readonly" name="subject" id="::Messaging::MessageConversation::subject">
38939         <webidl>    readonly attribute DOMString subject;</webidl>
38940         <descriptive>
38941             <brief>
38942  The subject of a conversation (applicable for group chats, MMS, email).
38943             </brief>
38944             <version>
38945  1.0
38946             </version>
38947         </descriptive>
38948         <Type type="DOMString"/>
38949       </Attribute>
38950       <Attribute readonly="readonly" name="isRead" id="::Messaging::MessageConversation::isRead">
38951         <webidl>    readonly attribute boolean isRead;</webidl>
38952         <descriptive>
38953             <brief>
38954  An attribute to indicate whether the latest message in a conversation has been read or not.
38955             </brief>
38956            <description>
38957             <p>
38958 This property is set to <var>true</var> if the message has been read, else it is set to <var>false</var>.
38959             </p>
38960            </description>
38961             <version>
38962  1.0
38963             </version>
38964         </descriptive>
38965         <Type type="boolean"/>
38966       </Attribute>
38967       <Attribute readonly="readonly" name="from" id="::Messaging::MessageConversation::from">
38968         <webidl>    readonly attribute DOMString from;</webidl>
38969         <descriptive>
38970             <brief>
38971  The source address (or source phone number) of the latest message in the conversation.
38972             </brief>
38973            <description>
38974             <p>
38975 This property is set up by the device or the Web runtime environment.
38976             </p>
38977            </description>
38978             <version>
38979  1.0
38980             </version>
38981         </descriptive>
38982         <Type type="DOMString"/>
38983       </Attribute>
38984       <Attribute readonly="readonly" name="to" id="::Messaging::MessageConversation::to">
38985         <webidl>    readonly attribute DOMString[] to;</webidl>
38986         <descriptive>
38987             <brief>
38988  The destination of the latest message in a conversation.
38989             </brief>
38990             <version>
38991  1.0
38992             </version>
38993         </descriptive>
38994         <Type type="array">
38995           <Type type="DOMString"/>
38996         </Type>
38997       </Attribute>
38998       <Attribute readonly="readonly" name="cc" id="::Messaging::MessageConversation::cc">
38999         <webidl>    readonly attribute DOMString[] cc;</webidl>
39000         <descriptive>
39001             <brief>
39002  The carbon copy (cc) address of the latest message in a conversation.
39003             </brief>
39004            <description>
39005             <p>
39006 This property is used only for email.
39007             </p>
39008            </description>
39009             <version>
39010  1.0
39011             </version>
39012         </descriptive>
39013         <Type type="array">
39014           <Type type="DOMString"/>
39015         </Type>
39016       </Attribute>
39017       <Attribute readonly="readonly" name="bcc" id="::Messaging::MessageConversation::bcc">
39018         <webidl>    readonly attribute DOMString[] bcc;</webidl>
39019         <descriptive>
39020             <brief>
39021  The blind carbon copy (bcc) address of the latest message in a conversation.
39022             </brief>
39023            <description>
39024             <p>
39025 This property is used only for email.
39026             </p>
39027            </description>
39028             <version>
39029  1.0
39030             </version>
39031         </descriptive>
39032         <Type type="array">
39033           <Type type="DOMString"/>
39034         </Type>
39035       </Attribute>
39036       <Attribute readonly="readonly" name="lastMessageId" id="::Messaging::MessageConversation::lastMessageId">
39037         <webidl>    readonly attribute <ref>MessageId</ref> lastMessageId;</webidl>
39038         <descriptive>
39039             <brief>
39040  The identifier of a latest message in a conversation.
39041             </brief>
39042            <description>
39043             <p>
39044 This property is set up by the device or the Web runtime environment.
39045             </p>
39046            </description>
39047             <version>
39048  1.0
39049             </version>
39050         </descriptive>
39051         <Type name="MessageId"/>
39052       </Attribute>
39053     </Interface>
39054     <Interface name="MessageFolder" id="::Messaging::MessageFolder">
39055       <webidl>  [NoInterfaceObject] interface MessageFolder {
39056
39057     readonly attribute <ref>MessageFolderId</ref> id;
39058
39059     readonly attribute <ref>MessageFolderId</ref> parentId;
39060
39061     readonly attribute DOMString serviceId;
39062
39063     readonly attribute <ref>MessageServiceTag</ref> contentType;
39064
39065     attribute DOMString name setraises(<ref>WebAPIException</ref>);
39066
39067     readonly attribute DOMString path;
39068
39069     readonly attribute DOMString type;
39070
39071     attribute boolean synchronizable setraises(<ref>WebAPIException</ref>);
39072   };</webidl>
39073       <descriptive>
39074           <brief>
39075  This interface defines the email folder.
39076           </brief>
39077          <description>
39078           <p>
39079 This interface allows a web application to get the set of properties that are linked to an email folder.
39080           </p>
39081           <p>
39082 The concept of folders is present in several email protocols, such as IMAP, Mail For Exchange.
39083           </p>
39084           <p>
39085 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.
39086           </p>
39087          </description>
39088           <version>
39089  1.0
39090           </version>
39091       </descriptive>
39092       <ExtendedAttributeList>
39093         <ExtendedAttribute name="NoInterfaceObject">
39094           <webidl>NoInterfaceObject</webidl>
39095         </ExtendedAttribute>
39096       </ExtendedAttributeList>
39097       <Attribute readonly="readonly" name="id" id="::Messaging::MessageFolder::id">
39098         <webidl>    readonly attribute <ref>MessageFolderId</ref> id;</webidl>
39099         <descriptive>
39100             <brief>
39101  The folder identifier.
39102 The ID is locally unique and persistent property, assigned by the device or the Web runtime (WRT).
39103             </brief>
39104             <version>
39105  1.0
39106             </version>
39107         </descriptive>
39108         <Type name="MessageFolderId"/>
39109       </Attribute>
39110       <Attribute readonly="readonly" name="parentId" id="::Messaging::MessageFolder::parentId">
39111         <webidl>    readonly attribute <ref>MessageFolderId</ref> parentId;</webidl>
39112         <descriptive>
39113             <brief>
39114  The identifier for the parent folder of  a specified folder.
39115             </brief>
39116            <description>
39117             <p>
39118 If this folder is a root folder, the parent folder ID is <var>null</var>.
39119             </p>
39120            </description>
39121             <version>
39122  1.0
39123             </version>
39124         </descriptive>
39125         <Type name="MessageFolderId"/>
39126       </Attribute>
39127       <Attribute readonly="readonly" name="serviceId" id="::Messaging::MessageFolder::serviceId">
39128         <webidl>    readonly attribute DOMString serviceId;</webidl>
39129         <descriptive>
39130             <brief>
39131  The identifier of the service to which a specified folder belongs.
39132             </brief>
39133             <version>
39134  1.0.
39135             </version>
39136         </descriptive>
39137         <Type type="DOMString"/>
39138       </Attribute>
39139       <Attribute readonly="readonly" name="contentType" id="::Messaging::MessageFolder::contentType">
39140         <webidl>    readonly attribute <ref>MessageServiceTag</ref> contentType;</webidl>
39141         <descriptive>
39142             <brief>
39143  The type of the messages contained within a folder.
39144             </brief>
39145             <version>
39146  1.0
39147             </version>
39148         </descriptive>
39149         <Type name="MessageServiceTag"/>
39150       </Attribute>
39151       <Attribute name="name" id="::Messaging::MessageFolder::name">
39152         <webidl>    attribute DOMString name setraises(<ref>WebAPIException</ref>);</webidl>
39153         <descriptive>
39154             <brief>
39155  The visible name of a folder.
39156             </brief>
39157            <description>
39158             <p>
39159 Can be modified. By default, it contains the folder name from the server.
39160             </p>
39161             <p>
39162 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.
39163             </p>
39164            </description>
39165             <version>
39166  1.0
39167             </version>
39168         </descriptive>
39169         <Type type="DOMString"/>
39170         <SetRaises>
39171           <RaiseException name="WebAPIException"/>
39172         </SetRaises>
39173       </Attribute>
39174       <Attribute readonly="readonly" name="path" id="::Messaging::MessageFolder::path">
39175         <webidl>    readonly attribute DOMString path;</webidl>
39176         <descriptive>
39177             <brief>
39178  The whole path of a remote folder on the server.
39179             </brief>
39180            <description>
39181             <p>
39182 If the current Messaging service does not support remote folders on the server,
39183 this attribute will be empty.
39184             </p>
39185            </description>
39186             <version>
39187  1.0
39188             </version>
39189         </descriptive>
39190         <Type type="DOMString"/>
39191       </Attribute>
39192       <Attribute readonly="readonly" name="type" id="::Messaging::MessageFolder::type">
39193         <webidl>    readonly attribute DOMString type;</webidl>
39194         <descriptive>
39195             <brief>
39196  The standard type of a folder.
39197             </brief>
39198            <description>
39199             <p>
39200 It can be one of the following values:
39201             </p>
39202             <ul>
39203               <li>
39204 INBOX              </li>
39205               <li>
39206 OUTBOX              </li>
39207               <li>
39208 DRAFTS              </li>
39209               <li>
39210 SENTBOX              </li>
39211             </ul>
39212             <p>
39213 If this folder is not a standard folder, an empty value must be returned.
39214             </p>
39215             <p>
39216 This property is unique for each type within one Messaging service.
39217             </p>
39218            </description>
39219             <version>
39220  1.0
39221             </version>
39222         </descriptive>
39223         <Type type="DOMString"/>
39224       </Attribute>
39225       <Attribute name="synchronizable" id="::Messaging::MessageFolder::synchronizable">
39226         <webidl>    attribute boolean synchronizable setraises(<ref>WebAPIException</ref>);</webidl>
39227         <descriptive>
39228             <brief>
39229  An attribute to show whether this folder should be synchronized or not.
39230             </brief>
39231            <description>
39232             <p>
39233 This attribute affects the behavior of the MessageService.sync() method.
39234             </p>
39235            </description>
39236             <version>
39237  1.0
39238             </version>
39239         </descriptive>
39240         <Type type="boolean"/>
39241         <SetRaises>
39242           <RaiseException name="WebAPIException"/>
39243         </SetRaises>
39244       </Attribute>
39245     </Interface>
39246   </Module>
39247   <Module name="NetworkBearerSelection" id="::NetworkBearerSelection">
39248     <webidl>module NetworkBearerSelection {
39249
39250   enum NetworkType { &quot;CELLULAR&quot;, &quot;UNKNOWN&quot; };
39251
39252   [NoInterfaceObject] interface NetworkBearerSelectionObject {
39253     readonly attribute <ref>NetworkBearerSelection</ref> networkbearerselection;
39254   };
39255   <ref>Tizen</ref> implements <ref>NetworkBearerSelectionObject</ref>;
39256
39257   [NoInterfaceObject] interface NetworkBearerSelection {
39258
39259     void requestRouteToHost(<ref>NetworkType</ref> networkType,
39260                             DOMString domainName,
39261                             <ref>NetworkSuccessCallback</ref> successCallback,
39262                             optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
39263
39264     void releaseRouteToHost(<ref>NetworkType</ref> networkType,
39265                             DOMString domainName,
39266                             <ref>SuccessCallback</ref> successCallback,
39267                             optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
39268   };
39269   
39270   [Callback, NoInterfaceObject] interface NetworkSuccessCallback {
39271     void onsuccess();
39272
39273     void ondisconnected();    
39274   };    
39275 };</webidl>
39276     <descriptive>
39277         <brief>
39278  This specification defines interfaces and methods providing Web applications to access the devices.
39279         </brief>
39280        <description>
39281         <p>
39282 This API provides interfaces and methods for users to set network bearer selection.
39283         </p>
39284        </description>
39285         <version>
39286  2.1
39287         </version>
39288         <def-api-feature identifier="http://tizen.org/feature/network.telephony">
39289           <descriptive>
39290            <description>
39291             <p>
39292  
39293 To guarantee this application running on a device with telephony feature, define below in the config file: 
39294             </p>
39295            </description>
39296           </descriptive>
39297         </def-api-feature>
39298     </descriptive>
39299     <Enum name="NetworkType" id="::NetworkBearerSelection::NetworkType">
39300       <webidl>  enum NetworkType { &quot;CELLULAR&quot;, &quot;UNKNOWN&quot; };</webidl>
39301       <descriptive>
39302           <brief>
39303  An enumerator that defines the type of a network.
39304           </brief>
39305           <version>
39306  2.1
39307           </version>
39308       </descriptive>
39309       <EnumValue stringvalue="CELLULAR">
39310         <webidl> &quot;CELLULAR</webidl>
39311       </EnumValue>
39312       <EnumValue stringvalue="UNKNOWN">
39313         <webidl> &quot;UNKNOWN</webidl>
39314       </EnumValue>
39315     </Enum>
39316     <Interface name="NetworkBearerSelectionObject" id="::NetworkBearerSelection::NetworkBearerSelectionObject">
39317       <webidl>  [NoInterfaceObject] interface NetworkBearerSelectionObject {
39318     readonly attribute <ref>NetworkBearerSelection</ref> networkbearerselection;
39319   };</webidl>
39320       <descriptive>
39321           <brief>
39322  Defines what is instantiated the Tizen object from the Tizen Platform.
39323           </brief>
39324          <description>
39325           <p>
39326 There is a <em>tizen.networkbearerselection </em>object that allows accessing the functionality of the Networkbearerselection API.
39327           </p>
39328          </description>
39329           <version>
39330  2.1
39331           </version>
39332       </descriptive>
39333       <ExtendedAttributeList>
39334         <ExtendedAttribute name="NoInterfaceObject">
39335           <webidl>NoInterfaceObject</webidl>
39336         </ExtendedAttribute>
39337       </ExtendedAttributeList>
39338       <Attribute readonly="readonly" name="networkbearerselection" id="::NetworkBearerSelection::NetworkBearerSelectionObject::networkbearerselection">
39339         <webidl>    readonly attribute <ref>NetworkBearerSelection</ref> networkbearerselection;</webidl>
39340         <Type name="NetworkBearerSelection"/>
39341       </Attribute>
39342     </Interface>
39343     <Implements name1="Tizen" name2="NetworkBearerSelectionObject">
39344       <webidl>  <ref>Tizen</ref> implements <ref>NetworkBearerSelectionObject</ref>;</webidl>
39345     </Implements>
39346     <Interface name="NetworkBearerSelection" id="::NetworkBearerSelection::NetworkBearerSelection">
39347       <webidl>  [NoInterfaceObject] interface NetworkBearerSelection {
39348
39349     void requestRouteToHost(<ref>NetworkType</ref> networkType,
39350                             DOMString domainName,
39351                             <ref>NetworkSuccessCallback</ref> successCallback,
39352                             optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
39353
39354     void releaseRouteToHost(<ref>NetworkType</ref> networkType,
39355                             DOMString domainName,
39356                             <ref>SuccessCallback</ref> successCallback,
39357                             optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
39358   };</webidl>
39359       <descriptive>
39360           <brief>
39361  This entry interface provides methods to query the network bearer selection.
39362           </brief>
39363          <description>
39364           <p>
39365 This API offers methods for network bearer selection.
39366           </p>
39367          </description>
39368           <version>
39369  2.1
39370           </version>
39371       </descriptive>
39372       <ExtendedAttributeList>
39373         <ExtendedAttribute name="NoInterfaceObject">
39374           <webidl>NoInterfaceObject</webidl>
39375         </ExtendedAttribute>
39376       </ExtendedAttributeList>
39377       <Operation name="requestRouteToHost" id="::NetworkBearerSelection::NetworkBearerSelection::requestRouteToHost">
39378         <webidl>    void requestRouteToHost(<ref>NetworkType</ref> networkType,
39379                             DOMString domainName,
39380                             <ref>NetworkSuccessCallback</ref> successCallback,
39381                             optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
39382         <descriptive>
39383             <brief>
39384  Requests a specific network connection.
39385             </brief>
39386            <description>
39387             <p>
39388 The function must asynchronously acquire success or fail.
39389             </p>
39390             <p>
39391 When called, it starts a request process defined with these set of steps:
39392             </p>
39393             <ul>
39394               <li>
39395 1. Open &quot;networkType&quot; network connection.              </li>
39396               <li>
39397 2. Resolve &quot;domainName&quot; to IP.              </li>
39398               <li>
39399 3. Change the routing path bound to domainName's IP to use the specific network type.              </li>
39400               <li>
39401 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>
39402             </ul>
39403            </description>
39404             <version>
39405  2.1
39406             </version>
39407             <Code> var statuscb = {
39408    onsuccess: function() { console.log(&quot;onsuccess func is called&quot;); },
39409    ondisconnected: function() { console.log(&quot;ondisconnected func is called&quot;); } 
39410  };
39411  function ecb(e) { console.log(&quot;error callback is called : &quot; + e.message + &quot; : &quot; + e.code); }
39412  tizen.networkbearerselection.requestRouteToHost(&quot;CELLULAR&quot;, &quot;www.tizen.org&quot;, statuscb, ecb);
39413          
39414 </Code>
39415             <privilegelevel>
39416  partner
39417             </privilegelevel>
39418             <privilege>
39419  http://tizen.org/privilege/networkbearerselection
39420             </privilege>
39421         </descriptive>
39422         <Type type="void"/>
39423         <ArgumentList>
39424           <Argument name="networkType">
39425             <descriptive>
39426                 <description><p>
39427  The network type.
39428                 </p></description>
39429             </descriptive>
39430             <Type name="NetworkType"/>
39431           </Argument>
39432           <Argument name="domainName">
39433             <descriptive>
39434                 <description><p>
39435  The domain name.
39436                 </p></description>
39437             </descriptive>
39438             <Type type="DOMString"/>
39439           </Argument>
39440           <Argument name="successCallback">
39441             <descriptive>
39442                 <description><p>
39443  To be invoked if data network connection is connected or not.
39444                 </p></description>
39445             </descriptive>
39446             <Type name="NetworkSuccessCallback"/>
39447           </Argument>
39448           <Argument optional="optional" name="errorCallback">
39449             <descriptive>
39450                 <description><p>
39451  To be invoked if the request is failed.
39452                 </p></description>
39453             </descriptive>
39454             <Type name="ErrorCallback" nullable="nullable"/>
39455           </Argument>
39456         </ArgumentList>
39457         <Raises>
39458           <RaiseException name="WebAPIException">
39459             <descriptive>
39460                 <description><p>
39461  with error type NotSupportedError, if this feature is not supported.
39462                 </p></description>
39463                 <description><p>
39464  with error type SecurityError, if the application does not have the privilege to call this method.
39465                 </p></description>
39466                 <description><p>
39467  with error type UnknownError, if any other error occurs.
39468                 </p></description>
39469             </descriptive>
39470           </RaiseException>
39471         </Raises>
39472       </Operation>
39473       <Operation name="releaseRouteToHost" id="::NetworkBearerSelection::NetworkBearerSelection::releaseRouteToHost">
39474         <webidl>    void releaseRouteToHost(<ref>NetworkType</ref> networkType,
39475                             DOMString domainName,
39476                             <ref>SuccessCallback</ref> successCallback,
39477                             optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
39478         <descriptive>
39479             <brief>
39480  Releases a specific network connection.
39481             </brief>
39482            <description>
39483             <p>
39484 The function must asynchronously acquire success or fail.
39485             </p>
39486             <p>
39487 When called, it closes a network connection.
39488             </p>
39489            </description>
39490             <version>
39491  2.1
39492             </version>
39493             <Code> function scb() { console.log(&quot;success callback is called&quot;); }
39494  function ecb(e) { console.log(&quot;error callback is called : &quot; + e.message + &quot; : &quot; + e.code); }
39495  var statuscb = {
39496    onsuccess: function() { 
39497      console.log(&quot;onsuccess func is called&quot;); 
39498      tizen.networkbearerselection.releaseRouteToHost(&quot;CELLULAR&quot;, &quot;www.google.com&quot;, scb, ecb);
39499    },
39500    ondisconnected: function() { console.log(&quot;ondisconnected func is called&quot;); } 
39501  };
39502  tizen.networkbearerselection.requestRouteToHost(&quot;CELLULAR&quot;, &quot;www.google.com&quot;, statuscb, ecb);
39503           
39504 </Code>
39505             <privilegelevel>
39506  partner
39507             </privilegelevel>
39508             <privilege>
39509  http://tizen.org/privilege/networkbearerselection
39510             </privilege>
39511         </descriptive>
39512         <Type type="void"/>
39513         <ArgumentList>
39514           <Argument name="networkType">
39515             <descriptive>
39516                 <description><p>
39517  The network type.
39518                 </p></description>
39519             </descriptive>
39520             <Type name="NetworkType"/>
39521           </Argument>
39522           <Argument name="domainName">
39523             <descriptive>
39524                 <description><p>
39525  The domain name.
39526                 </p></description>
39527             </descriptive>
39528             <Type type="DOMString"/>
39529           </Argument>
39530           <Argument name="successCallback">
39531             <descriptive>
39532                 <description><p>
39533  To be invoked if data network connection is released.
39534                 </p></description>
39535             </descriptive>
39536             <Type name="SuccessCallback"/>
39537           </Argument>
39538           <Argument optional="optional" name="errorCallback">
39539             <descriptive>
39540                 <description><p>
39541  To be invoked if the release is failed.
39542                 </p></description>
39543             </descriptive>
39544             <Type name="ErrorCallback" nullable="nullable"/>
39545           </Argument>
39546         </ArgumentList>
39547         <Raises>
39548           <RaiseException name="WebAPIException">
39549             <descriptive>
39550                 <description><p>
39551  with error type NotSupportedError, if this feature is not supported.
39552                 </p></description>
39553                 <description><p>
39554  with error type SecurityError, if the application does not have the privilege to call this method.
39555                 </p></description>
39556                 <description><p>
39557  with error type UnknownError, if any other error occurs.
39558                 </p></description>
39559             </descriptive>
39560           </RaiseException>
39561         </Raises>
39562       </Operation>
39563     </Interface>
39564     <Interface name="NetworkSuccessCallback" id="::NetworkBearerSelection::NetworkSuccessCallback">
39565       <webidl>  [Callback, NoInterfaceObject] interface NetworkSuccessCallback {
39566     void onsuccess();
39567
39568     void ondisconnected();    
39569   };</webidl>
39570       <descriptive>
39571           <brief>
39572  This interface provides a success callback specific to NetworkBearerSelection.
39573           </brief>
39574          <description>
39575           <p>
39576 It is used in asynchronous operations with requestRouteToHost().
39577           </p>
39578          </description>
39579           <version>
39580  2.1
39581           </version>
39582       </descriptive>
39583       <ExtendedAttributeList>
39584         <ExtendedAttribute name="Callback">
39585           <webidl>Callback</webidl>
39586         </ExtendedAttribute>
39587         <ExtendedAttribute name="NoInterfaceObject">
39588           <webidl> NoInterfaceObject</webidl>
39589         </ExtendedAttribute>
39590       </ExtendedAttributeList>
39591       <Operation name="onsuccess" id="::NetworkBearerSelection::NetworkSuccessCallback::onsuccess">
39592         <webidl>    void onsuccess();</webidl>
39593         <descriptive>
39594             <brief>
39595  Called when a network is connected successfully.
39596             </brief>
39597             <version>
39598  2.1
39599             </version>
39600         </descriptive>
39601         <Type type="void"/>
39602         <ArgumentList/>
39603       </Operation>
39604       <Operation name="ondisconnected" id="::NetworkBearerSelection::NetworkSuccessCallback::ondisconnected">
39605         <webidl>    void ondisconnected();</webidl>
39606         <descriptive>
39607             <brief>
39608  Called when a network is disconnected.
39609             </brief>
39610             <version>
39611  2.1
39612             </version>
39613         </descriptive>
39614         <Type type="void"/>
39615         <ArgumentList/>
39616       </Operation>
39617     </Interface>
39618   </Module>
39619   <Module name="NFC" id="::NFC">
39620     <webidl>module NFC {
39621   enum NDEFRecordTextEncoding { &quot;UTF8&quot;, &quot;UTF16&quot; };
39622
39623   enum NFCTagType { &quot;GENERIC_TARGET&quot;, &quot;ISO14443_A&quot;, &quot;ISO14443_4A&quot;, &quot;ISO14443_3A&quot;,
39624   &quot;MIFARE_MINI&quot;, &quot;MIFARE_1K&quot;, &quot;MIFARE_4K&quot;, &quot;MIFARE_ULTRA&quot;, &quot;MIFARE_DESFIRE&quot;,
39625   &quot;ISO14443_B&quot;, &quot;ISO14443_4B&quot;, &quot;ISO14443_BPRIME&quot;, &quot;FELICA&quot;, &quot;JEWEL&quot;, &quot;ISO15693&quot;,
39626   &quot;UNKNOWN_TARGET&quot; };
39627   
39628   [NoInterfaceObject] interface NFCManagerObject {
39629     readonly attribute <ref>NFCManager</ref> nfc;
39630   };
39631   <ref>Tizen</ref> implements <ref>NFCManagerObject</ref>;
39632
39633   [NoInterfaceObject] interface NFCManager {
39634     const short NFC_RECORD_TNF_EMPTY = 0;
39635     const short NFC_RECORD_TNF_WELL_KNOWN = 1;
39636     const short NFC_RECORD_TNF_MIME_MEDIA = 2;
39637     const short NFC_RECORD_TNF_URI = 3;
39638     const short NFC_RECORD_TNF_EXTERNAL_RTD = 4;
39639     const short NFC_RECORD_TNF_UNKNOWN = 5;
39640     const short NFC_RECORD_TNF_UNCHANGED = 6;
39641
39642     <ref>NFCAdapter</ref> getDefaultAdapter() raises(<ref>WebAPIException</ref>);
39643
39644     void setExclusiveMode(boolean mode) raises(<ref>WebAPIException</ref>);
39645   };
39646
39647
39648   [NoInterfaceObject] interface NFCAdapter {
39649     readonly attribute boolean powered ;
39650
39651
39652     void setPowered(boolean state,
39653                     optional <ref>SuccessCallback</ref>? successCallback,
39654                     optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
39655
39656
39657     void setTagListener(<ref>NFCTagDetectCallback</ref> detectCallback,
39658                         optional <ref>NFCTagType</ref>[]? tagFilter) raises(<ref>WebAPIException</ref>);
39659
39660     void setPeerListener(<ref>NFCPeerDetectCallback</ref> detectCallback) raises(<ref>WebAPIException</ref>);
39661
39662     void unsetTagListener() raises(<ref>WebAPIException</ref>);
39663
39664     void unsetPeerListener() raises(<ref>WebAPIException</ref>);
39665
39666     <ref>NDEFMessage</ref>? getCachedMessage() raises(<ref>WebAPIException</ref>);
39667
39668   };
39669
39670
39671   [NoInterfaceObject] interface NFCTag {
39672     readonly attribute <ref>NFCTagType</ref> type;
39673
39674     readonly attribute boolean isSupportedNDEF;
39675
39676     readonly attribute long ndefSize;
39677
39678     readonly attribute object properties;
39679
39680     readonly attribute boolean isConnected;
39681
39682
39683      void readNDEF(<ref>NDEFMessageReadCallback</ref> readCallback,
39684                   optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
39685
39686     void writeNDEF(<ref>NDEFMessage</ref> ndefMessage,
39687                    optional <ref>SuccessCallback</ref>? successCallback,
39688                    optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
39689
39690     void transceive(byte[] data,
39691                     <ref>ByteArraySuccessCallback</ref> dataCallback,
39692                     optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
39693   };
39694
39695
39696   [NoInterfaceObject] interface NFCPeer {
39697     readonly attribute boolean isConnected;
39698     
39699     void setReceiveNDEFListener(<ref>NDEFMessageReadCallback</ref> successCallback) raises(<ref>WebAPIException</ref>);
39700
39701     void unsetReceiveNDEFListener() raises(<ref>WebAPIException</ref>);
39702
39703     void sendNDEF(<ref>NDEFMessage</ref> ndefMessage,
39704                   optional <ref>SuccessCallback</ref>? successCallback,
39705                   optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
39706
39707   };
39708
39709   [Constructor(),
39710    Constructor(<ref>NDEFRecord</ref>[] ndefRecords),
39711    Constructor(byte[] rawData)]
39712   interface NDEFMessage {
39713     readonly attribute long recordCount;
39714     
39715     attribute <ref>NDEFRecord</ref>[] records;
39716
39717     byte[] toByte() raises(<ref>WebAPIException</ref>);
39718   };
39719
39720   [Constructor(short tnf, byte[] type, byte[] payload, optional byte[]? id),
39721    Constructor(byte[] raw_data)]
39722   interface NDEFRecord {
39723     readonly attribute short tnf;
39724
39725     readonly attribute byte[] type;
39726
39727     readonly attribute byte[] id;
39728     
39729     readonly attribute byte[] payload;
39730   };
39731
39732   [Constructor(DOMString text, DOMString languageCode, optional DOMString? encoding)]
39733   interface NDEFRecordText : <ref>NDEFRecord</ref> {
39734     readonly attribute DOMString text;
39735     
39736     readonly attribute DOMString languageCode;
39737     
39738     readonly attribute <ref>NDEFRecordTextEncoding</ref> encoding;
39739   };
39740
39741   [Constructor(DOMString uri)]
39742   interface NDEFRecordURI : <ref>NDEFRecord</ref> {
39743     readonly attribute DOMString uri;
39744   };
39745   [Constructor(DOMString mimeType, byte[] data)]
39746   interface NDEFRecordMedia : <ref>NDEFRecord</ref> {
39747     readonly attribute DOMString mimeType;
39748   };
39749
39750  
39751   [Callback, NoInterfaceObject] interface NFCTagDetectCallback {
39752     void onattach(<ref>NFCTag</ref> nfcTag);
39753     void ondetach();
39754   };
39755
39756   [Callback, NoInterfaceObject] interface NFCPeerDetectCallback {
39757     void onattach(<ref>NFCPeer</ref> nfcPeer);
39758     void ondetach();
39759   };
39760
39761   [Callback=FunctionOnly, NoInterfaceObject] interface NDEFMessageReadCallback {
39762     void onsuccess(<ref>NDEFMessage</ref> ndefMessage);
39763   };
39764
39765   [Callback=FunctionOnly, NoInterfaceObject] interface ByteArraySuccessCallback {
39766     void onsuccess(byte[] data);
39767   };
39768
39769 };</webidl>
39770     <descriptive>
39771         <brief>
39772   This interface specifies a protocol for simple wireless interconnection of 
39773 closely coupled devices operating at 13.56 MHz using Near Field Communication (NFC),
39774 which is an international standard (ISO/IEC 18092). 
39775 To know more, see <a href="http://www.nfc-forum.org/specs/spec_list/">Technical Specifications</a>.
39776         </brief>
39777        <description>
39778         <p>
39779 There are three groups of application scenarios for NFC:
39780         </p>
39781         <ul>
39782           <li>
39783 Exchanging some digital information or data by holding a device close to a wireless tag.          </li>
39784           <li>
39785 Exchanging some information or data between two devices by holding them close to each other.          </li>
39786           <li>
39787 Making payments by holding mobile phones close to point of sales terminals instead of swiping smart cards.          </li>
39788         </ul>
39789         <p>
39790 For more information on the NFC features, see <a href="../../org.tizen.web.appprogramming/html/guide/communication_guide/nfc.htm">NFC Guide</a>.
39791         </p>
39792        </description>
39793         <version>
39794  1.0
39795         </version>
39796         <def-api-feature identifier="http://tizen.org/feature/network.nfc">
39797           <descriptive>
39798            <description>
39799             <p>
39800 To guarantee this application running on a device with NFC feature, define below in the config file: 
39801             </p>
39802            </description>
39803           </descriptive>
39804         </def-api-feature>
39805     </descriptive>
39806     <Enum name="NDEFRecordTextEncoding" id="::NFC::NDEFRecordTextEncoding">
39807       <webidl>  enum NDEFRecordTextEncoding { &quot;UTF8&quot;, &quot;UTF16&quot; };</webidl>
39808       <descriptive>
39809           <brief>
39810  An enumerator that defines an encoding format for an NDEF record text.
39811           </brief>
39812           <version>
39813  1.0
39814           </version>
39815       </descriptive>
39816       <EnumValue stringvalue="UTF8">
39817         <webidl> &quot;UTF8</webidl>
39818       </EnumValue>
39819       <EnumValue stringvalue="UTF16">
39820         <webidl> &quot;UTF16</webidl>
39821       </EnumValue>
39822     </Enum>
39823     <Enum name="NFCTagType" id="::NFC::NFCTagType">
39824       <webidl>  enum NFCTagType { &quot;GENERIC_TARGET&quot;, &quot;ISO14443_A&quot;, &quot;ISO14443_4A&quot;, &quot;ISO14443_3A&quot;,
39825   &quot;MIFARE_MINI&quot;, &quot;MIFARE_1K&quot;, &quot;MIFARE_4K&quot;, &quot;MIFARE_ULTRA&quot;, &quot;MIFARE_DESFIRE&quot;,
39826   &quot;ISO14443_B&quot;, &quot;ISO14443_4B&quot;, &quot;ISO14443_BPRIME&quot;, &quot;FELICA&quot;, &quot;JEWEL&quot;, &quot;ISO15693&quot;,
39827   &quot;UNKNOWN_TARGET&quot; };</webidl>
39828       <descriptive>
39829           <brief>
39830  An enumerator that defines the type of NFC tag.
39831           </brief>
39832          <description>
39833           <p>
39834 The following values are supported:
39835           </p>
39836           <ul>
39837             <li>
39838 GENERIC_TARGET            </li>
39839             <li>
39840 ISO14443_A            </li>
39841             <li>
39842 ISO14443_4A            </li>
39843             <li>
39844 ISO14443_3A            </li>
39845             <li>
39846 MIFARE_MINI            </li>
39847             <li>
39848 MIFARE_1K            </li>
39849             <li>
39850 MIFARE_4K            </li>
39851             <li>
39852 MIFARE_ULTRA            </li>
39853             <li>
39854 MIFARE_DESFIRE            </li>
39855             <li>
39856 ISO14443_B            </li>
39857             <li>
39858 ISO14443_4B            </li>
39859             <li>
39860 ISO14443_BPRIME            </li>
39861             <li>
39862 FELICA            </li>
39863             <li>
39864 JEWEL            </li>
39865             <li>
39866 ISO15693            </li>
39867             <li>
39868 UNKNOWN_TARGET            </li>
39869           </ul>
39870          </description>
39871           <version>
39872  1.0
39873           </version>
39874       </descriptive>
39875       <EnumValue stringvalue="GENERIC_TARGET">
39876         <webidl> &quot;GENERIC_TARGET</webidl>
39877       </EnumValue>
39878       <EnumValue stringvalue="ISO14443_A">
39879         <webidl> &quot;ISO14443_A</webidl>
39880       </EnumValue>
39881       <EnumValue stringvalue="ISO14443_4A">
39882         <webidl> &quot;ISO14443_4A</webidl>
39883       </EnumValue>
39884       <EnumValue stringvalue="ISO14443_3A">
39885         <webidl> &quot;ISO14443_3A</webidl>
39886       </EnumValue>
39887       <EnumValue stringvalue="MIFARE_MINI">
39888         <webidl>  &quot;MIFARE_MINI</webidl>
39889       </EnumValue>
39890       <EnumValue stringvalue="MIFARE_1K">
39891         <webidl> &quot;MIFARE_1K</webidl>
39892       </EnumValue>
39893       <EnumValue stringvalue="MIFARE_4K">
39894         <webidl> &quot;MIFARE_4K</webidl>
39895       </EnumValue>
39896       <EnumValue stringvalue="MIFARE_ULTRA">
39897         <webidl> &quot;MIFARE_ULTRA</webidl>
39898       </EnumValue>
39899       <EnumValue stringvalue="MIFARE_DESFIRE">
39900         <webidl> &quot;MIFARE_DESFIRE</webidl>
39901       </EnumValue>
39902       <EnumValue stringvalue="ISO14443_B">
39903         <webidl>  &quot;ISO14443_B</webidl>
39904       </EnumValue>
39905       <EnumValue stringvalue="ISO14443_4B">
39906         <webidl> &quot;ISO14443_4B</webidl>
39907       </EnumValue>
39908       <EnumValue stringvalue="ISO14443_BPRIME">
39909         <webidl> &quot;ISO14443_BPRIME</webidl>
39910       </EnumValue>
39911       <EnumValue stringvalue="FELICA">
39912         <webidl> &quot;FELICA</webidl>
39913       </EnumValue>
39914       <EnumValue stringvalue="JEWEL">
39915         <webidl> &quot;JEWEL</webidl>
39916       </EnumValue>
39917       <EnumValue stringvalue="ISO15693">
39918         <webidl> &quot;ISO15693</webidl>
39919       </EnumValue>
39920       <EnumValue stringvalue="UNKNOWN_TARGET">
39921         <webidl>  &quot;UNKNOWN_TARGET</webidl>
39922       </EnumValue>
39923     </Enum>
39924     <Interface name="NFCManagerObject" id="::NFC::NFCManagerObject">
39925       <webidl>  [NoInterfaceObject] interface NFCManagerObject {
39926     readonly attribute <ref>NFCManager</ref> nfc;
39927   };</webidl>
39928       <descriptive>
39929           <brief>
39930  This interface defines what is instantiated by the <em>Tizen</em> object from the Tizen Platform.
39931 There will be a <em>tizen.nfc </em>object that allows access to the functionality of the NFC API.
39932           </brief>
39933           <version>
39934  1.0
39935           </version>
39936       </descriptive>
39937       <ExtendedAttributeList>
39938         <ExtendedAttribute name="NoInterfaceObject">
39939           <webidl>NoInterfaceObject</webidl>
39940         </ExtendedAttribute>
39941       </ExtendedAttributeList>
39942       <Attribute readonly="readonly" name="nfc" id="::NFC::NFCManagerObject::nfc">
39943         <webidl>    readonly attribute <ref>NFCManager</ref> nfc;</webidl>
39944         <Type name="NFCManager"/>
39945       </Attribute>
39946     </Interface>
39947     <Implements name1="Tizen" name2="NFCManagerObject">
39948       <webidl>  <ref>Tizen</ref> implements <ref>NFCManagerObject</ref>;</webidl>
39949     </Implements>
39950     <Interface name="NFCManager" id="::NFC::NFCManager">
39951       <webidl>  [NoInterfaceObject] interface NFCManager {
39952     const short NFC_RECORD_TNF_EMPTY = 0;
39953     const short NFC_RECORD_TNF_WELL_KNOWN = 1;
39954     const short NFC_RECORD_TNF_MIME_MEDIA = 2;
39955     const short NFC_RECORD_TNF_URI = 3;
39956     const short NFC_RECORD_TNF_EXTERNAL_RTD = 4;
39957     const short NFC_RECORD_TNF_UNKNOWN = 5;
39958     const short NFC_RECORD_TNF_UNCHANGED = 6;
39959
39960     <ref>NFCAdapter</ref> getDefaultAdapter() raises(<ref>WebAPIException</ref>);
39961
39962     void setExclusiveMode(boolean mode) raises(<ref>WebAPIException</ref>);
39963   };</webidl>
39964       <descriptive>
39965           <brief>
39966  Accesses to the NFC tag/target.
39967           </brief>
39968          <description>
39969           <p>
39970 It provides access to the API functionalities through the tizen.nfc interface.
39971           </p>
39972          </description>
39973           <version>
39974  1.0
39975           </version>
39976       </descriptive>
39977       <ExtendedAttributeList>
39978         <ExtendedAttribute name="NoInterfaceObject">
39979           <webidl>NoInterfaceObject</webidl>
39980         </ExtendedAttribute>
39981       </ExtendedAttributeList>
39982       <Const name="NFC_RECORD_TNF_EMPTY" value="0" id="::NFC::NFCManager::NFC_RECORD_TNF_EMPTY">
39983         <webidl>    const short NFC_RECORD_TNF_EMPTY = 0;</webidl>
39984         <descriptive>
39985             <brief>
39986  A constant to indicate empty format of NDEF record's type field.
39987             </brief>
39988             <version>
39989  1.0
39990             </version>
39991         </descriptive>
39992         <Type type="short"/>
39993       </Const>
39994       <Const name="NFC_RECORD_TNF_WELL_KNOWN" value="1" id="::NFC::NFCManager::NFC_RECORD_TNF_WELL_KNOWN">
39995         <webidl>    const short NFC_RECORD_TNF_WELL_KNOWN = 1;</webidl>
39996         <descriptive>
39997             <brief>
39998  A constant to indicate Record Type Definition (RTD) format of NDEF record's type field.
39999             </brief>
40000             <version>
40001  1.0
40002             </version>
40003         </descriptive>
40004         <Type type="short"/>
40005       </Const>
40006       <Const name="NFC_RECORD_TNF_MIME_MEDIA" value="2" id="::NFC::NFCManager::NFC_RECORD_TNF_MIME_MEDIA">
40007         <webidl>    const short NFC_RECORD_TNF_MIME_MEDIA = 2;</webidl>
40008         <descriptive>
40009             <brief>
40010  A constant to indicate MIME media types format in RFC 2046 [RFC 2046] of NDEF record's type field.
40011             </brief>
40012             <version>
40013  1.0
40014             </version>
40015         </descriptive>
40016         <Type type="short"/>
40017       </Const>
40018       <Const name="NFC_RECORD_TNF_URI" value="3" id="::NFC::NFCManager::NFC_RECORD_TNF_URI">
40019         <webidl>    const short NFC_RECORD_TNF_URI = 3;</webidl>
40020         <descriptive>
40021             <brief>
40022  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.
40023             </brief>
40024             <version>
40025  1.0
40026             </version>
40027         </descriptive>
40028         <Type type="short"/>
40029       </Const>
40030       <Const name="NFC_RECORD_TNF_EXTERNAL_RTD" value="4" id="::NFC::NFCManager::NFC_RECORD_TNF_EXTERNAL_RTD">
40031         <webidl>    const short NFC_RECORD_TNF_EXTERNAL_RTD = 4;</webidl>
40032         <descriptive>
40033             <brief>
40034  A constant to indicate NFC forum external type [NFC RTD] format in RFC 2046 [RFC 2046] of NDEF record's type field.
40035             </brief>
40036             <version>
40037  1.0
40038             </version>
40039         </descriptive>
40040         <Type type="short"/>
40041       </Const>
40042       <Const name="NFC_RECORD_TNF_UNKNOWN" value="5" id="::NFC::NFCManager::NFC_RECORD_TNF_UNKNOWN">
40043         <webidl>    const short NFC_RECORD_TNF_UNKNOWN = 5;</webidl>
40044         <descriptive>
40045             <brief>
40046  A constant to indicate unknown type format in RFC 2046 [RFC 2046] of NDEF record's type field.
40047             </brief>
40048             <version>
40049  1.0
40050             </version>
40051         </descriptive>
40052         <Type type="short"/>
40053       </Const>
40054       <Const name="NFC_RECORD_TNF_UNCHANGED" value="6" id="::NFC::NFCManager::NFC_RECORD_TNF_UNCHANGED">
40055         <webidl>    const short NFC_RECORD_TNF_UNCHANGED = 6;</webidl>
40056         <descriptive>
40057             <brief>
40058  A constant to indicate whether the payload is an intermediate or final chunk of a chunked NDEF record.
40059             </brief>
40060             <version>
40061  1.0
40062             </version>
40063         </descriptive>
40064         <Type type="short"/>
40065       </Const>
40066       <Operation name="getDefaultAdapter" id="::NFC::NFCManager::getDefaultAdapter">
40067         <webidl>    <ref>NFCAdapter</ref> getDefaultAdapter() raises(<ref>WebAPIException</ref>);</webidl>
40068         <descriptive>
40069             <brief>
40070  Gets the default NFC adapter of the device.
40071             </brief>
40072             <version>
40073  1.0
40074             </version>
40075             <privilege>
40076  http://tizen.org/privilege/nfc.common
40077             </privilege>
40078             <privilegelevel>
40079  public
40080             </privilegelevel>
40081             <Code> try {
40082   var adapter = tizen.nfc.getDefaultAdapter() ;
40083  } catch (err) {
40084   console.log (err.name +&quot;: &quot; + err.message);
40085  }
40086  </Code>
40087         </descriptive>
40088         <Type name="NFCAdapter">
40089           <descriptive>
40090               <description><p>
40091  NFCAdapter The default NFCAdapter object.
40092               </p></description>
40093           </descriptive>
40094         </Type>
40095         <ArgumentList/>
40096         <Raises>
40097           <RaiseException name="WebAPIException">
40098             <descriptive>
40099                 <description><p>
40100  with error type SecurityError, if the application does not have the privilege to call this method.
40101                 </p></description>
40102                 <description><p>
40103  with error type UnknownError in any other error case.
40104                 </p></description>
40105             </descriptive>
40106           </RaiseException>
40107         </Raises>
40108       </Operation>
40109       <Operation name="setExclusiveMode" id="::NFC::NFCManager::setExclusiveMode">
40110         <webidl>    void setExclusiveMode(boolean mode) raises(<ref>WebAPIException</ref>);</webidl>
40111         <descriptive>
40112             <brief>
40113  Gives priority to the current application for NFC operations over other applications when it is in the foreground.
40114             </brief>
40115            <description>
40116             <p>
40117 If the current application has the priority and is on the foreground, the system stops sending
40118 application control requests that are used to pick an application to handle a request about NFC.
40119 Such a request is usually sent, for example, when detecting an NFC tag or receiving an NDEF message
40120 from a connected NFC peer-to-peer target.
40121             </p>
40122             <p>
40123 When the current application moves to the background, it loses the priority.
40124             </p>
40125             <p>
40126 The exclusive mode can only be set when NFC is on. If NFC is off, the mode is ignored.
40127             </p>
40128            </description>
40129             <version>
40130  2.1
40131             </version>
40132             <privilege>
40133  http://tizen.org/privilege/nfc.common
40134             </privilege>
40135             <privilegelevel>
40136  public
40137             </privilegelevel>
40138             <Code> try {
40139    tizen.nfc.setExclusiveMode(true) ;
40140  } catch (err) {
40141    console.log (err.name + &quot;: &quot; + err.message);
40142  }
40143  </Code>
40144         </descriptive>
40145         <Type type="void"/>
40146         <ArgumentList>
40147           <Argument name="mode">
40148             <descriptive>
40149                 <description><p>
40150  The value of exclusive mode.
40151                 </p></description>
40152             </descriptive>
40153             <Type type="boolean"/>
40154           </Argument>
40155         </ArgumentList>
40156         <Raises>
40157           <RaiseException name="WebAPIException">
40158             <descriptive>
40159                 <description><p>
40160  with error type SecurityError, if the application does not have the privilege to call this method.
40161                 </p></description>
40162                 <description><p>
40163  with error type UnknownError in any other error case.
40164                 </p></description>
40165             </descriptive>
40166           </RaiseException>
40167         </Raises>
40168       </Operation>
40169     </Interface>
40170     <Interface name="NFCAdapter" id="::NFC::NFCAdapter">
40171       <webidl>  [NoInterfaceObject] interface NFCAdapter {
40172     readonly attribute boolean powered ;
40173
40174
40175     void setPowered(boolean state,
40176                     optional <ref>SuccessCallback</ref>? successCallback,
40177                     optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
40178
40179
40180     void setTagListener(<ref>NFCTagDetectCallback</ref> detectCallback,
40181                         optional <ref>NFCTagType</ref>[]? tagFilter) raises(<ref>WebAPIException</ref>);
40182
40183     void setPeerListener(<ref>NFCPeerDetectCallback</ref> detectCallback) raises(<ref>WebAPIException</ref>);
40184
40185     void unsetTagListener() raises(<ref>WebAPIException</ref>);
40186
40187     void unsetPeerListener() raises(<ref>WebAPIException</ref>);
40188
40189     <ref>NDEFMessage</ref>? getCachedMessage() raises(<ref>WebAPIException</ref>);
40190
40191   };</webidl>
40192       <descriptive>
40193           <brief>
40194  This interface provides access to control the adapter by offering methods to control local NFC behaviors, such as turning on/off an adapter.
40195           </brief>
40196           <version>
40197  1.0
40198           </version>
40199       </descriptive>
40200       <ExtendedAttributeList>
40201         <ExtendedAttribute name="NoInterfaceObject">
40202           <webidl>NoInterfaceObject</webidl>
40203         </ExtendedAttribute>
40204       </ExtendedAttributeList>
40205       <Attribute readonly="readonly" name="powered" id="::NFC::NFCAdapter::powered">
40206         <webidl>    readonly attribute boolean powered ;</webidl>
40207         <descriptive>
40208             <brief>
40209  The state of the NFC adapter.
40210             </brief>
40211             <version>
40212  1.0
40213             </version>
40214         </descriptive>
40215         <Type type="boolean"/>
40216       </Attribute>
40217       <Operation name="setPowered" id="::NFC::NFCAdapter::setPowered">
40218         <webidl>    void setPowered(boolean state,
40219                     optional <ref>SuccessCallback</ref>? successCallback,
40220                     optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
40221         <descriptive>
40222             <brief>
40223  Sets the power of an NFC adapter to either a on state or a off state.
40224             </brief>
40225            <description>
40226             <p>
40227 The ErrorCallback is launched with these error types:
40228             </p>
40229             <ul>
40230               <li>
40231  ServiceNotAvailableError - If the NFC device is busy.              </li>
40232               <li>
40233  UnknownError - If any other error occurs.              </li>
40234             </ul>
40235            </description>
40236             <version>
40237  1.0
40238             </version>
40239             <privilege>
40240  http://tizen.org/privilege/nfc.admin
40241             </privilege>
40242             <privilegelevel>
40243  public
40244             </privilegelevel>
40245             <Code> var gNfcAdapter;
40246  var onPowerOn = function(){ // Called when NFC adapter is powered on
40247    try {
40248      console.log(&quot;Power on succeed&quot;);
40249      // Implement NFC communication routines ...
40250      gNfcAdapter.setPowered(
40251          false, // Disable NFC adapter
40252          function () {console.log(&quot;Power off succeed&quot;); }, // Handle success
40253          function () {console.log(&quot;Power off failed&quot;); }); // Handle failure
40254    } catch (err) {
40255      console.log (err.name + &quot;: &quot; + err.message);
40256    }
40257  };
40258  try {
40259    gNfcAdapter = tizen.nfc.getDefaultAdapter();
40260    if (!gNfcAdapter.powered) {
40261      gNfcAdapter.setPowered(
40262          true, // Enable NFC adapter
40263          onPowerOn,                                     // Handle succes
40264          function () {console.log(&quot;Power on failed&quot;)}); // Handle failure
40265    } else {
40266      onPowerOn();
40267    }
40268  } catch (err) {
40269    console.log (err.name + &quot;: &quot; + err.message);
40270  }
40271  </Code>
40272         </descriptive>
40273         <Type type="void"/>
40274         <ArgumentList>
40275           <Argument name="state">
40276             <descriptive>
40277                 <description><p>
40278  The state of NFC adapter, <var>true</var> means on, <var>false</var> means off
40279                 </p></description>
40280             </descriptive>
40281             <Type type="boolean"/>
40282           </Argument>
40283           <Argument optional="optional" name="successCallback">
40284             <descriptive>
40285                 <description><p>
40286  The method to call when NFC adapter is 
40287 enabled or disabled successfully.
40288                 </p></description>
40289             </descriptive>
40290             <Type name="SuccessCallback" nullable="nullable"/>
40291           </Argument>
40292           <Argument optional="optional" name="errorCallback">
40293             <descriptive>
40294                 <description><p>
40295  The method to call when an error occurs.
40296                 </p></description>
40297             </descriptive>
40298             <Type name="ErrorCallback" nullable="nullable"/>
40299           </Argument>
40300         </ArgumentList>
40301         <Raises>
40302           <RaiseException name="WebAPIException">
40303             <descriptive>
40304                 <description><p>
40305  with error type TypeMismatchError, if the input parameter
40306 is not compatible with the expected type for that parameter.
40307                 </p></description>
40308                 <description><p>
40309  with error type SecurityError, if this functionality is not allowed
40310                 </p></description>
40311             </descriptive>
40312           </RaiseException>
40313         </Raises>
40314       </Operation>
40315       <Operation name="setTagListener" id="::NFC::NFCAdapter::setTagListener">
40316         <webidl>    void setTagListener(<ref>NFCTagDetectCallback</ref> detectCallback,
40317                         optional <ref>NFCTagType</ref>[]? tagFilter) raises(<ref>WebAPIException</ref>);</webidl>
40318         <descriptive>
40319             <brief>
40320  Registers a callback function to invoke when an NFC tag is detected.
40321             </brief>
40322            <description>
40323             <p>
40324 If the registration completes successfully, the detectCallback must be
40325 invoked when NFC tag is detected. 
40326             </p>
40327             <p>
40328 If no tagFilter is passed, it shall consider the default tagFilter, that is to set all tag types.
40329             </p>
40330            </description>
40331             <version>
40332  1.0
40333             </version>
40334             <privilege>
40335  http://tizen.org/privilege/nfc.tag
40336             </privilege>
40337             <privilegelevel>
40338  public
40339             </privilegelevel>
40340             <Code> var adapter = tizen.nfc.getDefaultAdapter();
40341  var onSuccessCB = {onattach : function(nfcTag) {
40342      console.log(&quot;NFC Tag's type is &quot; + nfcTag.type);
40343    }, ondetach : function() {
40344      console.log(&quot;NFC Tag is detached&quot;);
40345    }};
40346  adapter.setTagListener(onSuccessCB);
40347  </Code>
40348         </descriptive>
40349         <Type type="void"/>
40350         <ArgumentList>
40351           <Argument name="detectCallback">
40352             <descriptive>
40353                 <description><p>
40354  The method to invoke when a NFC tag is successfully detected.
40355                 </p></description>
40356             </descriptive>
40357             <Type name="NFCTagDetectCallback"/>
40358           </Argument>
40359           <Argument optional="optional" name="tagFilter">
40360             <descriptive>
40361                 <description><p>
40362  A filter to be used when specific NFC tag is detected.
40363                 </p></description>
40364             </descriptive>
40365             <Type type="array" nullable="nullable">
40366               <Type name="NFCTagType"/>
40367             </Type>
40368           </Argument>
40369         </ArgumentList>
40370         <Raises>
40371           <RaiseException name="WebAPIException">
40372             <descriptive>
40373                 <description><p>
40374  with error type TypeMismatchError, if the input parameter
40375 is not compatible with the expected type for that parameter.
40376                 </p></description>
40377                 <description><p>
40378  with error type SecurityError, if the application does not have the privilege to call this method.
40379                 </p></description>
40380                 <description><p>
40381  with error type ServiceNotAvailableError, if the NFC service is not available.
40382                 </p></description>
40383                 <description><p>
40384  with error type UnknownError in any other error case.
40385                 </p></description>
40386             </descriptive>
40387           </RaiseException>
40388         </Raises>
40389       </Operation>
40390       <Operation name="setPeerListener" id="::NFC::NFCAdapter::setPeerListener">
40391         <webidl>    void setPeerListener(<ref>NFCPeerDetectCallback</ref> detectCallback) raises(<ref>WebAPIException</ref>);</webidl>
40392         <descriptive>
40393             <brief>
40394  Registers a callback function to be invoked when NFC peer-to-peer target is detected.
40395             </brief>
40396            <description>
40397             <p>
40398 If the registration completes successfully, the detectCallback must be
40399 invoked when NFC peer-to-peer target is detected. 
40400             </p>
40401            </description>
40402             <version>
40403  1.0
40404             </version>
40405             <privilege>
40406  http://tizen.org/privilege/nfc.p2p
40407             </privilege>
40408             <privilegelevel>
40409  public
40410             </privilegelevel>
40411             <Code> var adapter = tizen.nfc.getDefaultAdapter();
40412  var onSuccessCB = {onattach : function(nfcPeer) {
40413      console.log(&quot;NFC Target is detected&quot;);
40414    }, ondetach : function() {
40415      console.log(&quot;NFC Target is detached&quot;);
40416    }};
40417  adapter.setPeerListener(onSuccessCB);
40418  </Code>
40419         </descriptive>
40420         <Type type="void"/>
40421         <ArgumentList>
40422           <Argument name="detectCallback">
40423             <descriptive>
40424                 <description><p>
40425  The method to invoke when a NFC peer-to-peer target is successfully detected.
40426                 </p></description>
40427             </descriptive>
40428             <Type name="NFCPeerDetectCallback"/>
40429           </Argument>
40430         </ArgumentList>
40431         <Raises>
40432           <RaiseException name="WebAPIException">
40433             <descriptive>
40434                 <description><p>
40435  with error type TypeMismatchError, if the input parameter
40436 is not compatible with the expected type for that parameter.
40437                 </p></description>
40438                 <description><p>
40439  with error type SecurityError, if the application does not have the privilege to call this method.
40440                 </p></description>
40441                 <description><p>
40442  with error type ServiceNotAvailableError, if the NFC service is not available.
40443                 </p></description>
40444                 <description><p>
40445  with error type UnknownError in any other error case.
40446                 </p></description>
40447             </descriptive>
40448           </RaiseException>
40449         </Raises>
40450       </Operation>
40451       <Operation name="unsetTagListener" id="::NFC::NFCAdapter::unsetTagListener">
40452         <webidl>    void unsetTagListener() raises(<ref>WebAPIException</ref>);</webidl>
40453         <descriptive>
40454             <brief>
40455  Unregisters the listener for detecting an NFC tag.
40456             </brief>
40457             <version>
40458  1.0
40459             </version>
40460             <privilege>
40461  http://tizen.org/privilege/nfc.tag
40462             </privilege>
40463             <privilegelevel>
40464  public
40465             </privilegelevel>
40466             <Code> var adapter = tizen.nfc.getDefaultAdapter();
40467
40468  // Receives NFCTag
40469  var onSuccessCB = {onattach : function(nfcTag) {
40470      console.log(&quot;NFC Tag's type is &quot; + nfcTag.type);
40471    }, ondetach : function() {
40472      console.log(&quot;NFC Tag is detached&quot;);
40473    }};
40474
40475  // Unregister the listener
40476  function unsetListen() {
40477    adapter.unsetTagListener();
40478  }
40479
40480  // Registers to be notified when NFC tag is detected.
40481  adapter.setTagListener(onSuccessCB)
40482  </Code>
40483         </descriptive>
40484         <Type type="void"/>
40485         <ArgumentList/>
40486         <Raises>
40487           <RaiseException name="WebAPIException">
40488             <descriptive>
40489                 <description><p>
40490  with error type SecurityError, if the application does not have the privilege to call this method.
40491                 </p></description>
40492                 <description><p>
40493  with error type ServiceNotAvailableError, if the NFC service is not available.
40494                 </p></description>
40495                 <description><p>
40496  with error type UnknownError in any other error case.
40497                 </p></description>
40498             </descriptive>
40499           </RaiseException>
40500         </Raises>
40501       </Operation>
40502       <Operation name="unsetPeerListener" id="::NFC::NFCAdapter::unsetPeerListener">
40503         <webidl>    void unsetPeerListener() raises(<ref>WebAPIException</ref>);</webidl>
40504         <descriptive>
40505             <brief>
40506  Unregisters the listener for detecting an NFC peer-to-peer target.
40507             </brief>
40508             <version>
40509  1.0
40510             </version>
40511             <privilege>
40512  http://tizen.org/privilege/nfc.p2p
40513             </privilege>
40514             <privilegelevel>
40515  public
40516             </privilegelevel>
40517             <Code> var adapter = tizen.nfc.getDefaultAdapter();
40518
40519  // Receives an NFC peer.
40520  var onSuccessCB = {onattach : function(nfcPeer) {
40521      console.log(&quot;NFC Target is detected&quot;);
40522    }, ondetach : function() {
40523      console.log(&quot;NFC Target is detached&quot;);
40524    }};
40525
40526  // Unregisters the listener.
40527  function unsetListen() {
40528    adapter.unsetPeerListener();
40529  }
40530
40531  // Registers to be notified when NFC peer-to-peer target is detected.
40532  adapter.setPeerListener(onSuccessCB)
40533  </Code>
40534         </descriptive>
40535         <Type type="void"/>
40536         <ArgumentList/>
40537         <Raises>
40538           <RaiseException name="WebAPIException">
40539             <descriptive>
40540                 <description><p>
40541  with error type SecurityError, if the application does not have the privilege to call this method.
40542                 </p></description>
40543                 <description><p>
40544  with error type ServiceNotAvailableError, if the NFC service is not available.
40545                 </p></description>
40546                 <description><p>
40547  with error type UnknownError in any other error case.
40548                 </p></description>
40549             </descriptive>
40550           </RaiseException>
40551         </Raises>
40552       </Operation>
40553       <Operation name="getCachedMessage" id="::NFC::NFCAdapter::getCachedMessage">
40554         <webidl>    <ref>NDEFMessage</ref>? getCachedMessage() raises(<ref>WebAPIException</ref>);</webidl>
40555         <descriptive>
40556             <brief>
40557  Gets the NDEF message cached when the tag is detected.
40558             </brief>
40559            <description>
40560             <p>
40561 If the operation completes successfully, the NDEF Message that was last read
40562 should be returned. 
40563             </p>
40564            </description>
40565             <version>
40566  1.0
40567             </version>
40568             <privilege>
40569  http://tizen.org/privilege/nfc.common
40570             </privilege>
40571             <privilegelevel>
40572  public
40573             </privilegelevel>
40574             <Code> // Gets the cached message
40575  var cachedMessage = tizen.nfc.getDefaultAdapter().getCachedMessage();
40576  </Code>
40577         </descriptive>
40578         <Type name="NDEFMessage" nullable="nullable">
40579           <descriptive>
40580               <description><p>
40581  The NDEF Message that was last read.
40582               </p></description>
40583           </descriptive>
40584         </Type>
40585         <ArgumentList/>
40586         <Raises>
40587           <RaiseException name="WebAPIException">
40588             <descriptive>
40589                 <description><p>
40590  with error type SecurityError, if the application does not have the privilege to call this method.
40591                 </p></description>
40592                 <description><p>
40593  with error type UnknownError in any other error case.
40594                 </p></description>
40595             </descriptive>
40596           </RaiseException>
40597         </Raises>
40598       </Operation>
40599     </Interface>
40600     <Interface name="NFCTag" id="::NFC::NFCTag">
40601       <webidl>  [NoInterfaceObject] interface NFCTag {
40602     readonly attribute <ref>NFCTagType</ref> type;
40603
40604     readonly attribute boolean isSupportedNDEF;
40605
40606     readonly attribute long ndefSize;
40607
40608     readonly attribute object properties;
40609
40610     readonly attribute boolean isConnected;
40611
40612
40613      void readNDEF(<ref>NDEFMessageReadCallback</ref> readCallback,
40614                   optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
40615
40616     void writeNDEF(<ref>NDEFMessage</ref> ndefMessage,
40617                    optional <ref>SuccessCallback</ref>? successCallback,
40618                    optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
40619
40620     void transceive(byte[] data,
40621                     <ref>ByteArraySuccessCallback</ref> dataCallback,
40622                     optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
40623   };</webidl>
40624       <descriptive>
40625           <brief>
40626  This interface provides accesses to the NFC tag.
40627           </brief>
40628           <version>
40629  1.0
40630           </version>
40631       </descriptive>
40632       <ExtendedAttributeList>
40633         <ExtendedAttribute name="NoInterfaceObject">
40634           <webidl>NoInterfaceObject</webidl>
40635         </ExtendedAttribute>
40636       </ExtendedAttributeList>
40637       <Attribute readonly="readonly" name="type" id="::NFC::NFCTag::type">
40638         <webidl>    readonly attribute <ref>NFCTagType</ref> type;</webidl>
40639         <descriptive>
40640             <brief>
40641  The type of the NFC tag.
40642             </brief>
40643             <version>
40644  1.0
40645             </version>
40646         </descriptive>
40647         <Type name="NFCTagType"/>
40648       </Attribute>
40649       <Attribute readonly="readonly" name="isSupportedNDEF" id="::NFC::NFCTag::isSupportedNDEF">
40650         <webidl>    readonly attribute boolean isSupportedNDEF;</webidl>
40651         <descriptive>
40652             <brief>
40653  An attribute to check if the NFC Tag supports NDEF format.
40654             </brief>
40655             <version>
40656  1.0
40657             </version>
40658         </descriptive>
40659         <Type type="boolean"/>
40660       </Attribute>
40661       <Attribute readonly="readonly" name="ndefSize" id="::NFC::NFCTag::ndefSize">
40662         <webidl>    readonly attribute long ndefSize;</webidl>
40663         <descriptive>
40664             <brief>
40665  The size of NDEF message stored in the tag.
40666             </brief>
40667             <version>
40668  1.0
40669             </version>
40670         </descriptive>
40671         <Type type="long"/>
40672       </Attribute>
40673       <Attribute readonly="readonly" name="properties" id="::NFC::NFCTag::properties">
40674         <webidl>    readonly attribute object properties;</webidl>
40675         <descriptive>
40676             <brief>
40677  The value is all tag information.
40678             </brief>
40679            <description>
40680             <p>
40681 It is pairs of key and value.
40682 The array's index is the pair's key and value is its value.
40683             </p>
40684            </description>
40685             <Code> var adapter = tizen.nfc.getDefaultAdapter();
40686  var onSuccessCB = {onattach : function(nfcTag) {
40687      console.log(&quot;NFC Tag's type is &quot; + nfcTag.type);
40688      for(var i in nfcTag.properties) {
40689        console.log(&quot;key:&quot; + i + &quot; value:&quot; + nfcTag.properties[i]);
40690      }
40691    }, ondetach : function() {
40692      console.log(&quot;NFC Tag is detached&quot;);
40693    }};
40694  adapter.setTagListener(onSuccessCB);
40695
40696  </Code>
40697             <version>
40698  1.0
40699             </version>
40700         </descriptive>
40701         <Type type="object"/>
40702       </Attribute>
40703       <Attribute readonly="readonly" name="isConnected" id="::NFC::NFCTag::isConnected">
40704         <webidl>    readonly attribute boolean isConnected;</webidl>
40705         <descriptive>
40706             <brief>
40707  The value is necessary to check if this tag is connected.
40708             </brief>
40709             <version>
40710  1.0
40711             </version>
40712         </descriptive>
40713         <Type type="boolean"/>
40714       </Attribute>
40715       <Operation name="readNDEF" id="::NFC::NFCTag::readNDEF">
40716         <webidl>     void readNDEF(<ref>NDEFMessageReadCallback</ref> readCallback,
40717                   optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
40718         <descriptive>
40719             <brief>
40720  Reads the NDEF data from the NFC tag.
40721             </brief>
40722            <description>
40723             <p>
40724 The ErrorCallback is launched with these error types:
40725             </p>
40726             <ul>
40727               <li>
40728  ServiceNotAvailableError - If the NFC service is not available.              </li>
40729               <li>
40730  UnknownError - If any other error occurs.              </li>
40731             </ul>
40732            </description>
40733             <version>
40734  1.0
40735             </version>
40736             <privilege>
40737  http://tizen.org/privilege/nfc.tag
40738             </privilege>
40739             <privilegelevel>
40740  public
40741             </privilegelevel>
40742         </descriptive>
40743         <Type type="void"/>
40744         <ArgumentList>
40745           <Argument name="readCallback">
40746             <descriptive>
40747                 <description><p>
40748  The method invoked in case of successfully reading the NDEF Data.
40749                 </p></description>
40750             </descriptive>
40751             <Type name="NDEFMessageReadCallback"/>
40752           </Argument>
40753           <Argument optional="optional" name="errorCallback">
40754             <descriptive>
40755                 <description><p>
40756  The method invoked in case of any error during reading the NDEF Data.
40757                 </p></description>
40758             </descriptive>
40759             <Type name="ErrorCallback" nullable="nullable"/>
40760           </Argument>
40761         </ArgumentList>
40762         <Raises>
40763           <RaiseException name="WebAPIException">
40764             <descriptive>
40765                 <description><p>
40766  with error type TypeMismatchError, if the input parameter
40767 is not compatible with the expected type for that parameter.
40768                 </p></description>
40769                 <description><p>
40770  with error type SecurityError, if the application does not have the privilege to call this method.
40771                 </p></description>
40772                 <description><p>
40773  with error type NotSupportedError, if current Tag doesn't support NDEF format.
40774                 </p></description>
40775             </descriptive>
40776           </RaiseException>
40777         </Raises>
40778       </Operation>
40779       <Operation name="writeNDEF" id="::NFC::NFCTag::writeNDEF">
40780         <webidl>    void writeNDEF(<ref>NDEFMessage</ref> ndefMessage,
40781                    optional <ref>SuccessCallback</ref>? successCallback,
40782                    optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
40783         <descriptive>
40784             <brief>
40785  Writes the NDEF data to the NFC tag.
40786             </brief>
40787            <description>
40788             <p>
40789 The ErrorCallback is launched with these error types:
40790             </p>
40791             <ul>
40792               <li>
40793  InvalidValuesError: If any of the input parameters contain an invalid value.              </li>
40794               <li>
40795  ServiceNotAvailableError: If the NFC service is not available.               </li>
40796               <li>
40797  UnknownError: In any other error case.               </li>
40798             </ul>
40799            </description>
40800             <version>
40801  1.0
40802             </version>
40803             <privilege>
40804  http://tizen.org/privilege/nfc.tag
40805             </privilege>
40806             <privilegelevel>
40807  public
40808             </privilegelevel>
40809         </descriptive>
40810         <Type type="void"/>
40811         <ArgumentList>
40812           <Argument name="ndefMessage">
40813             <descriptive>
40814                 <description><p>
40815  The NDEF message to write to NFC tag.
40816                 </p></description>
40817             </descriptive>
40818             <Type name="NDEFMessage"/>
40819           </Argument>
40820           <Argument optional="optional" name="successCallback">
40821             <descriptive>
40822                 <description><p>
40823  The method invoked in case of successfully writing the NDEF Data.
40824                 </p></description>
40825             </descriptive>
40826             <Type name="SuccessCallback" nullable="nullable"/>
40827           </Argument>
40828           <Argument optional="optional" name="errorCallback">
40829             <descriptive>
40830                 <description><p>
40831  The method invoked in case of any error during writing the NDEF Data.
40832                 </p></description>
40833             </descriptive>
40834             <Type name="ErrorCallback" nullable="nullable"/>
40835           </Argument>
40836         </ArgumentList>
40837         <Raises>
40838           <RaiseException name="WebAPIException">
40839             <descriptive>
40840                 <description><p>
40841  with error type TypeMismatchError, if the input parameter
40842 is not compatible with the expected type for that parameter.
40843                 </p></description>
40844                 <description><p>
40845  with error type SecurityError, if the application does not have the privilege to call this method.
40846                 </p></description>
40847                 <description><p>
40848  with error type NotSupportedError, if current Tag doesn't support NDEF format.
40849                 </p></description>
40850             </descriptive>
40851           </RaiseException>
40852         </Raises>
40853       </Operation>
40854       <Operation name="transceive" id="::NFC::NFCTag::transceive">
40855         <webidl>    void transceive(byte[] data,
40856                     <ref>ByteArraySuccessCallback</ref> dataCallback,
40857                     optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
40858         <descriptive>
40859             <brief>
40860  Access the raw format card. The transceive function is the only way to access the raw format card (not formatted).
40861 Each tag type requires its own command to access tags.
40862 This API provides low level access of tag operation. (Note that you must know each tag technology.)
40863             </brief>
40864            <description>
40865             <p>
40866 The ErrorCallback is launched with these error types:
40867             </p>
40868             <ul>
40869               <li>
40870  InvalidValuesError - If any of the input parameters contain an invalid value.              </li>
40871               <li>
40872  ServiceNotAvailableError - If the NFC service is not available.              </li>
40873               <li>
40874  UnknownError - If any other error occurs.              </li>
40875             </ul>
40876            </description>
40877             <version>
40878  1.0
40879             </version>
40880             <privilege>
40881  http://tizen.org/privilege/nfc.tag
40882             </privilege>
40883             <privilegelevel>
40884  public
40885             </privilegelevel>
40886         </descriptive>
40887         <Type type="void"/>
40888         <ArgumentList>
40889           <Argument name="data">
40890             <descriptive>
40891                 <description><p>
40892  The raw data to transceive with the NFC tag.
40893                 </p></description>
40894             </descriptive>
40895             <Type type="array">
40896               <Type type="byte"/>
40897             </Type>
40898           </Argument>
40899           <Argument name="dataCallback">
40900             <descriptive>
40901                 <description><p>
40902  Invoked in case of successfully transceiving the raw data.
40903                 </p></description>
40904             </descriptive>
40905             <Type name="ByteArraySuccessCallback"/>
40906           </Argument>
40907           <Argument optional="optional" name="errorCallback">
40908             <descriptive>
40909                 <description><p>
40910  Invoked in case of any error during transceiving the NDEF Data.
40911                 </p></description>
40912             </descriptive>
40913             <Type name="ErrorCallback" nullable="nullable"/>
40914           </Argument>
40915         </ArgumentList>
40916         <Raises>
40917           <RaiseException name="WebAPIException">
40918             <descriptive>
40919                 <description><p>
40920  with error type TypeMismatchError, if the input parameter
40921 is not compatible with the expected type for that parameter.
40922                 </p></description>
40923                 <description><p>
40924  with error type SecurityError, if the application does not have the privilege to call this method.
40925                 </p></description>
40926             </descriptive>
40927           </RaiseException>
40928         </Raises>
40929       </Operation>
40930     </Interface>
40931     <Interface name="NFCPeer" id="::NFC::NFCPeer">
40932       <webidl>  [NoInterfaceObject] interface NFCPeer {
40933     readonly attribute boolean isConnected;
40934     
40935     void setReceiveNDEFListener(<ref>NDEFMessageReadCallback</ref> successCallback) raises(<ref>WebAPIException</ref>);
40936
40937     void unsetReceiveNDEFListener() raises(<ref>WebAPIException</ref>);
40938
40939     void sendNDEF(<ref>NDEFMessage</ref> ndefMessage,
40940                   optional <ref>SuccessCallback</ref>? successCallback,
40941                   optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
40942
40943   };</webidl>
40944       <descriptive>
40945           <brief>
40946  An interface that provides access to the NFC peer-to-peer target.
40947           </brief>
40948           <version>
40949  1.0
40950           </version>
40951       </descriptive>
40952       <ExtendedAttributeList>
40953         <ExtendedAttribute name="NoInterfaceObject">
40954           <webidl>NoInterfaceObject</webidl>
40955         </ExtendedAttribute>
40956       </ExtendedAttributeList>
40957       <Attribute readonly="readonly" name="isConnected" id="::NFC::NFCPeer::isConnected">
40958         <webidl>    readonly attribute boolean isConnected;</webidl>
40959         <descriptive>
40960             <brief>
40961  The value is necessary to check if this NFC peer-to-peer target is connected.
40962             </brief>
40963             <version>
40964  1.0
40965             </version>
40966         </descriptive>
40967         <Type type="boolean"/>
40968       </Attribute>
40969       <Operation name="setReceiveNDEFListener" id="::NFC::NFCPeer::setReceiveNDEFListener">
40970         <webidl>    void setReceiveNDEFListener(<ref>NDEFMessageReadCallback</ref> successCallback) raises(<ref>WebAPIException</ref>);</webidl>
40971         <descriptive>
40972             <brief>
40973  Registers a callback function to be invoked when an NDEF message is received from the connected NFC peer-to-peer target.
40974             </brief>
40975             <version>
40976  1.0
40977             </version>
40978             <privilege>
40979  http://tizen.org/privilege/nfc.p2p
40980             </privilege>
40981             <privilegelevel>
40982  public
40983             </privilegelevel>
40984             <Code> var adapter = tizen.nfc.getDefaultAdapter();
40985
40986  // Receives NFCPeer
40987  var onSuccessCB = {onattach : function(nfcPeer) {
40988      console.log(&quot;NFC Target is detected&quot;);
40989      nfcPeer.setReceiveNDEFListener(
40990          function(message){
40991             console.log(&quot;Receive message&quot;);
40992          });
40993    }, ondetach : function() {
40994      console.log(&quot;NFC Target is detached&quot;);
40995    }};
40996
40997  adapter.setPeerListener(onSuccessCB);
40998  </Code>
40999         </descriptive>
41000         <Type type="void"/>
41001         <ArgumentList>
41002           <Argument name="successCallback">
41003             <descriptive>
41004                 <description><p>
41005  Invoked in case of successful receiving the message.
41006                 </p></description>
41007             </descriptive>
41008             <Type name="NDEFMessageReadCallback"/>
41009           </Argument>
41010         </ArgumentList>
41011         <Raises>
41012           <RaiseException name="WebAPIException">
41013             <descriptive>
41014                 <description><p>
41015  with error type TypeMismatchError, if the input parameter
41016 is not compatible with the expected type for that parameter.
41017                 </p></description>
41018                 <description><p>
41019  with error type SecurityError, if the application does not have the privilege to call this method.
41020                 </p></description>
41021                 <description><p>
41022  with error type ServiceNotAvailableError, if the NFC service is not available.
41023                 </p></description>
41024                 <description><p>
41025  with error type UnknownError in any other error case.
41026                 </p></description>
41027             </descriptive>
41028           </RaiseException>
41029         </Raises>
41030       </Operation>
41031       <Operation name="unsetReceiveNDEFListener" id="::NFC::NFCPeer::unsetReceiveNDEFListener">
41032         <webidl>    void unsetReceiveNDEFListener() raises(<ref>WebAPIException</ref>);</webidl>
41033         <descriptive>
41034             <brief>
41035  Unregisters the listener for receiving NDEF messages from the NFC peer-to-peer target connected.
41036             </brief>
41037             <version>
41038  1.0
41039             </version>
41040             <privilege>
41041  http://tizen.org/privilege/nfc.p2p
41042             </privilege>
41043             <privilegelevel>
41044  public
41045             </privilegelevel>
41046             <Code> var adapter = tizen.nfc.getDefaultAdapter();
41047  var onSuccessCB = {onattach : function(nfcPeer) {
41048      console.log(&quot;NFC Target is detected&quot;);
41049      nfcPeer.setReceiveNDEFListener(
41050          function(message){
41051             console.log(&quot;Receive message&quot;);
41052             nfcPeer.unsetReceiveNDEFListener();
41053          });
41054    }, ondetach : function() {
41055      console.log(&quot;NFC Target is detached&quot;);
41056    }};
41057  }
41058
41059  adapter.setPeerListener(onSuccessCB);
41060  </Code>
41061         </descriptive>
41062         <Type type="void"/>
41063         <ArgumentList/>
41064         <Raises>
41065           <RaiseException name="WebAPIException">
41066             <descriptive>
41067                 <description><p>
41068  with error type SecurityError, if the application does not have the privilege to call this method.
41069                 </p></description>
41070                 <description><p>
41071  with error type ServiceNotAvailableError, if the NFC service is not available.
41072                 </p></description>
41073                 <description><p>
41074  with error type UnknownError in any other error case.
41075                 </p></description>
41076             </descriptive>
41077           </RaiseException>
41078         </Raises>
41079       </Operation>
41080       <Operation name="sendNDEF" id="::NFC::NFCPeer::sendNDEF">
41081         <webidl>    void sendNDEF(<ref>NDEFMessage</ref> ndefMessage,
41082                   optional <ref>SuccessCallback</ref>? successCallback,
41083                   optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
41084         <descriptive>
41085             <brief>
41086  Sends data to the NFC peer-to-peer target.
41087             </brief>
41088            <description>
41089             <p>
41090 The ErrorCallback is launched with these error types:
41091             </p>
41092             <ul>
41093               <li>
41094  InvalidValuesError: If any of the input parameters contain an invalid value.              </li>
41095               <li>
41096  ServiceNotAvailableError: If the NFC service is not available.               </li>
41097               <li>
41098  UnknownError: In any other error case.               </li>
41099             </ul>
41100            </description>
41101             <version>
41102  1.0
41103             </version>
41104             <privilege>
41105  http://tizen.org/privilege/nfc.p2p
41106             </privilege>
41107             <privilegelevel>
41108  public
41109             </privilegelevel>
41110         </descriptive>
41111         <Type type="void"/>
41112         <ArgumentList>
41113           <Argument name="ndefMessage">
41114             <descriptive>
41115                 <description><p>
41116  The NDEF message to send to NFC peer-to-peer target.
41117                 </p></description>
41118             </descriptive>
41119             <Type name="NDEFMessage"/>
41120           </Argument>
41121           <Argument optional="optional" name="successCallback">
41122             <descriptive>
41123                 <description><p>
41124  Invoked in case of successfully sending data to NFC peer-to-peer target.
41125                 </p></description>
41126             </descriptive>
41127             <Type name="SuccessCallback" nullable="nullable"/>
41128           </Argument>
41129           <Argument optional="optional" name="errorCallback">
41130             <descriptive>
41131                 <description><p>
41132  Invoked in case of any error during sending.
41133                 </p></description>
41134             </descriptive>
41135             <Type name="ErrorCallback" nullable="nullable"/>
41136           </Argument>
41137         </ArgumentList>
41138         <Raises>
41139           <RaiseException name="WebAPIException">
41140             <descriptive>
41141                 <description><p>
41142  with error type TypeMismatchError, if the input parameter
41143 is not compatible with the expected type for that parameter.
41144                 </p></description>
41145                 <description><p>
41146  with error type SecurityError, if the application does not have the privilege to call this method.
41147                 </p></description>
41148             </descriptive>
41149           </RaiseException>
41150         </Raises>
41151       </Operation>
41152     </Interface>
41153     <Interface name="NDEFMessage" id="::NFC::NDEFMessage">
41154       <webidl>  [Constructor(),
41155    Constructor(<ref>NDEFRecord</ref>[] ndefRecords),
41156    Constructor(byte[] rawData)]
41157   interface NDEFMessage {
41158     readonly attribute long recordCount;
41159     
41160     attribute <ref>NDEFRecord</ref>[] records;
41161
41162     byte[] toByte() raises(<ref>WebAPIException</ref>);
41163   };</webidl>
41164       <descriptive>
41165           <brief>
41166  The NDEFMessage interface. An NDEFmessage is composed of multiple NDEFRecords.
41167 The NDEFMessage must have at least one NDEFRecord.
41168           </brief>
41169           <version>
41170  1.0
41171           </version>
41172       </descriptive>
41173       <ExtendedAttributeList>
41174         <ExtendedAttribute name="Constructor">
41175           <webidl>Constructor()</webidl>
41176           <ArgumentList/>
41177         </ExtendedAttribute>
41178         <ExtendedAttribute name="Constructor">
41179           <webidl>   Constructor(<ref>NDEFRecord</ref>[] ndefRecords)</webidl>
41180           <ArgumentList>
41181             <Argument name="ndefRecords">
41182               <Type type="array">
41183                 <Type name="NDEFRecord"/>
41184               </Type>
41185             </Argument>
41186           </ArgumentList>
41187         </ExtendedAttribute>
41188         <ExtendedAttribute name="Constructor">
41189           <webidl>   Constructor(byte[] rawData)</webidl>
41190           <ArgumentList>
41191             <Argument name="rawData">
41192               <Type type="array">
41193                 <Type type="byte"/>
41194               </Type>
41195             </Argument>
41196           </ArgumentList>
41197         </ExtendedAttribute>
41198       </ExtendedAttributeList>
41199       <Attribute readonly="readonly" name="recordCount" id="::NFC::NDEFMessage::recordCount">
41200         <webidl>    readonly attribute long recordCount;</webidl>
41201         <descriptive>
41202             <brief>
41203  The number of records in the NDEFMessage.
41204             </brief>
41205             <version>
41206  1.0
41207             </version>
41208         </descriptive>
41209         <Type type="long"/>
41210       </Attribute>
41211       <Attribute name="records" id="::NFC::NDEFMessage::records">
41212         <webidl>    attribute <ref>NDEFRecord</ref>[] records;</webidl>
41213         <descriptive>
41214             <brief>
41215  The array of NDEFRecord objects in the NDEFMessage.
41216             </brief>
41217             <version>
41218  1.0
41219             </version>
41220         </descriptive>
41221         <Type type="array">
41222           <Type name="NDEFRecord"/>
41223         </Type>
41224       </Attribute>
41225       <Operation name="toByte" id="::NFC::NDEFMessage::toByte">
41226         <webidl>    byte[] toByte() raises(<ref>WebAPIException</ref>);</webidl>
41227         <descriptive>
41228             <brief>
41229  Gets the serial byte array of the NDEF message.
41230             </brief>
41231            <description>
41232             <p>
41233 If the operation completes successfully, it returns the serial byte array of the NDEF message.
41234             </p>
41235            </description>
41236             <version>
41237  1.0
41238             </version>
41239             <Code> // Gets the cached message.
41240  var cachedMessage = tizen.nfc.getDefaultAdapter().getCachedMessage();
41241  var raw = cachedMessage.toByte();
41242  </Code>
41243         </descriptive>
41244         <Type type="array">
41245           <descriptive>
41246               <description><p>
41247  byte[] The raw data in the NDEFMessage.
41248               </p></description>
41249           </descriptive>
41250           <Type type="byte"/>
41251         </Type>
41252         <ArgumentList/>
41253         <Raises>
41254           <RaiseException name="WebAPIException">
41255             <descriptive>
41256                 <description><p>
41257  with error type TypeMismatchError, if the records whose type is not NDEFRecord are included in the NDEFMessage.
41258                 </p></description>
41259                 <description><p>
41260  with error type UnknownError in any other error case.
41261                 </p></description>
41262             </descriptive>
41263           </RaiseException>
41264         </Raises>
41265       </Operation>
41266     </Interface>
41267     <Interface name="NDEFRecord" id="::NFC::NDEFRecord">
41268       <webidl>  [Constructor(short tnf, byte[] type, byte[] payload, optional byte[]? id),
41269    Constructor(byte[] raw_data)]
41270   interface NDEFRecord {
41271     readonly attribute short tnf;
41272
41273     readonly attribute byte[] type;
41274
41275     readonly attribute byte[] id;
41276     
41277     readonly attribute byte[] payload;
41278   };</webidl>
41279       <descriptive>
41280           <brief>
41281  The NDEFRecord interface.
41282           </brief>
41283           <version>
41284  1.0
41285           </version>
41286       </descriptive>
41287       <ExtendedAttributeList>
41288         <ExtendedAttribute name="Constructor">
41289           <webidl>Constructor(short tnf, byte[] type, byte[] payload, optional byte[]? id)</webidl>
41290           <ArgumentList>
41291             <Argument name="tnf">
41292               <Type type="short"/>
41293             </Argument>
41294             <Argument name="type">
41295               <Type type="array">
41296                 <Type type="byte"/>
41297               </Type>
41298             </Argument>
41299             <Argument name="payload">
41300               <Type type="array">
41301                 <Type type="byte"/>
41302               </Type>
41303             </Argument>
41304             <Argument optional="optional" name="id">
41305               <Type type="array" nullable="nullable">
41306                 <Type type="byte"/>
41307               </Type>
41308             </Argument>
41309           </ArgumentList>
41310         </ExtendedAttribute>
41311         <ExtendedAttribute name="Constructor">
41312           <webidl>   Constructor(byte[] raw_data)</webidl>
41313           <ArgumentList>
41314             <Argument name="raw_data">
41315               <Type type="array">
41316                 <Type type="byte"/>
41317               </Type>
41318             </Argument>
41319           </ArgumentList>
41320         </ExtendedAttribute>
41321       </ExtendedAttributeList>
41322       <Attribute readonly="readonly" name="tnf" id="::NFC::NDEFRecord::tnf">
41323         <webidl>    readonly attribute short tnf;</webidl>
41324         <descriptive>
41325             <brief>
41326  The value of the record type (TNF value).
41327             </brief>
41328            <description>
41329             <p>
41330 At least the following values must be supported:
41331             </p>
41332             <ul>
41333               <li>
41334 NFC_RECORD_TNF_EMPTY - The record type is empty              </li>
41335               <li>
41336 NFC_RECORD_TNF_WELL_KNOWN - Record Type Definition (RTD) format [NFC RTD]              </li>
41337               <li>
41338 NFC_RECORD_TNF_MIME_MEDIA - MIME media types in RFC 2046 [RFC 2046]              </li>
41339               <li>
41340 NFC_RECORD_TNF_URI - Absolute URI as defined in RFC 3986 [RFC 3986]              </li>
41341               <li>
41342 NFC_RECORD_TNF_EXTERNAL_RTD - NFC forum external type [NFC RTD]              </li>
41343               <li>
41344 NFC_RECORD_TNF_UNKNOWN - The payload type is unknown              </li>
41345               <li>
41346 NFC_RECORD_TNF_UNCHANGED - It means the payload is an intermediate or final chunk of a chunked NDEF record              </li>
41347             </ul>
41348            </description>
41349             <version>
41350  1.0
41351             </version>
41352         </descriptive>
41353         <Type type="short"/>
41354       </Attribute>
41355       <Attribute readonly="readonly" name="type" id="::NFC::NDEFRecord::type">
41356         <webidl>    readonly attribute byte[] type;</webidl>
41357         <descriptive>
41358             <brief>
41359  The specified type in byte array.
41360             </brief>
41361            <description>
41362             <p>
41363 The byte array contains <var>0</var> to <var>255</var> bytes.
41364             </p>
41365            </description>
41366             <version>
41367  1.0
41368             </version>
41369         </descriptive>
41370         <Type type="array">
41371           <Type type="byte"/>
41372         </Type>
41373       </Attribute>
41374       <Attribute readonly="readonly" name="id" id="::NFC::NDEFRecord::id">
41375         <webidl>    readonly attribute byte[] id;</webidl>
41376         <descriptive>
41377             <brief>
41378  The record ID.
41379             </brief>
41380            <description>
41381             <p>
41382 The byte array contains <var>0</var> to <var>255</var> bytes.
41383             </p>
41384             <p>
41385 By default, this attribute is set to an empty array.
41386             </p>
41387            </description>
41388             <version>
41389  1.0
41390             </version>
41391         </descriptive>
41392         <Type type="array">
41393           <Type type="byte"/>
41394         </Type>
41395       </Attribute>
41396       <Attribute readonly="readonly" name="payload" id="::NFC::NDEFRecord::payload">
41397         <webidl>    readonly attribute byte[] payload;</webidl>
41398         <descriptive>
41399             <brief>
41400  The record payload.
41401             </brief>
41402            <description>
41403             <p>
41404 The byte array contains <var>0</var> to <var>(2 ** 32 - 1)</var> bytes.
41405             </p>
41406            </description>
41407             <version>
41408  1.0
41409             </version>
41410             <Code> // Creates a new NDEF record.
41411  var newRecord = new tizen.NDEFRecordURI(&quot;https://www.tizen.org/&quot;);
41412  var payload = newRecord.payload;
41413  </Code>
41414         </descriptive>
41415         <Type type="array">
41416           <Type type="byte"/>
41417         </Type>
41418       </Attribute>
41419     </Interface>
41420     <Interface name="NDEFRecordText" id="::NFC::NDEFRecordText">
41421       <webidl>  [Constructor(DOMString text, DOMString languageCode, optional DOMString? encoding)]
41422   interface NDEFRecordText : <ref>NDEFRecord</ref> {
41423     readonly attribute DOMString text;
41424     
41425     readonly attribute DOMString languageCode;
41426     
41427     readonly attribute <ref>NDEFRecordTextEncoding</ref> encoding;
41428   };</webidl>
41429       <descriptive>
41430           <brief>
41431  The NDEFRecord that has the text type payload.
41432           </brief>
41433           <version>
41434  1.0
41435           </version>
41436       </descriptive>
41437       <ExtendedAttributeList>
41438         <ExtendedAttribute name="Constructor">
41439           <webidl>Constructor(DOMString text, DOMString languageCode, optional DOMString? encoding)</webidl>
41440           <ArgumentList>
41441             <Argument name="text">
41442               <Type type="DOMString"/>
41443             </Argument>
41444             <Argument name="languageCode">
41445               <Type type="DOMString"/>
41446             </Argument>
41447             <Argument optional="optional" name="encoding">
41448               <Type type="DOMString" nullable="nullable"/>
41449             </Argument>
41450           </ArgumentList>
41451         </ExtendedAttribute>
41452       </ExtendedAttributeList>
41453       <InterfaceInheritance>
41454         <Name name="NDEFRecord"/>
41455       </InterfaceInheritance>
41456       <Attribute readonly="readonly" name="text" id="::NFC::NDEFRecordText::text">
41457         <webidl>    readonly attribute DOMString text;</webidl>
41458         <descriptive>
41459             <brief>
41460  The encoded text.
41461             </brief>
41462             <version>
41463  1.0
41464             </version>
41465         </descriptive>
41466         <Type type="DOMString"/>
41467       </Attribute>
41468       <Attribute readonly="readonly" name="languageCode" id="::NFC::NDEFRecordText::languageCode">
41469         <webidl>    readonly attribute DOMString languageCode;</webidl>
41470         <descriptive>
41471             <brief>
41472  The language code string value, followed by IANA[RFC 3066] (for example, en-US, ko-KR).
41473             </brief>
41474             <version>
41475  1.0
41476             </version>
41477         </descriptive>
41478         <Type type="DOMString"/>
41479       </Attribute>
41480       <Attribute readonly="readonly" name="encoding" id="::NFC::NDEFRecordText::encoding">
41481         <webidl>    readonly attribute <ref>NDEFRecordTextEncoding</ref> encoding;</webidl>
41482         <descriptive>
41483             <brief>
41484  The encoding type. By default, this attribute is set to UTF8.
41485             </brief>
41486             <version>
41487  1.0
41488             </version>
41489         </descriptive>
41490         <Type name="NDEFRecordTextEncoding"/>
41491       </Attribute>
41492     </Interface>
41493     <Interface name="NDEFRecordURI" id="::NFC::NDEFRecordURI">
41494       <webidl>  [Constructor(DOMString uri)]
41495   interface NDEFRecordURI : <ref>NDEFRecord</ref> {
41496     readonly attribute DOMString uri;
41497   };</webidl>
41498       <descriptive>
41499           <brief>
41500  The NDEFRecord that has URI type payload.
41501           </brief>
41502           <version>
41503  1.0
41504           </version>
41505       </descriptive>
41506       <ExtendedAttributeList>
41507         <ExtendedAttribute name="Constructor">
41508           <webidl>Constructor(DOMString uri)</webidl>
41509           <ArgumentList>
41510             <Argument name="uri">
41511               <Type type="DOMString"/>
41512             </Argument>
41513           </ArgumentList>
41514         </ExtendedAttribute>
41515       </ExtendedAttributeList>
41516       <InterfaceInheritance>
41517         <Name name="NDEFRecord"/>
41518       </InterfaceInheritance>
41519       <Attribute readonly="readonly" name="uri" id="::NFC::NDEFRecordURI::uri">
41520         <webidl>    readonly attribute DOMString uri;</webidl>
41521         <descriptive>
41522             <brief>
41523  The URI string that is stored in the payload.
41524             </brief>
41525             <version>
41526  1.0
41527             </version>
41528         </descriptive>
41529         <Type type="DOMString"/>
41530       </Attribute>
41531     </Interface>
41532     <Interface name="NDEFRecordMedia" id="::NFC::NDEFRecordMedia">
41533       <webidl>  [Constructor(DOMString mimeType, byte[] data)]
41534   interface NDEFRecordMedia : <ref>NDEFRecord</ref> {
41535     readonly attribute DOMString mimeType;
41536   };</webidl>
41537       <descriptive>
41538           <brief>
41539  The NDEFRecord that has mime type payload.
41540           </brief>
41541           <version>
41542  1.0
41543           </version>
41544       </descriptive>
41545       <ExtendedAttributeList>
41546         <ExtendedAttribute name="Constructor">
41547           <webidl>Constructor(DOMString mimeType, byte[] data)</webidl>
41548           <descriptive>
41549              <description>
41550               <ul>
41551                 <li>
41552 <b>data</b> : Mime type payload. The byte array contains <var>0</var> to <var>(2 ** 32 - 1)</var> bytes.                </li>
41553               </ul>
41554              </description>
41555           </descriptive>
41556           <ArgumentList>
41557             <Argument name="mimeType">
41558               <Type type="DOMString"/>
41559             </Argument>
41560             <Argument name="data">
41561               <Type type="array">
41562                 <Type type="byte"/>
41563               </Type>
41564             </Argument>
41565           </ArgumentList>
41566         </ExtendedAttribute>
41567       </ExtendedAttributeList>
41568       <InterfaceInheritance>
41569         <Name name="NDEFRecord"/>
41570       </InterfaceInheritance>
41571       <Attribute readonly="readonly" name="mimeType" id="::NFC::NDEFRecordMedia::mimeType">
41572         <webidl>    readonly attribute DOMString mimeType;</webidl>
41573         <descriptive>
41574             <brief>
41575  The mime type [RFC 2046] (for example, text/plain, image/jpeg ).
41576             </brief>
41577             <version>
41578  1.0
41579             </version>
41580         </descriptive>
41581         <Type type="DOMString"/>
41582       </Attribute>
41583     </Interface>
41584     <Interface name="NFCTagDetectCallback" id="::NFC::NFCTagDetectCallback">
41585       <webidl>  [Callback, NoInterfaceObject] interface NFCTagDetectCallback {
41586     void onattach(<ref>NFCTag</ref> nfcTag);
41587     void ondetach();
41588   };</webidl>
41589       <descriptive>
41590           <brief>
41591  The success callback to be invoked when an NFC tag is detected or lost.
41592           </brief>
41593          <description>
41594           <p>
41595 This callback interface specifies two methods:
41596           </p>
41597           <ul>
41598             <li>
41599  onattach: invoked when an NFC tag is detected            </li>
41600             <li>
41601  ondetach: invoked when the NFC tag is lost            </li>
41602           </ul>
41603           <p>
41604 It is used in NFCAdapter.setTagListener().
41605           </p>
41606          </description>
41607           <version>
41608  1.0
41609           </version>
41610       </descriptive>
41611       <ExtendedAttributeList>
41612         <ExtendedAttribute name="Callback">
41613           <webidl>Callback</webidl>
41614         </ExtendedAttribute>
41615         <ExtendedAttribute name="NoInterfaceObject">
41616           <webidl> NoInterfaceObject</webidl>
41617         </ExtendedAttribute>
41618       </ExtendedAttributeList>
41619       <Operation name="onattach" id="::NFC::NFCTagDetectCallback::onattach">
41620         <webidl>    void onattach(<ref>NFCTag</ref> nfcTag);</webidl>
41621         <descriptive>
41622             <brief>
41623  The method invoked when a tag is attached.
41624             </brief>
41625             <version>
41626  1.0
41627             </version>
41628         </descriptive>
41629         <Type type="void"/>
41630         <ArgumentList>
41631           <Argument name="nfcTag">
41632             <descriptive>
41633                 <description><p>
41634  The attached NFC tag.
41635                 </p></description>
41636             </descriptive>
41637             <Type name="NFCTag"/>
41638           </Argument>
41639         </ArgumentList>
41640       </Operation>
41641       <Operation name="ondetach" id="::NFC::NFCTagDetectCallback::ondetach">
41642         <webidl>    void ondetach();</webidl>
41643         <descriptive>
41644             <brief>
41645  The method invoked when the connected tag is detached.
41646             </brief>
41647             <version>
41648  1.0
41649             </version>
41650         </descriptive>
41651         <Type type="void"/>
41652         <ArgumentList/>
41653       </Operation>
41654     </Interface>
41655     <Interface name="NFCPeerDetectCallback" id="::NFC::NFCPeerDetectCallback">
41656       <webidl>  [Callback, NoInterfaceObject] interface NFCPeerDetectCallback {
41657     void onattach(<ref>NFCPeer</ref> nfcPeer);
41658     void ondetach();
41659   };</webidl>
41660       <descriptive>
41661           <brief>
41662  The success callback to be invoked when an NFC peer-to-peer target is detected or lost.
41663           </brief>
41664          <description>
41665           <p>
41666 This callback interface specifies two methods:
41667           </p>
41668           <ul>
41669             <li>
41670  onattach: invoked when an NFC peer-to-peer target is detected            </li>
41671             <li>
41672  ondetach: invoked when the NFC peer-to-peer target is lost            </li>
41673           </ul>
41674           <p>
41675 It is used in NFCAdapter.setPeerListener().
41676           </p>
41677          </description>
41678           <version>
41679  1.0
41680           </version>
41681       </descriptive>
41682       <ExtendedAttributeList>
41683         <ExtendedAttribute name="Callback">
41684           <webidl>Callback</webidl>
41685         </ExtendedAttribute>
41686         <ExtendedAttribute name="NoInterfaceObject">
41687           <webidl> NoInterfaceObject</webidl>
41688         </ExtendedAttribute>
41689       </ExtendedAttributeList>
41690       <Operation name="onattach" id="::NFC::NFCPeerDetectCallback::onattach">
41691         <webidl>    void onattach(<ref>NFCPeer</ref> nfcPeer);</webidl>
41692         <descriptive>
41693             <brief>
41694  The method invoked when the NFC peer-to-peer target is attached.
41695             </brief>
41696             <version>
41697  1.0
41698             </version>
41699         </descriptive>
41700         <Type type="void"/>
41701         <ArgumentList>
41702           <Argument name="nfcPeer">
41703             <descriptive>
41704                 <description><p>
41705  The attached NFC peer-to-peer target.
41706                 </p></description>
41707             </descriptive>
41708             <Type name="NFCPeer"/>
41709           </Argument>
41710         </ArgumentList>
41711       </Operation>
41712       <Operation name="ondetach" id="::NFC::NFCPeerDetectCallback::ondetach">
41713         <webidl>    void ondetach();</webidl>
41714         <descriptive>
41715             <brief>
41716  The method invoked when the NFC peer-to-peer target connected is detached.
41717             </brief>
41718             <version>
41719  1.0
41720             </version>
41721         </descriptive>
41722         <Type type="void"/>
41723         <ArgumentList/>
41724       </Operation>
41725     </Interface>
41726     <Interface name="NDEFMessageReadCallback" id="::NFC::NDEFMessageReadCallback">
41727       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface NDEFMessageReadCallback {
41728     void onsuccess(<ref>NDEFMessage</ref> ndefMessage);
41729   };</webidl>
41730       <descriptive>
41731           <brief>
41732  The success callback to be invoked when data has been read successfully from the NFC tag or target.
41733           </brief>
41734          <description>
41735           <p>
41736 This callback interface specifies a success method with 
41737 an NDEF message as an input parameter.
41738 It is used in asynchronous
41739 operations, such as NFCTag.readNDEF() or NFCPeer.setReceiveNDEFListener().
41740           </p>
41741          </description>
41742           <version>
41743  1.0
41744           </version>
41745       </descriptive>
41746       <ExtendedAttributeList>
41747         <ExtendedAttribute name="Callback" value="FunctionOnly">
41748           <webidl>Callback</webidl>
41749         </ExtendedAttribute>
41750         <ExtendedAttribute name="NoInterfaceObject">
41751           <webidl> NoInterfaceObject</webidl>
41752         </ExtendedAttribute>
41753       </ExtendedAttributeList>
41754       <Operation name="onsuccess" id="::NFC::NDEFMessageReadCallback::onsuccess">
41755         <webidl>    void onsuccess(<ref>NDEFMessage</ref> ndefMessage);</webidl>
41756         <descriptive>
41757             <brief>
41758  The method invoked when the asynchronous call completes successfully.
41759             </brief>
41760             <version>
41761  1.0
41762             </version>
41763         </descriptive>
41764         <Type type="void"/>
41765         <ArgumentList>
41766           <Argument name="ndefMessage">
41767             <descriptive>
41768                 <description><p>
41769  NDEF message that is read from the NFC tag or target.
41770                 </p></description>
41771             </descriptive>
41772             <Type name="NDEFMessage"/>
41773           </Argument>
41774         </ArgumentList>
41775       </Operation>
41776     </Interface>
41777     <Interface name="ByteArraySuccessCallback" id="::NFC::ByteArraySuccessCallback">
41778       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface ByteArraySuccessCallback {
41779     void onsuccess(byte[] data);
41780   };</webidl>
41781       <descriptive>
41782           <brief>
41783  The success callback to be invoked when NFCTag.transceive() completes successfully.
41784           </brief>
41785          <description>
41786           <p>
41787 This callback interface specifies a success method, with
41788 a raw data as an input parameter. It is used in NFCTag.transceive().
41789           </p>
41790          </description>
41791           <version>
41792  1.0
41793           </version>
41794       </descriptive>
41795       <ExtendedAttributeList>
41796         <ExtendedAttribute name="Callback" value="FunctionOnly">
41797           <webidl>Callback</webidl>
41798         </ExtendedAttribute>
41799         <ExtendedAttribute name="NoInterfaceObject">
41800           <webidl> NoInterfaceObject</webidl>
41801         </ExtendedAttribute>
41802       </ExtendedAttributeList>
41803       <Operation name="onsuccess" id="::NFC::ByteArraySuccessCallback::onsuccess">
41804         <webidl>    void onsuccess(byte[] data);</webidl>
41805         <descriptive>
41806             <brief>
41807  The method invoked when the asynchronous call completes successfully.
41808             </brief>
41809             <version>
41810  1.0
41811             </version>
41812         </descriptive>
41813         <Type type="void"/>
41814         <ArgumentList>
41815           <Argument name="data">
41816             <descriptive>
41817                 <description><p>
41818  The raw data that is read from NFC tag or response of transceive operation.
41819                 </p></description>
41820             </descriptive>
41821             <Type type="array">
41822               <Type type="byte"/>
41823             </Type>
41824           </Argument>
41825         </ArgumentList>
41826       </Operation>
41827     </Interface>
41828   </Module>
41829   <Module name="Notification" id="::Notification">
41830     <webidl>module Notification {
41831
41832     typedef DOMString NotificationId;
41833     
41834     enum NotificationType { &quot;STATUS&quot; };
41835
41836     enum StatusNotificationType { &quot;SIMPLE&quot;, &quot;THUMBNAIL&quot;, &quot;ONGOING&quot;, &quot;PROGRESS&quot; };
41837
41838     enum NotificationProgressType { &quot;PERCENTAGE&quot;,  &quot;BYTE&quot; };
41839
41840
41841     [NoInterfaceObject] interface NotificationObject {
41842         readonly attribute <ref>NotificationManager</ref> notification;
41843     };
41844     <ref>Tizen</ref> implements <ref>NotificationObject</ref>;
41845
41846     [NoInterfaceObject] interface NotificationManager {
41847
41848     void post(<ref>Notification</ref> notification) raises(<ref>WebAPIException</ref>);
41849
41850     void update(<ref>Notification</ref> notification) raises(<ref>WebAPIException</ref>);
41851
41852     void remove(<ref>NotificationId</ref> id) raises(<ref>WebAPIException</ref>);
41853
41854     void removeAll() raises(<ref>WebAPIException</ref>);
41855
41856     <ref>Notification</ref> get(<ref>NotificationId</ref> id) raises(<ref>WebAPIException</ref>);
41857
41858     <ref>Notification</ref>[] getAll() raises(<ref>WebAPIException</ref>);
41859
41860     };
41861
41862     
41863     [NoInterfaceObject] interface Notification {
41864     
41865     
41866     readonly attribute <ref>NotificationId</ref> id;
41867
41868     readonly attribute <ref>NotificationType</ref> type;
41869
41870     readonly attribute Date postedTime;
41871
41872     attribute DOMString title;
41873
41874     attribute DOMString? content;
41875
41876     };
41877
41878        
41879     dictionary StatusNotificationInit {
41880         DOMString? content;
41881         DOMString? iconPath; 
41882         DOMString? soundPath;
41883         boolean? vibration;
41884         <ref>ApplicationControl</ref>? appControl;
41885         <ref>ApplicationId</ref>? appId;
41886         <ref>NotificationProgressType</ref>? progressType;
41887         unsigned long? progressValue;
41888         long? number;
41889         DOMString? subIconPath;
41890         <ref>NotificationDetailInfo</ref>[]? detailInfo;
41891         DOMString? ledColor;
41892         unsigned long ledOnPeriod;
41893         unsigned long ledOffPeriod;
41894         DOMString? backgroundImagePath;
41895         DOMString[]? thumbnails;
41896     };
41897     
41898    [Constructor(<ref>StatusNotificationType</ref> statusType, DOMString title, optional <ref>StatusNotificationInit</ref>? notificationInitDict)]
41899
41900
41901     interface StatusNotification : <ref>Notification</ref> {
41902
41903     readonly attribute <ref>StatusNotificationType</ref> statusType;
41904     
41905     attribute DOMString? iconPath;
41906
41907     attribute DOMString? subIconPath;
41908
41909     attribute long? number;
41910     
41911     attribute <ref>NotificationDetailInfo</ref>[]? detailInfo;
41912
41913     attribute DOMString? ledColor;
41914
41915     attribute unsigned long ledOnPeriod;
41916
41917     attribute unsigned long ledOffPeriod;
41918
41919      attribute DOMString? backgroundImagePath;
41920
41921      attribute DOMString[]? thumbnails;
41922
41923      attribute DOMString? soundPath;
41924   
41925      attribute boolean vibration;
41926
41927      attribute <ref>ApplicationControl</ref>? appControl;
41928
41929      attribute <ref>ApplicationId</ref>? appId;
41930
41931      attribute <ref>NotificationProgressType</ref> progressType;  
41932
41933      attribute unsigned long? progressValue;
41934     };
41935
41936
41937 [Constructor(DOMString mainText, optional DOMString? subText)]
41938     interface NotificationDetailInfo {
41939     attribute DOMString mainText;
41940
41941     attribute DOMString? subText;
41942     };
41943     
41944 };</webidl>
41945     <descriptive>
41946         <brief>
41947  The Notification API provides a way to notify users of events that happen in an application.
41948         </brief>
41949        <description>
41950         <p>
41951 For more information on the Notification features, see <a href="../../org.tizen.web.appprogramming/html/guide/ui_guide/notification.htm">Notification Guide</a>.
41952         </p>
41953        </description>
41954         <version>
41955  2.0
41956         </version>
41957     </descriptive>
41958     <Typedef name="NotificationId" id="::Notification::NotificationId">
41959       <webidl>    typedef DOMString NotificationId;</webidl>
41960       <descriptive>
41961           <brief>
41962  A notification ID.
41963           </brief>
41964           <version>
41965  2.0
41966           </version>
41967       </descriptive>
41968       <Type type="DOMString"/>
41969     </Typedef>
41970     <Enum name="NotificationType" id="::Notification::NotificationType">
41971       <webidl>    enum NotificationType { &quot;STATUS&quot; };</webidl>
41972       <descriptive>
41973           <brief>
41974  A notification type.
41975           </brief>
41976          <description>
41977           <p>
41978 The following notification type is supported: 
41979           </p>
41980           <ul>
41981             <li>
41982 STATUS - The posted status notification is displayed in status bar and the notification tray.
41983 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>
41984           </ul>
41985          </description>
41986           <version>
41987  2.0
41988           </version>
41989       </descriptive>
41990       <EnumValue stringvalue="STATUS">
41991         <webidl> &quot;STATUS</webidl>
41992       </EnumValue>
41993     </Enum>
41994     <Enum name="StatusNotificationType" id="::Notification::StatusNotificationType">
41995       <webidl>    enum StatusNotificationType { &quot;SIMPLE&quot;, &quot;THUMBNAIL&quot;, &quot;ONGOING&quot;, &quot;PROGRESS&quot; };</webidl>
41996       <descriptive>
41997           <brief>
41998  A status notification type.
41999           </brief>
42000          <description>
42001           <p>
42002 The following status notification types are supported: 
42003           </p>
42004           <ul>
42005             <li>
42006 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>
42007             <li>
42008 THUMBNAIL - The thumbnail status notification posts a thumbnail-format notification which includes several thumbnail image paths.
42009 The thumbnail status notification is also removed by a user selection.
42010             </li>
42011             <li>
42012 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>
42013             <li>
42014 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>
42015           </ul>
42016          </description>
42017           <version>
42018  2.0
42019           </version>
42020       </descriptive>
42021       <EnumValue stringvalue="SIMPLE">
42022         <webidl> &quot;SIMPLE</webidl>
42023       </EnumValue>
42024       <EnumValue stringvalue="THUMBNAIL">
42025         <webidl> &quot;THUMBNAIL</webidl>
42026       </EnumValue>
42027       <EnumValue stringvalue="ONGOING">
42028         <webidl> &quot;ONGOING</webidl>
42029       </EnumValue>
42030       <EnumValue stringvalue="PROGRESS">
42031         <webidl> &quot;PROGRESS</webidl>
42032       </EnumValue>
42033     </Enum>
42034     <Enum name="NotificationProgressType" id="::Notification::NotificationProgressType">
42035       <webidl>    enum NotificationProgressType { &quot;PERCENTAGE&quot;,  &quot;BYTE&quot; };</webidl>
42036       <descriptive>
42037           <brief>
42038  A notification progress type.
42039           </brief>
42040          <description>
42041           <p>
42042 Supporting notification progress types are: 
42043           </p>
42044           <ul>
42045             <li>
42046  &quot;BYTE&quot; - The progress is indicated in bytes.            </li>
42047             <li>
42048  &quot;PERCENTAGE&quot; -The progress is indicated in percentage.            </li>
42049           </ul>
42050          </description>
42051           <version>
42052  2.1
42053           </version>
42054       </descriptive>
42055       <EnumValue stringvalue="PERCENTAGE">
42056         <webidl> &quot;PERCENTAGE</webidl>
42057       </EnumValue>
42058       <EnumValue stringvalue="BYTE">
42059         <webidl>  &quot;BYTE</webidl>
42060       </EnumValue>
42061     </Enum>
42062     <Interface name="NotificationObject" id="::Notification::NotificationObject">
42063       <webidl>    [NoInterfaceObject] interface NotificationObject {
42064         readonly attribute <ref>NotificationManager</ref> notification;
42065     };</webidl>
42066       <descriptive>
42067           <brief>
42068  Defines what is instantiated by the <em>Tizen</em> object.
42069           </brief>
42070          <description>
42071           <p>
42072 There is a <em>tizen.notification</em> object that allows access to the
42073 Notification API.
42074           </p>
42075          </description>
42076           <version>
42077  2.0
42078           </version>
42079       </descriptive>
42080       <ExtendedAttributeList>
42081         <ExtendedAttribute name="NoInterfaceObject">
42082           <webidl>NoInterfaceObject</webidl>
42083         </ExtendedAttribute>
42084       </ExtendedAttributeList>
42085       <Attribute readonly="readonly" name="notification" id="::Notification::NotificationObject::notification">
42086         <webidl>        readonly attribute <ref>NotificationManager</ref> notification;</webidl>
42087         <Type name="NotificationManager"/>
42088       </Attribute>
42089     </Interface>
42090     <Implements name1="Tizen" name2="NotificationObject">
42091       <webidl>    <ref>Tizen</ref> implements <ref>NotificationObject</ref>;</webidl>
42092     </Implements>
42093     <Interface name="NotificationManager" id="::Notification::NotificationManager">
42094       <webidl>    [NoInterfaceObject] interface NotificationManager {
42095
42096     void post(<ref>Notification</ref> notification) raises(<ref>WebAPIException</ref>);
42097
42098     void update(<ref>Notification</ref> notification) raises(<ref>WebAPIException</ref>);
42099
42100     void remove(<ref>NotificationId</ref> id) raises(<ref>WebAPIException</ref>);
42101
42102     void removeAll() raises(<ref>WebAPIException</ref>);
42103
42104     <ref>Notification</ref> get(<ref>NotificationId</ref> id) raises(<ref>WebAPIException</ref>);
42105
42106     <ref>Notification</ref>[] getAll() raises(<ref>WebAPIException</ref>);
42107
42108     };</webidl>
42109       <descriptive>
42110           <brief>
42111  Notification manager interface that provides access to the API.
42112           </brief>
42113          <description>
42114           <p>
42115 This interface provides access to the notification object.
42116           </p>
42117          </description>
42118           <version>
42119  2.0
42120           </version>
42121       </descriptive>
42122       <ExtendedAttributeList>
42123         <ExtendedAttribute name="NoInterfaceObject">
42124           <webidl>NoInterfaceObject</webidl>
42125         </ExtendedAttribute>
42126       </ExtendedAttributeList>
42127       <Operation name="post" id="::Notification::NotificationManager::post">
42128         <webidl>    void post(<ref>Notification</ref> notification) raises(<ref>WebAPIException</ref>);</webidl>
42129         <descriptive>
42130             <brief>
42131  Posts a notification to display.
42132             </brief>
42133             <version>
42134  2.0
42135             </version>
42136             <privilegelevel>
42137  public
42138             </privilegelevel>
42139             <privilege>
42140  http://tizen.org/privilege/notification
42141             </privilege>
42142             <Code> try {
42143       var appControl = new tizen.ApplicationControl(
42144                        &quot;http://tizen.org/appcontrol/operation/create_content&quot;,
42145                        null,
42146                        &quot;image/jpg&quot;,
42147                        null);
42148       var notificationDict = {
42149                   content : &quot;This is a simple notification.&quot;,
42150                   iconPath : &quot;images/image1.jpg&quot;,
42151                   soundPath : &quot;music/Over the horizon.mp3&quot;, 
42152                   vibration : true, 
42153                   appControl : appControl};
42154        
42155       var notification = new tizen.StatusNotification(&quot;SIMPLE&quot;, 
42156                   &quot;Simple notification&quot;, notificationDict);
42157                        
42158       tizen.notification.post(notification);
42159  } catch (err) {
42160       console.log (err.name + &quot;: &quot; + err.message);
42161  }
42162  </Code>
42163         </descriptive>
42164         <Type type="void"/>
42165         <ArgumentList>
42166           <Argument name="notification">
42167             <descriptive>
42168                 <description><p>
42169  A notification to post.
42170                 </p></description>
42171             </descriptive>
42172             <Type name="Notification"/>
42173           </Argument>
42174         </ArgumentList>
42175         <Raises>
42176           <RaiseException name="WebAPIException">
42177             <descriptive>
42178                 <description><p>
42179  with error type TypeMismatchError, if any of the input parameter is not compatible with the expected type for that parameter.
42180                 </p></description>
42181                 <description><p>
42182  with error type InvalidValuesError, if any of the input 
42183 parameters contain an invalid value.
42184                 </p></description>
42185                 <description><p>
42186  with error type SecurityError, if the application does not have the privilege to call this method.
42187                 </p></description>
42188                 <description><p>
42189  with error type UnknownError if any other error occurs. 
42190                 </p></description>
42191             </descriptive>
42192           </RaiseException>
42193         </Raises>
42194       </Operation>
42195       <Operation name="update" id="::Notification::NotificationManager::update">
42196         <webidl>    void update(<ref>Notification</ref> notification) raises(<ref>WebAPIException</ref>);</webidl>
42197         <descriptive>
42198             <brief>
42199  Updates a previously posted notification. 
42200             </brief>
42201             <version>
42202  2.0
42203             </version>
42204             <privilegelevel>
42205  public
42206             </privilegelevel>
42207             <privilege>
42208  http://tizen.org/privilege/notification
42209             </privilege>
42210             <Code> try {
42211       // Uses a variable for the previously posted notification.
42212       notification.content = &quot;My notification&quot;;
42213       tizen.notification.update(notification); 
42214  } catch (err) {
42215       console.log (err.name + &quot;: &quot; + err.message);
42216  }
42217    
42218 </Code>
42219         </descriptive>
42220         <Type type="void"/>
42221         <ArgumentList>
42222           <Argument name="notification">
42223             <descriptive>
42224                 <description><p>
42225  A notification to update.
42226                 </p></description>
42227             </descriptive>
42228             <Type name="Notification"/>
42229           </Argument>
42230         </ArgumentList>
42231         <Raises>
42232           <RaiseException name="WebAPIException">
42233             <descriptive>
42234                 <description><p>
42235  with error type TypeMismatchError, if any of the input parameter is not compatible with the expected type for that parameter.
42236                 </p></description>
42237                 <description><p>
42238  with error type InvalidValuesError, if any of the input 
42239 parameters contain an invalid value.
42240                 </p></description>
42241                 <description><p>
42242  with error type SecurityError, if the application does not have the privilege to call this method.
42243                 </p></description>
42244                 <description><p>
42245  with error type UnknownError if any other error occurs. 
42246                 </p></description>
42247             </descriptive>
42248           </RaiseException>
42249         </Raises>
42250       </Operation>
42251       <Operation name="remove" id="::Notification::NotificationManager::remove">
42252         <webidl>    void remove(<ref>NotificationId</ref> id) raises(<ref>WebAPIException</ref>);</webidl>
42253         <descriptive>
42254             <brief>
42255  Removes a previously posted notification. 
42256             </brief>
42257             <version>
42258  2.0
42259             </version>
42260             <privilegelevel>
42261  public
42262             </privilegelevel>
42263             <privilege>
42264  http://tizen.org/privilege/notification
42265             </privilege>
42266             <Code> try {
42267       // Uses a variable for the previously posted notification.
42268       tizen.notification.remove(notification.id); 
42269  } catch (err) {
42270       console.log (err.name + &quot;: &quot; + err.message);
42271  }
42272    
42273 </Code>
42274         </descriptive>
42275         <Type type="void"/>
42276         <ArgumentList>
42277           <Argument name="id">
42278             <descriptive>
42279                 <description><p>
42280  A previously posted notification ID to remove.
42281                 </p></description>
42282             </descriptive>
42283             <Type name="NotificationId"/>
42284           </Argument>
42285         </ArgumentList>
42286         <Raises>
42287           <RaiseException name="WebAPIException">
42288             <descriptive>
42289                 <description><p>
42290  with error type TypeMismatchError, if any of the input parameter is not compatible with the expected type for that parameter.
42291                 </p></description>
42292                 <description><p>
42293  with error type NotFoundError, if NotificationId is not found in the previously posted notifications.
42294                 </p></description>
42295                 <description><p>
42296  with error type SecurityError, if the application does not have the privilege to call this method.
42297                 </p></description>
42298                 <description><p>
42299  with error type UnknownError if any other error occurs. 
42300                 </p></description>
42301             </descriptive>
42302           </RaiseException>
42303         </Raises>
42304       </Operation>
42305       <Operation name="removeAll" id="::Notification::NotificationManager::removeAll">
42306         <webidl>    void removeAll() raises(<ref>WebAPIException</ref>);</webidl>
42307         <descriptive>
42308             <brief>
42309  Removes all notifications that have been posted by the current application.
42310             </brief>
42311             <version>
42312  2.0
42313             </version>
42314             <privilegelevel>
42315  public
42316             </privilegelevel>
42317             <privilege>
42318  http://tizen.org/privilege/notification
42319             </privilege>
42320             <Code> try {
42321       tizen.notification.removeAll(); 
42322  } catch (err) {
42323       console.log (err.name + &quot;: &quot; + err.message);
42324  }
42325    
42326 </Code>
42327         </descriptive>
42328         <Type type="void"/>
42329         <ArgumentList/>
42330         <Raises>
42331           <RaiseException name="WebAPIException">
42332             <descriptive>
42333                 <description><p>
42334  with error type SecurityError, if the application does not have the privilege to call this method.
42335                 </p></description>
42336                 <description><p>
42337  with error type UnknownError if any other error occurs. 
42338                 </p></description>
42339             </descriptive>
42340           </RaiseException>
42341         </Raises>
42342       </Operation>
42343       <Operation name="get" id="::Notification::NotificationManager::get">
42344         <webidl>    <ref>Notification</ref> get(<ref>NotificationId</ref> id) raises(<ref>WebAPIException</ref>);</webidl>
42345         <descriptive>
42346             <brief>
42347  Gets a notification that has previously been posted by the current application. Note that the obtaining notification's progressType is <em>PERCENTAGE</em>            </brief>
42348             <version>
42349  2.0
42350             </version>
42351             <Code> try {
42352       // Uses a variable for the previously posted notification
42353       // Saves notification ID for future use
42354       var myId = notification.id;
42355        
42356       var myNotification = tizen.notification.get(myId); 
42357  } catch (err) {
42358       console.log (err.name + &quot;: &quot; + err.message);
42359  }
42360    
42361 </Code>
42362         </descriptive>
42363         <Type name="Notification"/>
42364         <ArgumentList>
42365           <Argument name="id">
42366             <descriptive>
42367                 <description><p>
42368  A previously posted notification ID.
42369                 </p></description>
42370             </descriptive>
42371             <Type name="NotificationId"/>
42372           </Argument>
42373         </ArgumentList>
42374         <Raises>
42375           <RaiseException name="WebAPIException">
42376             <descriptive>
42377                 <description><p>
42378  with error type NotFoundError, if NotificationId is not found in the previously posted notifications.
42379                 </p></description>
42380                 <description><p>
42381  with error type UnknownError if any other error occurs. 
42382                 </p></description>
42383             </descriptive>
42384           </RaiseException>
42385         </Raises>
42386       </Operation>
42387       <Operation name="getAll" id="::Notification::NotificationManager::getAll">
42388         <webidl>    <ref>Notification</ref>[] getAll() raises(<ref>WebAPIException</ref>);</webidl>
42389         <descriptive>
42390             <brief>
42391  Gets all notifications that have previously been posted by the current application. Note that the obtaining notification's progressType is <em>PERCENTAGE</em>            </brief>
42392             <version>
42393  2.0
42394             </version>
42395             <Code> try {
42396      var notifications = tizen.notification.getAll();
42397      var index = 0;
42398      
42399      for ( index = 0; notifications.length > index; index++ )
42400      {
42401          console.log(notifications[index].id);
42402          console.log(notifications[index].title);
42403          console.log(notifications[index].statusType);
42404          console.log(notifications[index].type);
42405          console.log(notifications[index].content);
42406          console.log(notifications[index].postedTime);
42407          console.log(notifications[index].iconPath);
42408          console.log(notifications[index].soundPath);
42409          console.log(notifications[index].vibration);
42410          console.log(notifications[index].appControl);
42411      }
42412  } catch (err) {
42413      console.log (err.name + &quot;: &quot; + err.message);
42414  }
42415  </Code>
42416         </descriptive>
42417         <Type type="array">
42418           <Type name="Notification"/>
42419         </Type>
42420         <ArgumentList/>
42421         <Raises>
42422           <RaiseException name="WebAPIException">
42423             <descriptive>
42424                 <description><p>
42425  with error type UnknownError, if any other error occurs. 
42426                 </p></description>
42427             </descriptive>
42428           </RaiseException>
42429         </Raises>
42430       </Operation>
42431     </Interface>
42432     <Interface name="Notification" id="::Notification::Notification">
42433       <webidl>    [NoInterfaceObject] interface Notification {
42434     
42435     
42436     readonly attribute <ref>NotificationId</ref> id;
42437
42438     readonly attribute <ref>NotificationType</ref> type;
42439
42440     readonly attribute Date postedTime;
42441
42442     attribute DOMString title;
42443
42444     attribute DOMString? content;
42445
42446     };</webidl>
42447       <descriptive>
42448           <brief>
42449  This interface offers common attributes to represent <em>Notification</em> object.
42450           </brief>
42451           <version>
42452  2.0
42453           </version>
42454       </descriptive>
42455       <ExtendedAttributeList>
42456         <ExtendedAttribute name="NoInterfaceObject">
42457           <webidl>NoInterfaceObject</webidl>
42458         </ExtendedAttribute>
42459       </ExtendedAttributeList>
42460       <Attribute readonly="readonly" name="id" id="::Notification::Notification::id">
42461         <webidl>    readonly attribute <ref>NotificationId</ref> id;</webidl>
42462         <descriptive>
42463             <brief>
42464  The Notification identifier. Before the notification is posted, this value is undefined.
42465             </brief>
42466             <version>
42467  2.0
42468             </version>
42469         </descriptive>
42470         <Type name="NotificationId"/>
42471       </Attribute>
42472       <Attribute readonly="readonly" name="type" id="::Notification::Notification::type">
42473         <webidl>    readonly attribute <ref>NotificationType</ref> type;</webidl>
42474         <descriptive>
42475             <brief>
42476  The Notification type.
42477             </brief>
42478             <version>
42479  2.0
42480             </version>
42481         </descriptive>
42482         <Type name="NotificationType"/>
42483       </Attribute>
42484       <Attribute readonly="readonly" name="postedTime" id="::Notification::Notification::postedTime">
42485         <webidl>    readonly attribute Date postedTime;</webidl>
42486         <descriptive>
42487             <brief>
42488  The time that the notification is posted. Before the notification is posted, this value is undefined.
42489             </brief>
42490             <version>
42491  2.0
42492             </version>
42493         </descriptive>
42494         <Type type="Date"/>
42495       </Attribute>
42496       <Attribute name="title" id="::Notification::Notification::title">
42497         <webidl>    attribute DOMString title;</webidl>
42498         <descriptive>
42499             <brief>
42500  The title to display in a notification.
42501             </brief>
42502             <version>
42503  2.0
42504             </version>
42505         </descriptive>
42506         <Type type="DOMString"/>
42507       </Attribute>
42508       <Attribute name="content" id="::Notification::Notification::content">
42509         <webidl>    attribute DOMString? content;</webidl>
42510         <descriptive>
42511             <brief>
42512  The content to display in a notification.
42513             </brief>
42514             <version>
42515  2.0
42516             </version>
42517         </descriptive>
42518         <Type type="DOMString" nullable="nullable"/>
42519       </Attribute>
42520     </Interface>
42521     <Dictionary name="StatusNotificationInit" id="::Notification::StatusNotificationInit">
42522       <webidl>    dictionary StatusNotificationInit {
42523         DOMString? content;
42524         DOMString? iconPath; 
42525         DOMString? soundPath;
42526         boolean? vibration;
42527         <ref>ApplicationControl</ref>? appControl;
42528         <ref>ApplicationId</ref>? appId;
42529         <ref>NotificationProgressType</ref>? progressType;
42530         unsigned long? progressValue;
42531         long? number;
42532         DOMString? subIconPath;
42533         <ref>NotificationDetailInfo</ref>[]? detailInfo;
42534         DOMString? ledColor;
42535         unsigned long ledOnPeriod;
42536         unsigned long ledOffPeriod;
42537         DOMString? backgroundImagePath;
42538         DOMString[]? thumbnails;
42539     };</webidl>
42540       <descriptive>
42541           <brief>
42542  The properties of StatusNotification, to pass a constructor.
42543           </brief>
42544           <version>
42545  2.0
42546           </version>
42547       </descriptive>
42548       <DictionaryMember name="content" id="::Notification::StatusNotificationInit::content">
42549         <webidl>        DOMString? content;</webidl>
42550         <Type type="DOMString" nullable="nullable"/>
42551       </DictionaryMember>
42552       <DictionaryMember name="iconPath" id="::Notification::StatusNotificationInit::iconPath">
42553         <webidl>        DOMString? iconPath;</webidl>
42554         <Type type="DOMString" nullable="nullable"/>
42555       </DictionaryMember>
42556       <DictionaryMember name="soundPath" id="::Notification::StatusNotificationInit::soundPath">
42557         <webidl>        DOMString? soundPath;</webidl>
42558         <Type type="DOMString" nullable="nullable"/>
42559       </DictionaryMember>
42560       <DictionaryMember name="vibration" id="::Notification::StatusNotificationInit::vibration">
42561         <webidl>        boolean? vibration;</webidl>
42562         <Type type="boolean" nullable="nullable"/>
42563       </DictionaryMember>
42564       <DictionaryMember name="appControl" id="::Notification::StatusNotificationInit::appControl">
42565         <webidl>        <ref>ApplicationControl</ref>? appControl;</webidl>
42566         <Type name="ApplicationControl" nullable="nullable"/>
42567       </DictionaryMember>
42568       <DictionaryMember name="appId" id="::Notification::StatusNotificationInit::appId">
42569         <webidl>        <ref>ApplicationId</ref>? appId;</webidl>
42570         <Type name="ApplicationId" nullable="nullable"/>
42571       </DictionaryMember>
42572       <DictionaryMember name="progressType" id="::Notification::StatusNotificationInit::progressType">
42573         <webidl>        <ref>NotificationProgressType</ref>? progressType;</webidl>
42574         <Type name="NotificationProgressType" nullable="nullable"/>
42575       </DictionaryMember>
42576       <DictionaryMember name="progressValue" id="::Notification::StatusNotificationInit::progressValue">
42577         <webidl>        unsigned long? progressValue;</webidl>
42578         <Type type="unsigned long" nullable="nullable"/>
42579       </DictionaryMember>
42580       <DictionaryMember name="number" id="::Notification::StatusNotificationInit::number">
42581         <webidl>        long? number;</webidl>
42582         <Type type="long" nullable="nullable"/>
42583       </DictionaryMember>
42584       <DictionaryMember name="subIconPath" id="::Notification::StatusNotificationInit::subIconPath">
42585         <webidl>        DOMString? subIconPath;</webidl>
42586         <Type type="DOMString" nullable="nullable"/>
42587       </DictionaryMember>
42588       <DictionaryMember name="detailInfo" id="::Notification::StatusNotificationInit::detailInfo">
42589         <webidl>        <ref>NotificationDetailInfo</ref>[]? detailInfo;</webidl>
42590         <Type type="array" nullable="nullable">
42591           <Type name="NotificationDetailInfo"/>
42592         </Type>
42593       </DictionaryMember>
42594       <DictionaryMember name="ledColor" id="::Notification::StatusNotificationInit::ledColor">
42595         <webidl>        DOMString? ledColor;</webidl>
42596         <Type type="DOMString" nullable="nullable"/>
42597       </DictionaryMember>
42598       <DictionaryMember name="ledOnPeriod" id="::Notification::StatusNotificationInit::ledOnPeriod">
42599         <webidl>        unsigned long ledOnPeriod;</webidl>
42600         <Type type="unsigned long"/>
42601       </DictionaryMember>
42602       <DictionaryMember name="ledOffPeriod" id="::Notification::StatusNotificationInit::ledOffPeriod">
42603         <webidl>        unsigned long ledOffPeriod;</webidl>
42604         <Type type="unsigned long"/>
42605       </DictionaryMember>
42606       <DictionaryMember name="backgroundImagePath" id="::Notification::StatusNotificationInit::backgroundImagePath">
42607         <webidl>        DOMString? backgroundImagePath;</webidl>
42608         <Type type="DOMString" nullable="nullable"/>
42609       </DictionaryMember>
42610       <DictionaryMember name="thumbnails" id="::Notification::StatusNotificationInit::thumbnails">
42611         <webidl>        DOMString[]? thumbnails;</webidl>
42612         <Type type="array" nullable="nullable">
42613           <Type type="DOMString"/>
42614         </Type>
42615       </DictionaryMember>
42616     </Dictionary>
42617     <Interface name="StatusNotification" id="::Notification::StatusNotification">
42618       <webidl>   [Constructor(<ref>StatusNotificationType</ref> statusType, DOMString title, optional <ref>StatusNotificationInit</ref>? notificationInitDict)]
42619
42620
42621     interface StatusNotification : <ref>Notification</ref> {
42622
42623     readonly attribute <ref>StatusNotificationType</ref> statusType;
42624     
42625     attribute DOMString? iconPath;
42626
42627     attribute DOMString? subIconPath;
42628
42629     attribute long? number;
42630     
42631     attribute <ref>NotificationDetailInfo</ref>[]? detailInfo;
42632
42633     attribute DOMString? ledColor;
42634
42635     attribute unsigned long ledOnPeriod;
42636
42637     attribute unsigned long ledOffPeriod;
42638
42639      attribute DOMString? backgroundImagePath;
42640
42641      attribute DOMString[]? thumbnails;
42642
42643      attribute DOMString? soundPath;
42644   
42645      attribute boolean vibration;
42646
42647      attribute <ref>ApplicationControl</ref>? appControl;
42648
42649      attribute <ref>ApplicationId</ref>? appId;
42650
42651      attribute <ref>NotificationProgressType</ref> progressType;  
42652
42653      attribute unsigned long? progressValue;
42654     };</webidl>
42655       <descriptive>
42656           <brief>
42657  This interface represents status notification and offers additional attributes to represent notification displayed in notification tray.
42658           </brief>
42659          <description>
42660           <p>
42661 All notification must have a title attribute.
42662           </p>
42663          </description>
42664           <version>
42665  2.0
42666           </version>
42667       </descriptive>
42668       <ExtendedAttributeList>
42669         <ExtendedAttribute name="Constructor">
42670           <webidl>Constructor(<ref>StatusNotificationType</ref> statusType, DOMString title, optional <ref>StatusNotificationInit</ref>? notificationInitDict)</webidl>
42671           <ArgumentList>
42672             <Argument name="statusType">
42673               <Type name="StatusNotificationType"/>
42674             </Argument>
42675             <Argument name="title">
42676               <Type type="DOMString"/>
42677             </Argument>
42678             <Argument optional="optional" name="notificationInitDict">
42679               <Type name="StatusNotificationInit" nullable="nullable"/>
42680             </Argument>
42681           </ArgumentList>
42682         </ExtendedAttribute>
42683       </ExtendedAttributeList>
42684       <InterfaceInheritance>
42685         <Name name="Notification"/>
42686       </InterfaceInheritance>
42687       <Attribute readonly="readonly" name="statusType" id="::Notification::StatusNotification::statusType">
42688         <webidl>    readonly attribute <ref>StatusNotificationType</ref> statusType;</webidl>
42689         <descriptive>
42690             <brief>
42691  The status notification type. 
42692             </brief>
42693             <version>
42694  2.0
42695             </version>
42696         </descriptive>
42697         <Type name="StatusNotificationType"/>
42698       </Attribute>
42699       <Attribute name="iconPath" id="::Notification::StatusNotification::iconPath">
42700         <webidl>    attribute DOMString? iconPath;</webidl>
42701         <descriptive>
42702             <brief>
42703  The icon path to display in the notification. 
42704             </brief>
42705             <version>
42706  2.0
42707             </version>
42708         </descriptive>
42709         <Type type="DOMString" nullable="nullable"/>
42710       </Attribute>
42711       <Attribute name="subIconPath" id="::Notification::StatusNotification::subIconPath">
42712         <webidl>    attribute DOMString? subIconPath;</webidl>
42713         <descriptive>
42714             <brief>
42715  The sub icon path to display in the notification. 
42716             </brief>
42717             <version>
42718  2.1
42719             </version>
42720         </descriptive>
42721         <Type type="DOMString" nullable="nullable"/>
42722       </Attribute>
42723       <Attribute name="number" id="::Notification::StatusNotification::number">
42724         <webidl>    attribute long? number;</webidl>
42725         <descriptive>
42726             <brief>
42727  The number of events to display in the notification. 
42728             </brief>
42729             <version>
42730  2.1
42731             </version>
42732         </descriptive>
42733         <Type type="long" nullable="nullable"/>
42734       </Attribute>
42735       <Attribute name="detailInfo" id="::Notification::StatusNotification::detailInfo">
42736         <webidl>    attribute <ref>NotificationDetailInfo</ref>[]? detailInfo;</webidl>
42737         <descriptive>
42738             <brief>
42739  Appends lines of the detail information to the notification.
42740 This attribute is available in simple status notification.
42741 By default, this attribute is initialized with an empty array.
42742 The maximum number of detail information elements in the array is 2.
42743             </brief>
42744             <version>
42745  2.1
42746             </version>
42747         </descriptive>
42748         <Type type="array" nullable="nullable">
42749           <Type name="NotificationDetailInfo"/>
42750         </Type>
42751       </Attribute>
42752       <Attribute name="ledColor" id="::Notification::StatusNotification::ledColor">
42753         <webidl>    attribute DOMString? ledColor;</webidl>
42754         <descriptive>
42755             <brief>
42756  Sets the notification LED indicator color property. 
42757 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.
42758 The LED indicator color will show its a close approximation.
42759 LED will only light on when screen is off. To turn the LED off, set &quot;#000000&quot; or null to ledColor. 
42760 This method has effects when the device has notification LED.
42761             </brief>
42762             <Code> try {
42763       var notificationDict = {
42764                   content : &quot;This is a simple notification.&quot;,
42765                   iconPath : &quot;images/image1.jpg&quot;,
42766                   soundPath : &quot;music/Over the horizon.mp3&quot;,
42767                   vibration : true,
42768                   ledColor : &quot;#FFFF00&quot;, 
42769                   ledOnPeriod: 1000,
42770                   ledOffPeriod : 500 };
42771
42772       var notification = new tizen.StatusNotification(&quot;SIMPLE&quot;,
42773                   &quot;Simple notification&quot;, notificationDict);
42774
42775       tizen.notification.post(notification);
42776  } catch (err) {
42777       console.log (err.name + &quot;: &quot; + err.message);
42778  }
42779  </Code>
42780             <version>
42781  2.2
42782             </version>
42783         </descriptive>
42784         <Type type="DOMString" nullable="nullable"/>
42785       </Attribute>
42786       <Attribute name="ledOnPeriod" id="::Notification::StatusNotification::ledOnPeriod">
42787         <webidl>    attribute unsigned long ledOnPeriod;</webidl>
42788         <descriptive>
42789             <brief>
42790  The milliseconds for which the light is on
42791 The light continuously toggles on (ledOnPeriod) and off (ledOffPeriod).
42792 By default, this attribute is set to 0
42793             </brief>
42794             <version>
42795  2.2
42796             </version>
42797         </descriptive>
42798         <Type type="unsigned long"/>
42799       </Attribute>
42800       <Attribute name="ledOffPeriod" id="::Notification::StatusNotification::ledOffPeriod">
42801         <webidl>    attribute unsigned long ledOffPeriod;</webidl>
42802         <descriptive>
42803             <brief>
42804  The milliseconds for which the light is off
42805 By default, this attribute is set to 0
42806             </brief>
42807             <version>
42808  2.2
42809             </version>
42810         </descriptive>
42811         <Type type="unsigned long"/>
42812       </Attribute>
42813       <Attribute name="backgroundImagePath" id="::Notification::StatusNotification::backgroundImagePath">
42814         <webidl>     attribute DOMString? backgroundImagePath;</webidl>
42815         <descriptive>
42816             <brief>
42817  The image path to use as the background of the notification.
42818 This attribute is available on simple or thumbnail status notifications.
42819             </brief>
42820             <version>
42821  2.1
42822             </version>
42823         </descriptive>
42824         <Type type="DOMString" nullable="nullable"/>
42825       </Attribute>
42826       <Attribute name="thumbnails" id="::Notification::StatusNotification::thumbnails">
42827         <webidl>     attribute DOMString[]? thumbnails;</webidl>
42828         <descriptive>
42829             <brief>
42830  The image paths associated with the thumbnail status notification.
42831 By default, this attribute is initialized with an empty array.
42832 The maximum number of thumbnail path elements in the array is 4.
42833             </brief>
42834             <version>
42835  2.1
42836             </version>
42837         </descriptive>
42838         <Type type="array" nullable="nullable">
42839           <Type type="DOMString"/>
42840         </Type>
42841       </Attribute>
42842       <Attribute name="soundPath" id="::Notification::StatusNotification::soundPath">
42843         <webidl>     attribute DOMString? soundPath;</webidl>
42844         <descriptive>
42845             <brief>
42846  The path of a sound file to play when the notification is shown.
42847             </brief>
42848             <version>
42849  2.0
42850             </version>
42851         </descriptive>
42852         <Type type="DOMString" nullable="nullable"/>
42853       </Attribute>
42854       <Attribute name="vibration" id="::Notification::StatusNotification::vibration">
42855         <webidl>     attribute boolean vibration;</webidl>
42856         <descriptive>
42857             <brief>
42858  Holds whether to vibrate when the notification is shown. By default, this attribute is set to false.
42859             </brief>
42860             <version>
42861  2.0
42862             </version>
42863         </descriptive>
42864         <Type type="boolean"/>
42865       </Attribute>
42866       <Attribute name="appControl" id="::Notification::StatusNotification::appControl">
42867         <webidl>     attribute <ref>ApplicationControl</ref>? appControl;</webidl>
42868         <descriptive>
42869             <brief>
42870  Holds the application control to launch an application when the notification is selected from the notification tray. 
42871             </brief>
42872             <version>
42873  2.0
42874             </version>
42875         </descriptive>
42876         <Type name="ApplicationControl" nullable="nullable"/>
42877       </Attribute>
42878       <Attribute name="appId" id="::Notification::StatusNotification::appId">
42879         <webidl>     attribute <ref>ApplicationId</ref>? appId;</webidl>
42880         <descriptive>
42881             <brief>
42882  Holds the application ID to launch when the notification is selected from the notification tray. 
42883             </brief>
42884             <version>
42885  2.0
42886             </version>
42887             <Code> try {
42888  
42889       // Gets a current application information with tizen.application.getAppInfo
42890       var myappInfo = tizen.application.getAppInfo();
42891
42892       var notificationDict = {
42893                   content : &quot;This is a simple notification.&quot;,
42894                   iconPath : &quot;images/image1.jpg&quot;,
42895                   soundPath : &quot;music/Over the horizon.mp3&quot;, 
42896                   vibration : true, 
42897                   appId : myappInfo.id };
42898        
42899       var notification = new tizen.StatusNotification(&quot;SIMPLE&quot;, 
42900                   &quot;Simple notification&quot;, notificationDict);
42901                        
42902       tizen.notification.post(notification);
42903  } catch (err) {
42904       console.log (err.name + &quot;: &quot; + err.message);
42905  }
42906  </Code>
42907         </descriptive>
42908         <Type name="ApplicationId" nullable="nullable"/>
42909       </Attribute>
42910       <Attribute name="progressType" id="::Notification::StatusNotification::progressType">
42911         <webidl>     attribute <ref>NotificationProgressType</ref> progressType;</webidl>
42912         <descriptive>
42913             <brief>
42914  Defines the type for an ongoing notification's progress. 
42915 By default, this attribute is set to PERCENTAGE.
42916             </brief>
42917             <version>
42918  2.1
42919             </version>
42920         </descriptive>
42921         <Type name="NotificationProgressType"/>
42922       </Attribute>
42923       <Attribute name="progressValue" id="::Notification::StatusNotification::progressValue">
42924         <webidl>     attribute unsigned long? progressValue;</webidl>
42925         <descriptive>
42926             <brief>
42927  Defines the current notification progress value (<em>PERCENTAGE</em> or <em>BYTE</em>), depending on the <em>progressType</em>            </brief>
42928            <description>
42929             <p>
42930 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
42931 If 0, the indeterminate progressbar will be shown.
42932 This attribute is only available for StatusNotifcation of type <em>PROGRESS</em>.
42933             </p>
42934             <p>
42935 Application should keep the progress value for its job because 
42936 the saved value in the notification status tray would be different from 
42937 exact progress value.
42938             </p>
42939             <p>
42940 Range of <em>progressValue</em>: percent (0 to 100).
42941             </p>
42942            </description>
42943             <Code> try {
42944       var appControl = new tizen.ApplicationControl(
42945       &quot;http://tizen.org/appcontrol/operation/create_content&quot;,
42946       null,
42947       &quot;image/jpg&quot;,
42948       null);
42949       
42950       var notificationDict = {
42951                   content : &quot;This is a progress notificaiton.&quot;,
42952                   iconPath : &quot;images/image2.jpg&quot;,
42953                   soundPath : &quot;music/Over the horizon.mp3&quot;, 
42954                   vibration : true, 
42955                   appControl : appControl,
42956                   progressValue : 20};
42957       // Constructs the progress notification
42958       var notification = new tizen.StatusNotification(&quot;PROGRESS&quot;, 
42959                          &quot;Progress notification&quot;, notificationDict); 
42960       // Posts the notification
42961       tizen.notification.post(notification);
42962
42963       // Updates the progress value of the notification
42964       notification.progressValue = 59;
42965       tizen.notification.update(notification);
42966
42967       
42968  } catch (err) {
42969      console.log (err.name + &quot;: &quot; + err.message);
42970  }
42971  </Code>
42972             <version>
42973  2.0
42974             </version>
42975         </descriptive>
42976         <Type type="unsigned long" nullable="nullable"/>
42977       </Attribute>
42978     </Interface>
42979     <Interface name="NotificationDetailInfo" id="::Notification::NotificationDetailInfo">
42980       <webidl>[Constructor(DOMString mainText, optional DOMString? subText)]
42981     interface NotificationDetailInfo {
42982     attribute DOMString mainText;
42983
42984     attribute DOMString? subText;
42985     };</webidl>
42986       <descriptive>
42987           <brief>
42988  The NotificationDetailInfo object that contains the detail information to the notification.
42989           </brief>
42990           <version>
42991  2.1
42992           </version>
42993           <Code> var detailInfo1 = new tizen.NotificationDetailInfo('Missed Call from James', 'Feb 11 2013');
42994  notification.detailInfo = [detailInfo1];
42995 </Code>
42996       </descriptive>
42997       <ExtendedAttributeList>
42998         <ExtendedAttribute name="Constructor">
42999           <webidl>Constructor(DOMString mainText, optional DOMString? subText)</webidl>
43000           <ArgumentList>
43001             <Argument name="mainText">
43002               <Type type="DOMString"/>
43003             </Argument>
43004             <Argument optional="optional" name="subText">
43005               <Type type="DOMString" nullable="nullable"/>
43006             </Argument>
43007           </ArgumentList>
43008         </ExtendedAttribute>
43009       </ExtendedAttributeList>
43010       <Attribute name="mainText" id="::Notification::NotificationDetailInfo::mainText">
43011         <webidl>    attribute DOMString mainText;</webidl>
43012         <descriptive>
43013             <brief>
43014  The main content of the detail information.
43015 This attribute is available on simple status notifications.
43016             </brief>
43017             <version>
43018  2.1
43019             </version>
43020         </descriptive>
43021         <Type type="DOMString"/>
43022       </Attribute>
43023       <Attribute name="subText" id="::Notification::NotificationDetailInfo::subText">
43024         <webidl>    attribute DOMString? subText;</webidl>
43025         <descriptive>
43026             <brief>
43027  The secondary content of the detail information.
43028             </brief>
43029            <description>
43030             <p>
43031 By default, this attribute is set to null.
43032             </p>
43033            </description>
43034             <version>
43035  2.1
43036             </version>
43037         </descriptive>
43038         <Type type="DOMString" nullable="nullable"/>
43039       </Attribute>
43040     </Interface>
43041   </Module>
43042   <Module name="Package" id="::Package">
43043     <webidl>module Package {&#13;
43044 &#13;
43045 &#13;
43046     typedef DOMString PackageId;&#13;
43047 &#13;
43048 &#13;
43049     [NoInterfaceObject] interface PackageManagerObject {&#13;
43050         readonly attribute <ref>PackageManager</ref> package;&#13;
43051     };&#13;
43052     <ref>Tizen</ref> implements <ref>PackageManagerObject</ref>;&#13;
43053 &#13;
43054 &#13;
43055     [NoInterfaceObject] interface PackageManager {&#13;
43056 &#13;
43057 &#13;
43058         void install(DOMString path,&#13;
43059                      <ref>PackageProgressCallback</ref> progressCallback,&#13;
43060                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);&#13;
43061 &#13;
43062 &#13;
43063         void uninstall(<ref>PackageId</ref> id, &#13;
43064                        <ref>PackageProgressCallback</ref> progressCallback,&#13;
43065                        optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);&#13;
43066 &#13;
43067 &#13;
43068 &#13;
43069 &#13;
43070         void getPackagesInfo(<ref>PackageInformationArraySuccessCallback</ref> successCallback,&#13;
43071                              optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);&#13;
43072 &#13;
43073 &#13;
43074         <ref>PackageInformation</ref> getPackageInfo(optional <ref>PackageId</ref>? id) raises(<ref>WebAPIException</ref>);&#13;
43075 &#13;
43076 &#13;
43077         void setPackageInfoEventListener(<ref>PackageInformationEventCallback</ref> eventCallback) raises(<ref>WebAPIException</ref>);&#13;
43078         &#13;
43079 &#13;
43080         void unsetPackageInfoEventListener() raises(<ref>WebAPIException</ref>);&#13;
43081     &#13;
43082     };&#13;
43083 &#13;
43084 &#13;
43085     [NoInterfaceObject] interface PackageInformation {&#13;
43086 &#13;
43087         readonly attribute <ref>PackageId</ref> id;&#13;
43088 &#13;
43089 &#13;
43090         readonly attribute DOMString name;&#13;
43091 &#13;
43092 &#13;
43093         readonly attribute DOMString iconPath;&#13;
43094 &#13;
43095 &#13;
43096         readonly attribute DOMString version;&#13;
43097 &#13;
43098 &#13;
43099         readonly attribute long totalSize;&#13;
43100 &#13;
43101 &#13;
43102         readonly attribute long dataSize;&#13;
43103 &#13;
43104 &#13;
43105         readonly attribute Date lastModified;&#13;
43106 &#13;
43107 &#13;
43108         readonly attribute DOMString author;&#13;
43109 &#13;
43110 &#13;
43111         readonly attribute DOMString description;&#13;
43112 &#13;
43113 &#13;
43114         readonly attribute <ref>ApplicationId</ref>[] appIds;&#13;
43115 &#13;
43116     };&#13;
43117 &#13;
43118 &#13;
43119     [Callback=FunctionOnly, NoInterfaceObject] interface PackageInformationArraySuccessCallback {&#13;
43120 &#13;
43121 &#13;
43122         void onsuccess(<ref>PackageInformation</ref>[] informationArray);&#13;
43123     };&#13;
43124 &#13;
43125 &#13;
43126     [Callback, NoInterfaceObject] interface PackageProgressCallback {&#13;
43127 &#13;
43128 &#13;
43129         void onprogress(<ref>PackageId</ref> id, short progress);&#13;
43130 &#13;
43131 &#13;
43132         void oncomplete(<ref>PackageId</ref> id);&#13;
43133     };&#13;
43134 &#13;
43135 &#13;
43136     [Callback, NoInterfaceObject] interface PackageInformationEventCallback {&#13;
43137 &#13;
43138 &#13;
43139         void oninstalled(<ref>PackageInformation</ref> info);&#13;
43140 &#13;
43141 &#13;
43142         void onupdated(<ref>PackageInformation</ref> info);&#13;
43143 &#13;
43144 &#13;
43145         void onuninstalled(<ref>PackageId</ref> id);&#13;
43146     };&#13;
43147 &#13;
43148 };</webidl>
43149     <descriptive>
43150         <brief>
43151  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.
43152 For more information on the Package features, see <a href="../../org.tizen.web.appprogramming/html/guide/app_guide/package.htm">Package Guide</a>.
43153         </brief>
43154         <version>
43155  2.1
43156         </version>
43157     </descriptive>
43158     <Typedef name="PackageId" id="::Package::PackageId">
43159       <webidl>    typedef DOMString PackageId;</webidl>
43160       <descriptive>
43161           <brief>
43162  A unique ID for an installed package.
43163           </brief>
43164           <version>
43165  2.1
43166           </version>
43167       </descriptive>
43168       <Type type="DOMString"/>
43169     </Typedef>
43170     <Interface name="PackageManagerObject" id="::Package::PackageManagerObject">
43171       <webidl>    [NoInterfaceObject] interface PackageManagerObject {&#13;
43172         readonly attribute <ref>PackageManager</ref> package;&#13;
43173     };</webidl>
43174       <descriptive>
43175           <brief>
43176  This interface defines what is instantiated by the <em>Tizen </em>object from the Tizen Platform.
43177           </brief>
43178          <description>
43179           <p>
43180 There is a <em>tizen.package </em>object that allows access to Package API functionality.
43181           </p>
43182          </description>
43183           <version>
43184  2.1
43185           </version>
43186       </descriptive>
43187       <ExtendedAttributeList>
43188         <ExtendedAttribute name="NoInterfaceObject">
43189           <webidl>NoInterfaceObject</webidl>
43190         </ExtendedAttribute>
43191       </ExtendedAttributeList>
43192       <Attribute readonly="readonly" name="package" id="::Package::PackageManagerObject::package">
43193         <webidl>        readonly attribute <ref>PackageManager</ref> package;</webidl>
43194         <Type name="PackageManager"/>
43195       </Attribute>
43196     </Interface>
43197     <Implements name1="Tizen" name2="PackageManagerObject">
43198       <webidl>    <ref>Tizen</ref> implements <ref>PackageManagerObject</ref>;</webidl>
43199     </Implements>
43200     <Interface name="PackageManager" id="::Package::PackageManager">
43201       <webidl>    [NoInterfaceObject] interface PackageManager {&#13;
43202 &#13;
43203 &#13;
43204         void install(DOMString path,&#13;
43205                      <ref>PackageProgressCallback</ref> progressCallback,&#13;
43206                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);&#13;
43207 &#13;
43208 &#13;
43209         void uninstall(<ref>PackageId</ref> id, &#13;
43210                        <ref>PackageProgressCallback</ref> progressCallback,&#13;
43211                        optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);&#13;
43212 &#13;
43213 &#13;
43214 &#13;
43215 &#13;
43216         void getPackagesInfo(<ref>PackageInformationArraySuccessCallback</ref> successCallback,&#13;
43217                              optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);&#13;
43218 &#13;
43219 &#13;
43220         <ref>PackageInformation</ref> getPackageInfo(optional <ref>PackageId</ref>? id) raises(<ref>WebAPIException</ref>);&#13;
43221 &#13;
43222 &#13;
43223         void setPackageInfoEventListener(<ref>PackageInformationEventCallback</ref> eventCallback) raises(<ref>WebAPIException</ref>);&#13;
43224         &#13;
43225 &#13;
43226         void unsetPackageInfoEventListener() raises(<ref>WebAPIException</ref>);&#13;
43227     &#13;
43228     };</webidl>
43229       <descriptive>
43230           <brief>
43231  This interface defines the package manager.
43232           </brief>
43233           <version>
43234  2.1
43235           </version>
43236       </descriptive>
43237       <ExtendedAttributeList>
43238         <ExtendedAttribute name="NoInterfaceObject">
43239           <webidl>NoInterfaceObject</webidl>
43240         </ExtendedAttribute>
43241       </ExtendedAttributeList>
43242       <Operation name="install" id="::Package::PackageManager::install">
43243         <webidl>        void install(DOMString path,&#13;
43244                      <ref>PackageProgressCallback</ref> progressCallback,&#13;
43245                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
43246         <descriptive>
43247             <brief>
43248  Installs a package with a specified package path on a device.
43249             </brief>
43250            <description>
43251             <p>
43252 This API provides a way to notify the progress and completion of an installation request through PackageProgressCallback.
43253             </p>
43254             <p>
43255 The <em>ErrorCallback() </em>is launched with these error types:
43256             </p>
43257             <ul>
43258               <li>
43259 NotFoundError - If the package is not found in the specified path.              </li>
43260               <li>
43261 UnknownError - If it is not allowed to install the package by platform or any other platform error occurs.              </li>
43262             </ul>
43263            </description>
43264             <version>
43265  2.1
43266             </version>
43267             <privilegelevel>
43268  platform
43269             </privilegelevel>
43270             <privilege>
43271  http://tizen.org/privilege/packagemanager.install
43272             </privilege>
43273             <remark>
43274  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.
43275             </remark>
43276             <Code> var onInstallation = {
43277       onprogress: function(packageId, percentage) {
43278          console.log(&quot;On installation(&quot; + packageId + &quot;) : progress(&quot; + percentage + &quot;)&quot;);
43279       },
43280       oncomplete: function(packageId) {
43281          console.log(&quot;Installation(&quot; + packageId + &quot;) Complete&quot;);
43282       }
43283  }
43284
43285  var onError = function (err) {
43286       console.log(&quot;Error occurred on installation : &quot; + err.name);
43287  }
43288
43289  // Let's assume that &quot;test.wgt&quot; file is exist in the downloads directory
43290  tizen.filesystem.resolve(&quot;downloads/test.wgt&quot;,
43291      function (file) {
43292          console.log(&quot;file path : &quot; + file.path);
43293          tizen.package.install(file.toURI(), onInstallation, onError);
43294      },
43295      function (err) {
43296          console.log(&quot;Error occurred on resolve : &quot; + err.name);
43297      },
43298      &quot;r&quot;);
43299
43300  </Code>
43301         </descriptive>
43302         <Type type="void"/>
43303         <ArgumentList>
43304           <Argument name="path">
43305             <descriptive>
43306                 <description><p>
43307  The package path to install
43308                 </p></description>
43309             </descriptive>
43310             <Type type="DOMString"/>
43311           </Argument>
43312           <Argument name="progressCallback">
43313             <descriptive>
43314                 <description><p>
43315  The method to invoke when the installation is in progress or has been completed
43316                 </p></description>
43317             </descriptive>
43318             <Type name="PackageProgressCallback"/>
43319           </Argument>
43320           <Argument optional="optional" name="errorCallback">
43321             <descriptive>
43322                 <description><p>
43323  The method to invoke when an error occurs
43324                 </p></description>
43325             </descriptive>
43326             <Type name="ErrorCallback" nullable="nullable"/>
43327           </Argument>
43328         </ArgumentList>
43329         <Raises>
43330           <RaiseException name="WebAPIException">
43331             <descriptive>
43332                 <description><p>
43333  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
43334                 </p></description>
43335                 <description><p>
43336  with error type SecurityError, if the application does not have the privilege to call this method.
43337                 </p></description>
43338             </descriptive>
43339           </RaiseException>
43340         </Raises>
43341       </Operation>
43342       <Operation name="uninstall" id="::Package::PackageManager::uninstall">
43343         <webidl>        void uninstall(<ref>PackageId</ref> id, &#13;
43344                        <ref>PackageProgressCallback</ref> progressCallback,&#13;
43345                        optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
43346         <descriptive>
43347             <brief>
43348  Uninstalls the package with a specified package ID.
43349             </brief>
43350            <description>
43351             <p>
43352 This API provides a way to notify about the progress and completion of an uninstallation request through PackageProgressCallback.
43353             </p>
43354             <p>
43355 The <em>ErrorCallback() </em>is launched with these error types:
43356             </p>
43357             <ul>
43358               <li>
43359 NotFoundError - If the package is not found with specified ID.              </li>
43360               <li>
43361 UnknownError - If it is not allowed to uninstall the package from the platform or any other platform error occurs.              </li>
43362             </ul>
43363            </description>
43364             <version>
43365  2.1
43366             </version>
43367             <privilegelevel>
43368  platform
43369             </privilegelevel>
43370             <privilege>
43371  http://tizen.org/privilege/packagemanager.install
43372             </privilege>
43373             <remark>
43374  Some preloaded packages cannot be uninstalled. In this case, ErrorCallback with UnKnownError type will be launched.
43375             </remark>
43376             <Code> var onUninstallation = {
43377       onprogress: function(packageId, percentage) {
43378          console.log(&quot;On Uninstallation(&quot; + packageId + &quot;) : progress(&quot; + percentage + &quot;)&quot;);
43379       },
43380       oncomplete: function(packageId) {
43381          console.log(&quot;Uninstallation(&quot; + packageId + &quot;) Complete&quot;);
43382       }
43383  };
43384
43385  var onError = function (err) {
43386       console.log(&quot;Error occurred on installation : &quot; + err.name);
43387  };
43388
43389  // Let's assume that the package id to uninstall is &quot;testapp001&quot;
43390  tizen.package.uninstall(&quot;testapp001&quot;, onUninstallation, onError);
43391  </Code>
43392         </descriptive>
43393         <Type type="void"/>
43394         <ArgumentList>
43395           <Argument name="id">
43396             <descriptive>
43397                 <description><p>
43398  The package ID to uninstall
43399                 </p></description>
43400             </descriptive>
43401             <Type name="PackageId"/>
43402           </Argument>
43403           <Argument name="progressCallback">
43404             <descriptive>
43405                 <description><p>
43406  The method to invoke when uninstallation is in progress or has been completed
43407                 </p></description>
43408             </descriptive>
43409             <Type name="PackageProgressCallback"/>
43410           </Argument>
43411           <Argument optional="optional" name="errorCallback">
43412             <descriptive>
43413                 <description><p>
43414  The method to invoke when an error occurs
43415                 </p></description>
43416             </descriptive>
43417             <Type name="ErrorCallback" nullable="nullable"/>
43418           </Argument>
43419         </ArgumentList>
43420         <Raises>
43421           <RaiseException name="WebAPIException">
43422             <descriptive>
43423                 <description><p>
43424  with error type TypeMismatchError, if an input parameter is not compatible with the expected type for that parameter.
43425                 </p></description>
43426                 <description><p>
43427  with error type SecurityError, if the application does not have the privilege to call this method.
43428                 </p></description>
43429             </descriptive>
43430           </RaiseException>
43431         </Raises>
43432       </Operation>
43433       <Operation name="getPackagesInfo" id="::Package::PackageManager::getPackagesInfo">
43434         <webidl>        void getPackagesInfo(<ref>PackageInformationArraySuccessCallback</ref> successCallback,&#13;
43435                              optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
43436         <descriptive>
43437             <brief>
43438  Gets information of the installed packages.
43439             </brief>
43440            <description>
43441             <p>
43442 The result contains the snapshots of the installed packages information.
43443             </p>
43444             <p>
43445 The <em>errorCallback()</em> is launched with this error type:
43446             </p>
43447             <ul>
43448               <li>
43449 UnknownError - If any other platform error occurs.              </li>
43450             </ul>
43451            </description>
43452             <version>
43453  2.1
43454             </version>
43455             <privilegelevel>
43456  public
43457             </privilegelevel>
43458             <privilege>
43459  http://tizen.org/privilege/package.info
43460             </privilege>
43461             <Code> function onListInstalledPackages(packages) {
43462      for (var i = 0; i &#60; packages.length; i++) {
43463          console.log(&quot;Package id[&quot;+i+&quot;] : &quot; +packages[i].id);
43464      }
43465  }
43466
43467  tizen.package.getPackagesInfo(
43468      onListInstalledPackages,
43469      function (err) {console.log(&quot;Can't obtain packages list&quot; + err.name);});
43470  </Code>
43471         </descriptive>
43472         <Type type="void"/>
43473         <ArgumentList>
43474           <Argument name="successCallback">
43475             <descriptive>
43476                 <description><p>
43477  The method to call when an invocation ends successfully
43478                 </p></description>
43479             </descriptive>
43480             <Type name="PackageInformationArraySuccessCallback"/>
43481           </Argument>
43482           <Argument optional="optional" name="errorCallback">
43483             <descriptive>
43484                 <description><p>
43485  The method to call when an error occurs
43486                 </p></description>
43487             </descriptive>
43488             <Type name="ErrorCallback" nullable="nullable"/>
43489           </Argument>
43490         </ArgumentList>
43491         <Raises>
43492           <RaiseException name="WebAPIException">
43493             <descriptive>
43494                 <description><p>
43495  with error type TypeMismatchError, if an input parameter is not compatible with the expected type for that parameter.
43496                 </p></description>
43497                 <description><p>
43498  with error type SecurityError, if the application does not have the privilege to call this method.
43499                 </p></description>
43500             </descriptive>
43501           </RaiseException>
43502         </Raises>
43503       </Operation>
43504       <Operation name="getPackageInfo" id="::Package::PackageManager::getPackageInfo">
43505         <webidl>        <ref>PackageInformation</ref> getPackageInfo(optional <ref>PackageId</ref>? id) raises(<ref>WebAPIException</ref>);</webidl>
43506         <descriptive>
43507             <brief>
43508  Gets information of an installed package.
43509             </brief>
43510            <description>
43511             <p>
43512 If the ID is set to <var>null</var> or not set at all, it returns package information of the current application.
43513 The list of installed packages and their package IDs is obtained using <em>getPackagesInfo()</em>.
43514             </p>
43515            </description>
43516             <version>
43517  2.1
43518             </version>
43519             <privilegelevel>
43520  public
43521             </privilegelevel>
43522             <privilege>
43523  http://tizen.org/privilege/package.info
43524             </privilege>
43525             <Code> var packageInfo = tizen.package.getPackageInfo(null);
43526
43527  console.log(&quot;Current Package ID : &quot; + packageInfo.id);
43528  </Code>
43529         </descriptive>
43530         <Type name="PackageInformation">
43531           <descriptive>
43532               <description><p>
43533  PackageInformation The information of a package
43534               </p></description>
43535           </descriptive>
43536         </Type>
43537         <ArgumentList>
43538           <Argument optional="optional" name="id">
43539             <descriptive>
43540                 <description><p>
43541  A string representing package ID. If the ID is not provided, the package information of the calling application is returned.
43542                 </p></description>
43543             </descriptive>
43544             <Type name="PackageId" nullable="nullable"/>
43545           </Argument>
43546         </ArgumentList>
43547         <Raises>
43548           <RaiseException name="WebAPIException">
43549             <descriptive>
43550                 <description><p>
43551  with error type TypeMismatchError, if an input parameter is not compatible with the expected type for that parameter.
43552                 </p></description>
43553                 <description><p>
43554  with error type SecurityError, if the application does not have the privilege to call this method.
43555                 </p></description>
43556                 <description><p>
43557  with error type NotFoundError, if the package with the specified ID is not found.
43558                 </p></description>
43559                 <description><p>
43560  with error type UnknownError, if the package information cannot be retrieved because of a platform error.
43561                 </p></description>
43562             </descriptive>
43563           </RaiseException>
43564         </Raises>
43565       </Operation>
43566       <Operation name="setPackageInfoEventListener" id="::Package::PackageManager::setPackageInfoEventListener">
43567         <webidl>        void setPackageInfoEventListener(<ref>PackageInformationEventCallback</ref> eventCallback) raises(<ref>WebAPIException</ref>);</webidl>
43568         <descriptive>
43569             <brief>
43570  Sets a listener to receive notifications for any changes made to the list of installed packages.
43571             </brief>
43572            <description>
43573             <p>
43574 This method sets a <em>PackageInformationEventCallback</em> type callback that is triggered when a package is installed, removed or updated.
43575             </p>
43576             <p>
43577 The callback lasts until <em>unsetPackageInfoEventListener()</em> method is called.
43578             </p>
43579            </description>
43580             <version>
43581  2.1
43582             </version>
43583             <privilegelevel>
43584  public
43585             </privilegelevel>
43586             <privilege>
43587  http://tizen.org/privilege/package.info
43588             </privilege>
43589             <Code> var packageEventCallback = {
43590     oninstalled: function(packageInfo) {
43591        console.log('The package ' + packageInfo.name + ' is installed');
43592     },
43593     onupdated: function(packageInfo) {
43594        console.log('The package ' + packageInfo.name + ' is updated');
43595     },
43596     onuninstalled: function(packageId) {
43597        console.log('The package ' + packageId + ' is uninstalled');
43598     }
43599  };
43600
43601  tizen.package.setPackageInfoEventListener(packageEventCallback);
43602  </Code>
43603         </descriptive>
43604         <Type type="void"/>
43605         <ArgumentList>
43606           <Argument name="eventCallback">
43607             <descriptive>
43608                 <description><p>
43609  The method to be called when any change is made to the list of installed packages.
43610                 </p></description>
43611             </descriptive>
43612             <Type name="PackageInformationEventCallback"/>
43613           </Argument>
43614         </ArgumentList>
43615         <Raises>
43616           <RaiseException name="WebAPIException">
43617             <descriptive>
43618                 <description><p>
43619  with error type TypeMismatchError, if an input parameter is not compatible with the expected type for that parameter.
43620                 </p></description>
43621                 <description><p>
43622  with error type SecurityError, if the application does not have the privilege to call this method.
43623                 </p></description>
43624                 <description><p>
43625  with error type UnknownError, if the package list change event cannot be generated because of a platform error.
43626                 </p></description>
43627             </descriptive>
43628           </RaiseException>
43629         </Raises>
43630       </Operation>
43631       <Operation name="unsetPackageInfoEventListener" id="::Package::PackageManager::unsetPackageInfoEventListener">
43632         <webidl>        void unsetPackageInfoEventListener() raises(<ref>WebAPIException</ref>);</webidl>
43633         <descriptive>
43634             <brief>
43635  Unsets the listener to stop receiving package notifications.
43636             </brief>
43637             <version>
43638  2.1
43639             </version>
43640             <privilegelevel>
43641  public
43642             </privilegelevel>
43643             <privilege>
43644  http://tizen.org/privilege/package.info
43645             </privilege>
43646             <Code> tizen.package.unsetPackageInfoEventListener();
43647  </Code>
43648         </descriptive>
43649         <Type type="void"/>
43650         <ArgumentList/>
43651         <Raises>
43652           <RaiseException name="WebAPIException">
43653             <descriptive>
43654                 <description><p>
43655  with error type SecurityError, if the application does not have the privilege to call this method.
43656                 </p></description>
43657                 <description><p>
43658  with error type UnknownError, if the listener removal request fails because of a platform error.
43659                 </p></description>
43660             </descriptive>
43661           </RaiseException>
43662         </Raises>
43663       </Operation>
43664     </Interface>
43665     <Interface name="PackageInformation" id="::Package::PackageInformation">
43666       <webidl>    [NoInterfaceObject] interface PackageInformation {&#13;
43667 &#13;
43668         readonly attribute <ref>PackageId</ref> id;&#13;
43669 &#13;
43670 &#13;
43671         readonly attribute DOMString name;&#13;
43672 &#13;
43673 &#13;
43674         readonly attribute DOMString iconPath;&#13;
43675 &#13;
43676 &#13;
43677         readonly attribute DOMString version;&#13;
43678 &#13;
43679 &#13;
43680         readonly attribute long totalSize;&#13;
43681 &#13;
43682 &#13;
43683         readonly attribute long dataSize;&#13;
43684 &#13;
43685 &#13;
43686         readonly attribute Date lastModified;&#13;
43687 &#13;
43688 &#13;
43689         readonly attribute DOMString author;&#13;
43690 &#13;
43691 &#13;
43692         readonly attribute DOMString description;&#13;
43693 &#13;
43694 &#13;
43695         readonly attribute <ref>ApplicationId</ref>[] appIds;&#13;
43696 &#13;
43697     };</webidl>
43698       <descriptive>
43699           <brief>
43700  This interface defines the general information available to an installed package.
43701           </brief>
43702           <version>
43703  2.1
43704           </version>
43705       </descriptive>
43706       <ExtendedAttributeList>
43707         <ExtendedAttribute name="NoInterfaceObject">
43708           <webidl>NoInterfaceObject</webidl>
43709         </ExtendedAttribute>
43710       </ExtendedAttributeList>
43711       <Attribute readonly="readonly" name="id" id="::Package::PackageInformation::id">
43712         <webidl>        readonly attribute <ref>PackageId</ref> id;</webidl>
43713         <descriptive>
43714             <brief>
43715  An attribute to store the identifier of a package.
43716             </brief>
43717             <version>
43718  2.1
43719             </version>
43720         </descriptive>
43721         <Type name="PackageId"/>
43722       </Attribute>
43723       <Attribute readonly="readonly" name="name" id="::Package::PackageInformation::name">
43724         <webidl>        readonly attribute DOMString name;</webidl>
43725         <descriptive>
43726             <brief>
43727  An attribute to store the package name.
43728             </brief>
43729             <version>
43730  2.1
43731             </version>
43732         </descriptive>
43733         <Type type="DOMString"/>
43734       </Attribute>
43735       <Attribute readonly="readonly" name="iconPath" id="::Package::PackageInformation::iconPath">
43736         <webidl>        readonly attribute DOMString iconPath;</webidl>
43737         <descriptive>
43738             <brief>
43739  An attribute to store the icon path of a package.
43740             </brief>
43741             <version>
43742  2.1
43743             </version>
43744         </descriptive>
43745         <Type type="DOMString"/>
43746       </Attribute>
43747       <Attribute readonly="readonly" name="version" id="::Package::PackageInformation::version">
43748         <webidl>        readonly attribute DOMString version;</webidl>
43749         <descriptive>
43750             <brief>
43751  An attribute to store the package version.
43752             </brief>
43753             <version>
43754  2.1
43755             </version>
43756         </descriptive>
43757         <Type type="DOMString"/>
43758       </Attribute>
43759       <Attribute readonly="readonly" name="totalSize" id="::Package::PackageInformation::totalSize">
43760         <webidl>        readonly attribute long totalSize;</webidl>
43761         <descriptive>
43762             <brief>
43763  An attribute to store the total installed size(package + data) of a package.
43764             </brief>
43765             <version>
43766  2.1
43767             </version>
43768         </descriptive>
43769         <Type type="long"/>
43770       </Attribute>
43771       <Attribute readonly="readonly" name="dataSize" id="::Package::PackageInformation::dataSize">
43772         <webidl>        readonly attribute long dataSize;</webidl>
43773         <descriptive>
43774             <brief>
43775  An attribute to store the current data size of a package.
43776             </brief>
43777             <version>
43778  2.1
43779             </version>
43780         </descriptive>
43781         <Type type="long"/>
43782       </Attribute>
43783       <Attribute readonly="readonly" name="lastModified" id="::Package::PackageInformation::lastModified">
43784         <webidl>        readonly attribute Date lastModified;</webidl>
43785         <descriptive>
43786             <brief>
43787  An attribute to store the latest installed or updated time of a package.
43788             </brief>
43789             <version>
43790  2.1
43791             </version>
43792         </descriptive>
43793         <Type type="Date"/>
43794       </Attribute>
43795       <Attribute readonly="readonly" name="author" id="::Package::PackageInformation::author">
43796         <webidl>        readonly attribute DOMString author;</webidl>
43797         <descriptive>
43798             <brief>
43799  An attribute to store the author of a package.
43800             </brief>
43801             <version>
43802  2.1
43803             </version>
43804         </descriptive>
43805         <Type type="DOMString"/>
43806       </Attribute>
43807       <Attribute readonly="readonly" name="description" id="::Package::PackageInformation::description">
43808         <webidl>        readonly attribute DOMString description;</webidl>
43809         <descriptive>
43810             <brief>
43811  An attribute to store the package description.
43812             </brief>
43813             <version>
43814  2.1
43815             </version>
43816         </descriptive>
43817         <Type type="DOMString"/>
43818       </Attribute>
43819       <Attribute readonly="readonly" name="appIds" id="::Package::PackageInformation::appIds">
43820         <webidl>        readonly attribute <ref>ApplicationId</ref>[] appIds;</webidl>
43821         <descriptive>
43822             <brief>
43823  An attribute to store the application ID list of a package.
43824             </brief>
43825             <version>
43826  2.1
43827             </version>
43828         </descriptive>
43829         <Type type="array">
43830           <Type name="ApplicationId"/>
43831         </Type>
43832       </Attribute>
43833     </Interface>
43834     <Interface name="PackageInformationArraySuccessCallback" id="::Package::PackageInformationArraySuccessCallback">
43835       <webidl>    [Callback=FunctionOnly, NoInterfaceObject] interface PackageInformationArraySuccessCallback {&#13;
43836 &#13;
43837 &#13;
43838         void onsuccess(<ref>PackageInformation</ref>[] informationArray);&#13;
43839     };</webidl>
43840       <descriptive>
43841           <brief>
43842  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.
43843           </brief>
43844          <description>
43845           <p>
43846 It is used in <em>tizen.package.getPackagesInfo()</em>.
43847           </p>
43848          </description>
43849           <version>
43850  2.1
43851           </version>
43852       </descriptive>
43853       <ExtendedAttributeList>
43854         <ExtendedAttribute name="Callback" value="FunctionOnly">
43855           <webidl>Callback</webidl>
43856         </ExtendedAttribute>
43857         <ExtendedAttribute name="NoInterfaceObject">
43858           <webidl> NoInterfaceObject</webidl>
43859         </ExtendedAttribute>
43860       </ExtendedAttributeList>
43861       <Operation name="onsuccess" id="::Package::PackageInformationArraySuccessCallback::onsuccess">
43862         <webidl>        void onsuccess(<ref>PackageInformation</ref>[] informationArray);</webidl>
43863         <descriptive>
43864             <brief>
43865  Called when the asynchronous call completes successfully.
43866             </brief>
43867             <version>
43868  2.1
43869             </version>
43870         </descriptive>
43871         <Type type="void"/>
43872         <ArgumentList>
43873           <Argument name="informationArray">
43874             <descriptive>
43875                 <description><p>
43876  A list of installed packages information.
43877                 </p></description>
43878             </descriptive>
43879             <Type type="array">
43880               <Type name="PackageInformation"/>
43881             </Type>
43882           </Argument>
43883         </ArgumentList>
43884       </Operation>
43885     </Interface>
43886     <Interface name="PackageProgressCallback" id="::Package::PackageProgressCallback">
43887       <webidl>    [Callback, NoInterfaceObject] interface PackageProgressCallback {&#13;
43888 &#13;
43889 &#13;
43890         void onprogress(<ref>PackageId</ref> id, short progress);&#13;
43891 &#13;
43892 &#13;
43893         void oncomplete(<ref>PackageId</ref> id);&#13;
43894     };</webidl>
43895       <descriptive>
43896           <brief>
43897  This callback interface specifies subscriptions for any notification on the progress or completion of requests.
43898           </brief>
43899           <version>
43900  2.1
43901           </version>
43902       </descriptive>
43903       <ExtendedAttributeList>
43904         <ExtendedAttribute name="Callback">
43905           <webidl>Callback</webidl>
43906         </ExtendedAttribute>
43907         <ExtendedAttribute name="NoInterfaceObject">
43908           <webidl> NoInterfaceObject</webidl>
43909         </ExtendedAttribute>
43910       </ExtendedAttributeList>
43911       <Operation name="onprogress" id="::Package::PackageProgressCallback::onprogress">
43912         <webidl>        void onprogress(<ref>PackageId</ref> id, short progress);</webidl>
43913         <descriptive>
43914             <brief>
43915  Called while the request is in progress.
43916             </brief>
43917             <version>
43918  2.1
43919             </version>
43920         </descriptive>
43921         <Type type="void"/>
43922         <ArgumentList>
43923           <Argument name="id">
43924             <descriptive>
43925                 <description><p>
43926  The package ID
43927                 </p></description>
43928             </descriptive>
43929             <Type name="PackageId"/>
43930           </Argument>
43931           <Argument name="progress">
43932             <descriptive>
43933                 <description><p>
43934  The progress in percentage.
43935                 </p></description>
43936             </descriptive>
43937             <Type type="short"/>
43938           </Argument>
43939         </ArgumentList>
43940       </Operation>
43941       <Operation name="oncomplete" id="::Package::PackageProgressCallback::oncomplete">
43942         <webidl>        void oncomplete(<ref>PackageId</ref> id);</webidl>
43943         <descriptive>
43944             <brief>
43945  Called while the request is completed.
43946             </brief>
43947             <version>
43948  2.1
43949             </version>
43950         </descriptive>
43951         <Type type="void"/>
43952         <ArgumentList>
43953           <Argument name="id">
43954             <descriptive>
43955                 <description><p>
43956  The package ID
43957                 </p></description>
43958             </descriptive>
43959             <Type name="PackageId"/>
43960           </Argument>
43961         </ArgumentList>
43962       </Operation>
43963     </Interface>
43964     <Interface name="PackageInformationEventCallback" id="::Package::PackageInformationEventCallback">
43965       <webidl>    [Callback, NoInterfaceObject] interface PackageInformationEventCallback {&#13;
43966 &#13;
43967 &#13;
43968         void oninstalled(<ref>PackageInformation</ref> info);&#13;
43969 &#13;
43970 &#13;
43971         void onupdated(<ref>PackageInformation</ref> info);&#13;
43972 &#13;
43973 &#13;
43974         void onuninstalled(<ref>PackageId</ref> id);&#13;
43975     };</webidl>
43976       <descriptive>
43977           <brief>
43978  This callback interface specifies methods that are invoked when a package is installed, updated, or uninstalled.
43979           </brief>
43980           <version>
43981  2.1
43982           </version>
43983       </descriptive>
43984       <ExtendedAttributeList>
43985         <ExtendedAttribute name="Callback">
43986           <webidl>Callback</webidl>
43987         </ExtendedAttribute>
43988         <ExtendedAttribute name="NoInterfaceObject">
43989           <webidl> NoInterfaceObject</webidl>
43990         </ExtendedAttribute>
43991       </ExtendedAttributeList>
43992       <Operation name="oninstalled" id="::Package::PackageInformationEventCallback::oninstalled">
43993         <webidl>        void oninstalled(<ref>PackageInformation</ref> info);</webidl>
43994         <descriptive>
43995             <brief>
43996  Called when a package is installed.
43997             </brief>
43998             <version>
43999  2.1
44000             </version>
44001         </descriptive>
44002         <Type type="void"/>
44003         <ArgumentList>
44004           <Argument name="info">
44005             <descriptive>
44006                 <description><p>
44007  The information of the installed package
44008                 </p></description>
44009             </descriptive>
44010             <Type name="PackageInformation"/>
44011           </Argument>
44012         </ArgumentList>
44013       </Operation>
44014       <Operation name="onupdated" id="::Package::PackageInformationEventCallback::onupdated">
44015         <webidl>        void onupdated(<ref>PackageInformation</ref> info);</webidl>
44016         <descriptive>
44017             <brief>
44018  Called when a package is updated.
44019             </brief>
44020             <version>
44021  2.1
44022             </version>
44023         </descriptive>
44024         <Type type="void"/>
44025         <ArgumentList>
44026           <Argument name="info">
44027             <descriptive>
44028                 <description><p>
44029  The information of the updated package
44030                 </p></description>
44031             </descriptive>
44032             <Type name="PackageInformation"/>
44033           </Argument>
44034         </ArgumentList>
44035       </Operation>
44036       <Operation name="onuninstalled" id="::Package::PackageInformationEventCallback::onuninstalled">
44037         <webidl>        void onuninstalled(<ref>PackageId</ref> id);</webidl>
44038         <descriptive>
44039             <brief>
44040  Called when a package is uninstalled.
44041             </brief>
44042             <version>
44043  2.1
44044             </version>
44045         </descriptive>
44046         <Type type="void"/>
44047         <ArgumentList>
44048           <Argument name="id">
44049             <descriptive>
44050                 <description><p>
44051  The ID of the uninstalled package
44052                 </p></description>
44053             </descriptive>
44054             <Type name="PackageId"/>
44055           </Argument>
44056         </ArgumentList>
44057       </Operation>
44058     </Interface>
44059   </Module>
44060   <Module name="Power" id="::Power">
44061     <webidl>module Power {
44062
44063     enum PowerResource    { &quot;SCREEN&quot;, &quot;CPU&quot; };
44064
44065     enum PowerScreenState { &quot;SCREEN_OFF&quot;, &quot;SCREEN_DIM&quot;, &quot;SCREEN_NORMAL&quot;, &quot;SCREEN_BRIGHT&quot; };
44066
44067     enum PowerCpuState { &quot;CPU_AWAKE&quot; };
44068
44069     typedef (<ref>PowerScreenState</ref> or <ref>PowerCpuState</ref>) PowerState;
44070
44071     [NoInterfaceObject] interface PowerManagerObject {
44072         readonly attribute <ref>PowerManager</ref> power;
44073     };
44074     <ref>Tizen</ref> implements <ref>PowerManagerObject</ref>;
44075
44076    [NoInterfaceObject] interface PowerManager {
44077        void request(<ref>PowerResource</ref> resource, <ref>PowerState</ref> state) raises(<ref>WebAPIException</ref>);
44078
44079        void release(<ref>PowerResource</ref> resource) raises(<ref>WebAPIException</ref>);
44080
44081        void setScreenStateChangeListener(<ref>ScreenStateChangeCallback</ref> listener) raises(<ref>WebAPIException</ref>);
44082
44083        void unsetScreenStateChangeListener() raises(<ref>WebAPIException</ref>);
44084
44085        double getScreenBrightness() raises(<ref>WebAPIException</ref>);
44086
44087        void setScreenBrightness(double brightness) raises(<ref>WebAPIException</ref>);
44088
44089        boolean isScreenOn() raises(<ref>WebAPIException</ref>);
44090
44091        void restoreScreenBrightness() raises(<ref>WebAPIException</ref>);
44092
44093        void turnScreenOn() raises(<ref>WebAPIException</ref>);
44094
44095        void turnScreenOff() raises(<ref>WebAPIException</ref>);
44096    };
44097
44098    [Callback=FunctionOnly, NoInterfaceObject] interface ScreenStateChangeCallback {
44099        void onchanged(<ref>PowerScreenState</ref> previousState, <ref>PowerScreenState</ref> changedState);
44100    };
44101
44102 };</webidl>
44103     <descriptive>
44104         <brief>
44105  This API provides support for requesting power management related resource states.
44106         </brief>
44107        <description>
44108         <p>
44109 For more information on the Power features, see <a href="../../org.tizen.web.appprogramming/html/guide/sys_guide/power.htm">Power Guide</a>.
44110         </p>
44111        </description>
44112         <version>
44113  2.0
44114         </version>
44115     </descriptive>
44116     <Enum name="PowerResource" id="::Power::PowerResource">
44117       <webidl>    enum PowerResource    { &quot;SCREEN&quot;, &quot;CPU&quot; };</webidl>
44118       <descriptive>
44119           <brief>
44120  An enumerator that defines power resources with values aligned with <em>SystemInfo </em>property values.
44121           </brief>
44122          <description>
44123           <p>
44124 We support screen and cpu resources for now.
44125 Supported power resource states are provided in PowerScreenState and PowerCpuState enums respectively prefixed by the corresponding resource type.
44126           </p>
44127          </description>
44128           <version>
44129  2.0
44130           </version>
44131       </descriptive>
44132       <EnumValue stringvalue="SCREEN">
44133         <webidl> &quot;SCREEN</webidl>
44134       </EnumValue>
44135       <EnumValue stringvalue="CPU">
44136         <webidl> &quot;CPU</webidl>
44137       </EnumValue>
44138     </Enum>
44139     <Enum name="PowerScreenState" id="::Power::PowerScreenState">
44140       <webidl>    enum PowerScreenState { &quot;SCREEN_OFF&quot;, &quot;SCREEN_DIM&quot;, &quot;SCREEN_NORMAL&quot;, &quot;SCREEN_BRIGHT&quot; };</webidl>
44141       <descriptive>
44142           <brief>
44143  An enumerator that indicates the power state for screen resource.
44144           </brief>
44145          <description>
44146           <p>
44147 The supported values are:
44148           </p>
44149           <ul>
44150             <li>
44151 SCREEN_OFF - This screen state cannot be requested but can only be used in the state change callback.            </li>
44152             <li>
44153 SCREEN_DIM - The minimal screen state is set to <em>DIM</em> and device does not change to <em>OFF</em> state automatically.            </li>
44154             <li>
44155 SCREEN_NORMAL - The minimal screen state is set to <em>NORMAL</em> and device does not change to <em>DIM</em> state automatically.            </li>
44156             <li>
44157 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>
44158           </ul>
44159           <p>
44160 <em>DIM</em> state refers to the screen that the backlight is turned off
44161 <em>NORMAL</em> state refers to the default screen brightness that a user has configured for the device.
44162 <em>BRIGHT(Deprecated)</em> state refers to the maximum screen brightness that the device provides.
44163 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.
44164           </p>
44165          </description>
44166           <deprecated>
44167  SCREEN_BRIGHT is deprecated.
44168           </deprecated>
44169           <version>
44170  2.0
44171           </version>
44172       </descriptive>
44173       <EnumValue stringvalue="SCREEN_OFF">
44174         <webidl> &quot;SCREEN_OFF</webidl>
44175       </EnumValue>
44176       <EnumValue stringvalue="SCREEN_DIM">
44177         <webidl> &quot;SCREEN_DIM</webidl>
44178       </EnumValue>
44179       <EnumValue stringvalue="SCREEN_NORMAL">
44180         <webidl> &quot;SCREEN_NORMAL</webidl>
44181       </EnumValue>
44182       <EnumValue stringvalue="SCREEN_BRIGHT">
44183         <webidl> &quot;SCREEN_BRIGHT</webidl>
44184       </EnumValue>
44185     </Enum>
44186     <Enum name="PowerCpuState" id="::Power::PowerCpuState">
44187       <webidl>    enum PowerCpuState { &quot;CPU_AWAKE&quot; };</webidl>
44188       <descriptive>
44189           <brief>
44190  An enumerator that indicates the power state for cpu resource.
44191           </brief>
44192          <description>
44193           <p>
44194 The supported values are:
44195           </p>
44196           <ul>
44197             <li>
44198 CPU_AWAKE - The cpu state is set to be awaken and it does not go to <em>SLEEP</em> state automatically.            </li>
44199           </ul>
44200          </description>
44201           <version>
44202  2.0
44203           </version>
44204       </descriptive>
44205       <EnumValue stringvalue="CPU_AWAKE">
44206         <webidl> &quot;CPU_AWAKE</webidl>
44207       </EnumValue>
44208     </Enum>
44209     <Typedef name="PowerState" id="::Power::PowerState">
44210       <webidl>    typedef (<ref>PowerScreenState</ref> or <ref>PowerCpuState</ref>) PowerState;</webidl>
44211       <descriptive>
44212           <brief>
44213  The supported power states in general.
44214 It can be either a PowerScreenState or a PowerCpuState.
44215           </brief>
44216           <version>
44217  2.0
44218           </version>
44219       </descriptive>
44220       <Type type="union">
44221         <Type name="PowerScreenState"/>
44222         <Type name="PowerCpuState"/>
44223       </Type>
44224     </Typedef>
44225     <Interface name="PowerManagerObject" id="::Power::PowerManagerObject">
44226       <webidl>    [NoInterfaceObject] interface PowerManagerObject {
44227         readonly attribute <ref>PowerManager</ref> power;
44228     };</webidl>
44229       <descriptive>
44230           <brief>
44231  This interface defines what is instantiated by the <em>Tizen</em> object from the Tizen Platform.
44232           </brief>
44233          <description>
44234           <p>
44235 There will be a <em>tizen.power </em>object that allows accessing of a functionality of the Power API.
44236           </p>
44237          </description>
44238           <version>
44239  2.0
44240           </version>
44241       </descriptive>
44242       <ExtendedAttributeList>
44243         <ExtendedAttribute name="NoInterfaceObject">
44244           <webidl>NoInterfaceObject</webidl>
44245         </ExtendedAttribute>
44246       </ExtendedAttributeList>
44247       <Attribute readonly="readonly" name="power" id="::Power::PowerManagerObject::power">
44248         <webidl>        readonly attribute <ref>PowerManager</ref> power;</webidl>
44249         <Type name="PowerManager"/>
44250       </Attribute>
44251     </Interface>
44252     <Implements name1="Tizen" name2="PowerManagerObject">
44253       <webidl>    <ref>Tizen</ref> implements <ref>PowerManagerObject</ref>;</webidl>
44254     </Implements>
44255     <Interface name="PowerManager" id="::Power::PowerManager">
44256       <webidl>   [NoInterfaceObject] interface PowerManager {
44257        void request(<ref>PowerResource</ref> resource, <ref>PowerState</ref> state) raises(<ref>WebAPIException</ref>);
44258
44259        void release(<ref>PowerResource</ref> resource) raises(<ref>WebAPIException</ref>);
44260
44261        void setScreenStateChangeListener(<ref>ScreenStateChangeCallback</ref> listener) raises(<ref>WebAPIException</ref>);
44262
44263        void unsetScreenStateChangeListener() raises(<ref>WebAPIException</ref>);
44264
44265        double getScreenBrightness() raises(<ref>WebAPIException</ref>);
44266
44267        void setScreenBrightness(double brightness) raises(<ref>WebAPIException</ref>);
44268
44269        boolean isScreenOn() raises(<ref>WebAPIException</ref>);
44270
44271        void restoreScreenBrightness() raises(<ref>WebAPIException</ref>);
44272
44273        void turnScreenOn() raises(<ref>WebAPIException</ref>);
44274
44275        void turnScreenOff() raises(<ref>WebAPIException</ref>);
44276    };</webidl>
44277       <descriptive>
44278           <brief>
44279  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.
44280           </brief>
44281           <version>
44282  2.0
44283           </version>
44284       </descriptive>
44285       <ExtendedAttributeList>
44286         <ExtendedAttribute name="NoInterfaceObject">
44287           <webidl>NoInterfaceObject</webidl>
44288         </ExtendedAttribute>
44289       </ExtendedAttributeList>
44290       <Operation name="request" id="::Power::PowerManager::request">
44291         <webidl>       void request(<ref>PowerResource</ref> resource, <ref>PowerState</ref> state) raises(<ref>WebAPIException</ref>);</webidl>
44292         <descriptive>
44293             <brief>
44294  Requests the minimum-state for a power resource.
44295             </brief>
44296             <version>
44297  2.0
44298             </version>
44299             <privilegelevel>
44300  public
44301             </privilegelevel>
44302             <privilege>
44303  http://tizen.org/privilege/power
44304             </privilege>
44305             <Code> tizen.power.request(&quot;SCREEN&quot;, &quot;SCREEN_NORMAL&quot;);
44306  </Code>
44307         </descriptive>
44308         <Type type="void"/>
44309         <ArgumentList>
44310           <Argument name="resource">
44311             <descriptive>
44312                 <description><p>
44313  The power resource for which the request is made.
44314                 </p></description>
44315             </descriptive>
44316             <Type name="PowerResource"/>
44317           </Argument>
44318           <Argument name="state">
44319             <descriptive>
44320                 <description><p>
44321  The minimal power state in which the power resource is desired to be.
44322                 </p></description>
44323             </descriptive>
44324             <Type name="PowerState"/>
44325           </Argument>
44326         </ArgumentList>
44327         <Raises>
44328           <RaiseException name="WebAPIException">
44329             <descriptive>
44330                 <description><p>
44331  with error type TypeMismatchError, if the input parameter is not
44332 compatible with the expected type.
44333                 </p></description>
44334                 <description><p>
44335  with error type NotSupportedError, if this feature is not supported.
44336                 </p></description>
44337                 <description><p>
44338  with error type InvalidValuesError, if any of the input
44339 parameters contain an invalid value.
44340                 </p></description>
44341                 <description><p>
44342  with error type SecurityError, if the application does not have the privilege to call this method.
44343                 </p></description>
44344                 <description><p>
44345  with error type UnknownError in any other error case.
44346                 </p></description>
44347             </descriptive>
44348           </RaiseException>
44349         </Raises>
44350       </Operation>
44351       <Operation name="release" id="::Power::PowerManager::release">
44352         <webidl>       void release(<ref>PowerResource</ref> resource) raises(<ref>WebAPIException</ref>);</webidl>
44353         <descriptive>
44354             <brief>
44355  Releases the power state request for the given resource.
44356             </brief>
44357             <version>
44358  2.0
44359             </version>
44360             <Code> // Release SCREEN resource.
44361  tizen.power.release(&quot;SCREEN&quot;);
44362  </Code>
44363         </descriptive>
44364         <Type type="void"/>
44365         <ArgumentList>
44366           <Argument name="resource">
44367             <descriptive>
44368                 <description><p>
44369  The resource for which requests are to be removed.
44370                 </p></description>
44371             </descriptive>
44372             <Type name="PowerResource"/>
44373           </Argument>
44374         </ArgumentList>
44375         <Raises>
44376           <RaiseException name="WebAPIException">
44377             <descriptive>
44378                 <description><p>
44379  with error type TypeMismatchError, if the input parameter is not
44380 compatible with the expected type.
44381                 </p></description>
44382                 <description><p>
44383  with error type NotSupportedError, if this feature is not supported.
44384                 </p></description>
44385                 <description><p>
44386  with error type InvalidValuesError, if any of the input
44387 parameters contain an invalid value.
44388                 </p></description>
44389                 <description><p>
44390  with error type UnknownError in any other error case.
44391                 </p></description>
44392             </descriptive>
44393           </RaiseException>
44394         </Raises>
44395       </Operation>
44396       <Operation name="setScreenStateChangeListener" id="::Power::PowerManager::setScreenStateChangeListener">
44397         <webidl>       void setScreenStateChangeListener(<ref>ScreenStateChangeCallback</ref> listener) raises(<ref>WebAPIException</ref>);</webidl>
44398         <descriptive>
44399             <brief>
44400  Sets the screen state change callback and monitors its state changes.
44401             </brief>
44402             <version>
44403  2.0
44404             </version>
44405             <Code> function onScreenStateChanged(previousState, changedState) {
44406    console.log(&quot;Screen state changed from &quot; + previousState + &quot; to &quot; + changedState);
44407  }
44408
44409  // Set the screen state change listener.
44410  tizen.power.setScreenStateChangeListener(onScreenStateChanged);
44411  </Code>
44412         </descriptive>
44413         <Type type="void"/>
44414         <ArgumentList>
44415           <Argument name="listener">
44416             <descriptive>
44417                 <description><p>
44418  The screen state change callback.
44419                 </p></description>
44420             </descriptive>
44421             <Type name="ScreenStateChangeCallback"/>
44422           </Argument>
44423         </ArgumentList>
44424         <Raises>
44425           <RaiseException name="WebAPIException">
44426             <descriptive>
44427                 <description><p>
44428  with error type TypeMismatchError, if the input parameter is not
44429 compatible with the expected type.
44430                 </p></description>
44431                 <description><p>
44432  with error type NotSupportedError, if this feature is not supported.
44433                 </p></description>
44434                 <description><p>
44435  with error type InvalidValuesError, if any of the input
44436 parameters contain an invalid value.
44437                 </p></description>
44438                 <description><p>
44439  with error type UnknownError in any other error case.
44440                 </p></description>
44441             </descriptive>
44442           </RaiseException>
44443         </Raises>
44444       </Operation>
44445       <Operation name="unsetScreenStateChangeListener" id="::Power::PowerManager::unsetScreenStateChangeListener">
44446         <webidl>       void unsetScreenStateChangeListener() raises(<ref>WebAPIException</ref>);</webidl>
44447         <descriptive>
44448             <brief>
44449  Unsets the screen state change callback and stop monitoring it.
44450             </brief>
44451             <version>
44452  2.0
44453             </version>
44454             <Code> // Unset the screen state change listener.
44455  tizen.power.unsetScreenStateChangeListener();
44456  </Code>
44457         </descriptive>
44458         <Type type="void"/>
44459         <ArgumentList/>
44460         <Raises>
44461           <RaiseException name="WebAPIException">
44462             <descriptive>
44463                 <description><p>
44464  with error type NotSupportedError, if this feature is not supported.
44465                 </p></description>
44466                 <description><p>
44467  with error type UnknownError in any other error case.
44468                 </p></description>
44469             </descriptive>
44470           </RaiseException>
44471         </Raises>
44472       </Operation>
44473       <Operation name="getScreenBrightness" id="::Power::PowerManager::getScreenBrightness">
44474         <webidl>       double getScreenBrightness() raises(<ref>WebAPIException</ref>);</webidl>
44475         <descriptive>
44476             <brief>
44477  Gets the screen brightness level of an application, from 0 to 1.
44478             </brief>
44479             <version>
44480  2.0
44481             </version>
44482             <Code> // Get the current screen brightness value.
44483  var screenBrightness = tizen.power.getScreenBrightness();
44484  </Code>
44485         </descriptive>
44486         <Type type="double">
44487           <descriptive>
44488               <description><p>
44489  double Current screen brightness value.
44490               </p></description>
44491           </descriptive>
44492         </Type>
44493         <ArgumentList/>
44494         <Raises>
44495           <RaiseException name="WebAPIException">
44496             <descriptive>
44497                 <description><p>
44498  with error type NotSupportedError, if this feature is not supported.
44499                 </p></description>
44500                 <description><p>
44501  with error type UnknownError in any other error case.
44502                 </p></description>
44503             </descriptive>
44504           </RaiseException>
44505         </Raises>
44506       </Operation>
44507       <Operation name="setScreenBrightness" id="::Power::PowerManager::setScreenBrightness">
44508         <webidl>       void setScreenBrightness(double brightness) raises(<ref>WebAPIException</ref>);</webidl>
44509         <descriptive>
44510             <brief>
44511  Sets the screen brightness level for an application, from 0 to 1.
44512             </brief>
44513            <description>
44514             <p>
44515 An approximation is made for best effort when the given value is not exactly applicable by the hardware or system.
44516             </p>
44517            </description>
44518             <version>
44519  2.0
44520             </version>
44521             <privilegelevel>
44522  public
44523             </privilegelevel>
44524             <privilege>
44525  http://tizen.org/privilege/power
44526             </privilege>
44527             <Code> // Set the screen brightness value for the application.
44528  tizen.power.setScreenBrightness(1);
44529  </Code>
44530         </descriptive>
44531         <Type type="void"/>
44532         <ArgumentList>
44533           <Argument name="brightness">
44534             <descriptive>
44535                 <description><p>
44536  The screen brightness value to set.
44537                 </p></description>
44538             </descriptive>
44539             <Type type="double"/>
44540           </Argument>
44541         </ArgumentList>
44542         <Raises>
44543           <RaiseException name="WebAPIException">
44544             <descriptive>
44545                 <description><p>
44546  with error type TypeMismatchError, if the input parameter is not
44547 compatible with the expected type.
44548                 </p></description>
44549                 <description><p>
44550  with error type NotSupportedError, if this feature is not supported.
44551                 </p></description>
44552                 <description><p>
44553  with error type InvalidValuesError, if any of the input
44554 parameters contain an invalid value.
44555                 </p></description>
44556                 <description><p>
44557  with error type SecurityError, if the application does not have the privilege to call this method.
44558                 </p></description>
44559                 <description><p>
44560  with error type UnknownError in any other error case.
44561                 </p></description>
44562             </descriptive>
44563           </RaiseException>
44564         </Raises>
44565       </Operation>
44566       <Operation name="isScreenOn" id="::Power::PowerManager::isScreenOn">
44567         <webidl>       boolean isScreenOn() raises(<ref>WebAPIException</ref>);</webidl>
44568         <descriptive>
44569             <brief>
44570  Returns <var>true</var> if the screen is on.
44571             </brief>
44572             <version>
44573  2.0
44574             </version>
44575             <Code> // Check whether the screen is on or off.
44576  var isScreenOn = tizen.power.isScreenOn();
44577  </Code>
44578         </descriptive>
44579         <Type type="boolean">
44580           <descriptive>
44581               <description><p>
44582  boolean true if screen is on.
44583               </p></description>
44584           </descriptive>
44585         </Type>
44586         <ArgumentList/>
44587         <Raises>
44588           <RaiseException name="WebAPIException">
44589             <descriptive>
44590                 <description><p>
44591  with error type NotSupportedError, if this feature is not supported.
44592                 </p></description>
44593                 <description><p>
44594  with error type UnknownError in any other error case.
44595                 </p></description>
44596             </descriptive>
44597           </RaiseException>
44598         </Raises>
44599       </Operation>
44600       <Operation name="restoreScreenBrightness" id="::Power::PowerManager::restoreScreenBrightness">
44601         <webidl>       void restoreScreenBrightness() raises(<ref>WebAPIException</ref>);</webidl>
44602         <descriptive>
44603             <brief>
44604  Restores the screen brightness to the system default setting value.
44605             </brief>
44606             <version>
44607  2.0
44608             </version>
44609             <Code> // Restore the screen brightness value to the system default setting value.
44610  tizen.power.restoreScreenBrightness();
44611  </Code>
44612         </descriptive>
44613         <Type type="void"/>
44614         <ArgumentList/>
44615         <Raises>
44616           <RaiseException name="WebAPIException">
44617             <descriptive>
44618                 <description><p>
44619  with error type NotSupportedError, if this feature is not supported.
44620                 </p></description>
44621                 <description><p>
44622  with error type UnknownError in any other error case.
44623                 </p></description>
44624             </descriptive>
44625           </RaiseException>
44626         </Raises>
44627       </Operation>
44628       <Operation name="turnScreenOn" id="::Power::PowerManager::turnScreenOn">
44629         <webidl>       void turnScreenOn() raises(<ref>WebAPIException</ref>);</webidl>
44630         <descriptive>
44631             <brief>
44632  Turns on the screen.
44633             </brief>
44634            <description>
44635             <p>
44636 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.
44637             </p>
44638            </description>
44639             <version>
44640  2.0
44641             </version>
44642             <privilegelevel>
44643  public
44644             </privilegelevel>
44645             <privilege>
44646  http://tizen.org/privilege/power
44647             </privilege>
44648             <Code> // Turn on the screen.
44649  tizen.power.turnScreenOn();
44650  </Code>
44651         </descriptive>
44652         <Type type="void"/>
44653         <ArgumentList/>
44654         <Raises>
44655           <RaiseException name="WebAPIException">
44656             <descriptive>
44657                 <description><p>
44658  with error type NotSupportedError, if this feature is not supported.
44659                 </p></description>
44660                 <description><p>
44661  with error type SecurityError, if the application does not have the privilege to call this method.
44662                 </p></description>
44663                 <description><p>
44664  with error type UnknownError in any other error case.
44665                 </p></description>
44666             </descriptive>
44667           </RaiseException>
44668         </Raises>
44669       </Operation>
44670       <Operation name="turnScreenOff" id="::Power::PowerManager::turnScreenOff">
44671         <webidl>       void turnScreenOff() raises(<ref>WebAPIException</ref>);</webidl>
44672         <descriptive>
44673             <brief>
44674  Turns off the screen.
44675             </brief>
44676            <description>
44677             <p>
44678 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
44679             </p>
44680            </description>
44681             <version>
44682  2.0
44683             </version>
44684             <privilegelevel>
44685  public
44686             </privilegelevel>
44687             <privilege>
44688  http://tizen.org/privilege/power
44689             </privilege>
44690             <Code> // Turn off the screen.
44691  tizen.power.turnScreenOff();
44692  </Code>
44693         </descriptive>
44694         <Type type="void"/>
44695         <ArgumentList/>
44696         <Raises>
44697           <RaiseException name="WebAPIException">
44698             <descriptive>
44699                 <description><p>
44700  with error type NotSupportedError, if this feature is not supported.
44701                 </p></description>
44702                 <description><p>
44703  with error type SecurityError, if the application does not have the privilege to call this method.
44704                 </p></description>
44705                 <description><p>
44706  with error type UnknownError in any other error case.
44707                 </p></description>
44708             </descriptive>
44709           </RaiseException>
44710         </Raises>
44711       </Operation>
44712     </Interface>
44713     <Interface name="ScreenStateChangeCallback" id="::Power::ScreenStateChangeCallback">
44714       <webidl>   [Callback=FunctionOnly, NoInterfaceObject] interface ScreenStateChangeCallback {
44715        void onchanged(<ref>PowerScreenState</ref> previousState, <ref>PowerScreenState</ref> changedState);
44716    };</webidl>
44717       <descriptive>
44718           <brief>
44719  This callback interface defines notification for the screen state changes.
44720           </brief>
44721           <version>
44722  2.0
44723           </version>
44724       </descriptive>
44725       <ExtendedAttributeList>
44726         <ExtendedAttribute name="Callback" value="FunctionOnly">
44727           <webidl>Callback</webidl>
44728         </ExtendedAttribute>
44729         <ExtendedAttribute name="NoInterfaceObject">
44730           <webidl> NoInterfaceObject</webidl>
44731         </ExtendedAttribute>
44732       </ExtendedAttributeList>
44733       <Operation name="onchanged" id="::Power::ScreenStateChangeCallback::onchanged">
44734         <webidl>       void onchanged(<ref>PowerScreenState</ref> previousState, <ref>PowerScreenState</ref> changedState);</webidl>
44735         <descriptive>
44736             <brief>
44737  Called on screen state change.
44738             </brief>
44739             <version>
44740  2.0
44741             </version>
44742         </descriptive>
44743         <Type type="void"/>
44744         <ArgumentList>
44745           <Argument name="previousState">
44746             <descriptive>
44747                 <description><p>
44748  The previous screen state.
44749                 </p></description>
44750             </descriptive>
44751             <Type name="PowerScreenState"/>
44752           </Argument>
44753           <Argument name="changedState">
44754             <descriptive>
44755                 <description><p>
44756  The changed screen state.
44757                 </p></description>
44758             </descriptive>
44759             <Type name="PowerScreenState"/>
44760           </Argument>
44761         </ArgumentList>
44762       </Operation>
44763     </Interface>
44764   </Module>
44765   <Module name="Push" id="::Push">
44766     <webidl>module Push {&#13;
44767 &#13;
44768     typedef DOMString PushRegistrationId;&#13;
44769 &#13;
44770 &#13;
44771     [NoInterfaceObject] interface PushManagerObject {&#13;
44772         readonly attribute <ref>PushManager</ref> push;&#13;
44773     };&#13;
44774     <ref>Tizen</ref> implements <ref>PushManagerObject</ref>;&#13;
44775 &#13;
44776 &#13;
44777     [NoInterfaceObject] interface PushManager {&#13;
44778 &#13;
44779       void registerService(<ref>ApplicationControl</ref> appControl, <ref>PushRegisterSuccessCallback</ref> successCallback,&#13;
44780                   optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);&#13;
44781 &#13;
44782 &#13;
44783       void unregisterService(optional <ref>SuccessCallback</ref>? successCallback,&#13;
44784                     optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);&#13;
44785 &#13;
44786 &#13;
44787       void connectService(<ref>PushNotificationCallback</ref> notificationCallback) raises(<ref>WebAPIException</ref>);&#13;
44788 &#13;
44789 &#13;
44790       void disconnectService() raises(<ref>WebAPIException</ref>);&#13;
44791 &#13;
44792 &#13;
44793       <ref>PushRegistrationId</ref> getRegistrationId() raises(<ref>WebAPIException</ref>);&#13;
44794     };&#13;
44795 &#13;
44796 &#13;
44797     [NoInterfaceObject] interface PushMessage {&#13;
44798 &#13;
44799         readonly attribute DOMString appData;&#13;
44800 &#13;
44801 &#13;
44802         readonly attribute DOMString alertMessage;&#13;
44803 &#13;
44804 &#13;
44805         readonly attribute Date date;&#13;
44806     };&#13;
44807 &#13;
44808 &#13;
44809     [Callback=FunctionOnly, NoInterfaceObject]&#13;
44810     interface PushRegisterSuccessCallback {&#13;
44811 &#13;
44812         void onsuccess(<ref>PushRegistrationId</ref> id);&#13;
44813     };&#13;
44814 &#13;
44815 &#13;
44816     [Callback=FunctionOnly, NoInterfaceObject]&#13;
44817     interface PushNotificationCallback {&#13;
44818 &#13;
44819         void onsuccess(<ref>PushMessage</ref> message);&#13;
44820     };&#13;
44821 };</webidl>
44822     <descriptive>
44823         <brief>
44824  This API provides the functionality for receiving push notifications
44825 from Tizen push server.
44826 The push service is a client daemon that maintains a permanent connection
44827 between your device and Tizen push server in order to process your registration
44828 and deregistration requests, deliver push notifications to applications on a device.
44829         </brief>
44830        <description>
44831         <p>
44832 If the application is connected, the push service passes the notification data over
44833 the connection. Otherwise, the push service posts UI notification with the data.
44834 It will be delivered when a user launches the application by selecting the posting.
44835         </p>
44836         <p>
44837 To receive push notifications, follow the steps below:
44838         </p>
44839         <ul>
44840           <li>
44841 Get administrative permission for an application on your device          </li>
44842           <li>
44843 Register the application          </li>
44844           <li>
44845 Connect to the push service          </li>
44846           <li>
44847 Get notification data          </li>
44848         </ul>
44849         <p>
44850 For more information on the Push features, see <a href="../../org.tizen.web.appprogramming/html/guide/communication_guide/push.htm">Push Guide</a>.
44851         </p>
44852        </description>
44853         <version>
44854  2.1
44855         </version>
44856         <def-api-feature identifier="http://tizen.org/feature/network.push">
44857           <descriptive>
44858            <description>
44859             <p>
44860 To guarantee this application running on a device with Push feature, define below in the config file:
44861             </p>
44862            </description>
44863           </descriptive>
44864         </def-api-feature>
44865     </descriptive>
44866     <Typedef name="PushRegistrationId" id="::Push::PushRegistrationId">
44867       <webidl>    typedef DOMString PushRegistrationId;</webidl>
44868       <descriptive>
44869           <brief>
44870  A push service registration identifier.
44871           </brief>
44872           <version>
44873  2.1
44874           </version>
44875       </descriptive>
44876       <Type type="DOMString"/>
44877     </Typedef>
44878     <Interface name="PushManagerObject" id="::Push::PushManagerObject">
44879       <webidl>    [NoInterfaceObject] interface PushManagerObject {&#13;
44880         readonly attribute <ref>PushManager</ref> push;&#13;
44881     };</webidl>
44882       <descriptive>
44883           <brief>
44884  This interface defines what is instantiated by the <em>Tizen </em>object from the Tizen Platform.
44885           </brief>
44886          <description>
44887           <p>
44888 There will be a <em>tizen.push </em>object that allows access to the functionality of the Push API.
44889           </p>
44890          </description>
44891           <version>
44892  2.1
44893           </version>
44894       </descriptive>
44895       <ExtendedAttributeList>
44896         <ExtendedAttribute name="NoInterfaceObject">
44897           <webidl>NoInterfaceObject</webidl>
44898         </ExtendedAttribute>
44899       </ExtendedAttributeList>
44900       <Attribute readonly="readonly" name="push" id="::Push::PushManagerObject::push">
44901         <webidl>        readonly attribute <ref>PushManager</ref> push;</webidl>
44902         <Type name="PushManager"/>
44903       </Attribute>
44904     </Interface>
44905     <Implements name1="Tizen" name2="PushManagerObject">
44906       <webidl>    <ref>Tizen</ref> implements <ref>PushManagerObject</ref>;</webidl>
44907     </Implements>
44908     <Interface name="PushManager" id="::Push::PushManager">
44909       <webidl>    [NoInterfaceObject] interface PushManager {&#13;
44910 &#13;
44911       void registerService(<ref>ApplicationControl</ref> appControl, <ref>PushRegisterSuccessCallback</ref> successCallback,&#13;
44912                   optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);&#13;
44913 &#13;
44914 &#13;
44915       void unregisterService(optional <ref>SuccessCallback</ref>? successCallback,&#13;
44916                     optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);&#13;
44917 &#13;
44918 &#13;
44919       void connectService(<ref>PushNotificationCallback</ref> notificationCallback) raises(<ref>WebAPIException</ref>);&#13;
44920 &#13;
44921 &#13;
44922       void disconnectService() raises(<ref>WebAPIException</ref>);&#13;
44923 &#13;
44924 &#13;
44925       <ref>PushRegistrationId</ref> getRegistrationId() raises(<ref>WebAPIException</ref>);&#13;
44926     };</webidl>
44927       <descriptive>
44928           <brief>
44929  This interface provides methods to manage push registration and notification.
44930           </brief>
44931           <version>
44932  2.1
44933           </version>
44934       </descriptive>
44935       <ExtendedAttributeList>
44936         <ExtendedAttribute name="NoInterfaceObject">
44937           <webidl>NoInterfaceObject</webidl>
44938         </ExtendedAttribute>
44939       </ExtendedAttributeList>
44940       <Operation name="registerService" id="::Push::PushManager::registerService">
44941         <webidl>      void registerService(<ref>ApplicationControl</ref> appControl, <ref>PushRegisterSuccessCallback</ref> successCallback,&#13;
44942                   optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
44943         <descriptive>
44944             <brief>
44945  Registers an application to the Tizen push server.
44946             </brief>
44947             <remark>
44948  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>.
44949             </remark>
44950            <description>
44951             <p>
44952 The <em>ErrorCallback()</em> is launched with these error types:
44953             </p>
44954             <ul>
44955               <li>
44956 InvalidValuesError - If any of the input parameters contain an invalid value.              </li>
44957               <li>
44958 UnknownError - If any other error occurs.              </li>
44959             </ul>
44960            </description>
44961             <version>
44962  2.1
44963             </version>
44964             <privilegelevel>
44965  public
44966             </privilegelevel>
44967             <privilege>
44968  http://tizen.org/privilege/push
44969             </privilege>
44970             <Code> // Defines the data to be used when this process is launched by notification service.
44971  var service = new tizen.ApplicationControl(&quot;http://tizen.org/appcontrol/operation/push_test&quot;);
44972
44973  // Defines the error callback.
44974  function errorCallback(response) {
44975    console.log( 'The following error occurred: ' +  response.name);
44976  }
44977
44978  // Defines the registration success callback
44979  function registerSuccessCallback(id) {
44980    console.log(&quot;Registration succeeded with id: &quot; + id);
44981  }
44982
44983  // Requests registration.
44984  tizen.push.registerService(service, registerSuccessCallback, errorCallback);
44985  </Code>
44986         </descriptive>
44987         <Type type="void"/>
44988         <ArgumentList>
44989           <Argument name="appControl">
44990             <descriptive>
44991                 <description><p>
44992  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>.
44993                 </p></description>
44994             </descriptive>
44995             <Type name="ApplicationControl"/>
44996           </Argument>
44997           <Argument name="successCallback">
44998             <descriptive>
44999                 <description><p>
45000  The method to be called when the registration request succeeds.
45001                 </p></description>
45002             </descriptive>
45003             <Type name="PushRegisterSuccessCallback"/>
45004           </Argument>
45005           <Argument optional="optional" name="errorCallback">
45006             <descriptive>
45007                 <description><p>
45008  The method to be called when the registration request fails.
45009                 </p></description>
45010             </descriptive>
45011             <Type name="ErrorCallback" nullable="nullable"/>
45012           </Argument>
45013         </ArgumentList>
45014         <Raises>
45015           <RaiseException name="WebAPIException">
45016             <descriptive>
45017                 <description><p>
45018  with error type TypeMismatchError, if any input parameter
45019 is not compatible with the expected type for that parameter.
45020                 </p></description>
45021                 <description><p>
45022  with error type InvalidValuesError, if any input parameters
45023 does not contain a valid value.
45024                 </p></description>
45025                 <description><p>
45026  with error type SecurityError, if the application does not have the privilege to call this method.
45027                 </p></description>
45028                 <description><p>
45029  with error type NotSupportedError, if this feature is not supported.
45030                 </p></description>
45031                 <description><p>
45032  with error type UnknownError, if any other error occurs.
45033                 </p></description>
45034             </descriptive>
45035           </RaiseException>
45036         </Raises>
45037       </Operation>
45038       <Operation name="unregisterService" id="::Push::PushManager::unregisterService">
45039         <webidl>      void unregisterService(optional <ref>SuccessCallback</ref>? successCallback,&#13;
45040                     optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
45041         <descriptive>
45042             <brief>
45043  Unregisters an application from the Tizen push server.
45044             </brief>
45045            <description>
45046             <p>
45047 The <em>ErrorCallback()</em> is launched with these error types:
45048             </p>
45049             <ul>
45050               <li>
45051 UnknownError - If an unknown error occurs.              </li>
45052             </ul>
45053            </description>
45054             <version>
45055  2.1
45056             </version>
45057             <privilegelevel>
45058  public
45059             </privilegelevel>
45060             <privilege>
45061  http://tizen.org/privilege/push
45062             </privilege>
45063             <Code> // Defines the error callback
45064  function errorCallback(response) {
45065    console.log( 'The following error occurred: ' +  response.name);
45066  }
45067
45068  // Defines the unregistration success callback
45069  function unregisterSuccessCallback() {
45070    console.log(&quot;Unregistration succeeded.&quot;);
45071  }
45072
45073  // Requests unregistration
45074  tizen.push.unregisterService(unregisterSuccessCallback, errorCallback);
45075  </Code>
45076         </descriptive>
45077         <Type type="void"/>
45078         <ArgumentList>
45079           <Argument optional="optional" name="successCallback">
45080             <descriptive>
45081                 <description><p>
45082  The method to be called when the request is successfully unregistered.
45083                 </p></description>
45084             </descriptive>
45085             <Type name="SuccessCallback" nullable="nullable"/>
45086           </Argument>
45087           <Argument optional="optional" name="errorCallback">
45088             <descriptive>
45089                 <description><p>
45090  The method to be called when the unregistration request fails.
45091                 </p></description>
45092             </descriptive>
45093             <Type name="ErrorCallback" nullable="nullable"/>
45094           </Argument>
45095         </ArgumentList>
45096         <Raises>
45097           <RaiseException name="WebAPIException">
45098             <descriptive>
45099                 <description><p>
45100  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
45101                 </p></description>
45102                 <description><p>
45103  with error type InvalidValuesError, if any input parameters does not contain a valid value.
45104                 </p></description>
45105                 <description><p>
45106  with error type SecurityError, if the application does not have the privilege to call this method.
45107                 </p></description>
45108                 <description><p>
45109  with error type NotSupportedError, if this feature is not supported.
45110                 </p></description>
45111                 <description><p>
45112  with error type UnknownError, if any other error occurs.
45113                 </p></description>
45114             </descriptive>
45115           </RaiseException>
45116         </Raises>
45117       </Operation>
45118       <Operation name="connectService" id="::Push::PushManager::connectService">
45119         <webidl>      void connectService(<ref>PushNotificationCallback</ref> notificationCallback) raises(<ref>WebAPIException</ref>);</webidl>
45120         <descriptive>
45121             <brief>
45122  Connects to the push service and receives push notifications.
45123             </brief>
45124             <version>
45125  2.1
45126             </version>
45127             <privilegelevel>
45128  public
45129             </privilegelevel>
45130             <privilege>
45131  http://tizen.org/privilege/push
45132             </privilege>
45133             <Code> // Defines the connect success callback
45134  function notificationCallback(noti) {
45135    console.log(&quot;Notification received with alert message: &quot; + noti.alertMessage);
45136  }
45137
45138  // Requests for push service connection
45139  tizen.push.connectService(notificationCallback, errorCallback);
45140  </Code>
45141         </descriptive>
45142         <Type type="void"/>
45143         <ArgumentList>
45144           <Argument name="notificationCallback">
45145             <descriptive>
45146                 <description><p>
45147  The method to be called when the notification message arrives.
45148                 </p></description>
45149             </descriptive>
45150             <Type name="PushNotificationCallback"/>
45151           </Argument>
45152         </ArgumentList>
45153         <Raises>
45154           <RaiseException name="WebAPIException">
45155             <descriptive>
45156                 <description><p>
45157  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
45158                 </p></description>
45159                 <description><p>
45160  with error type InvalidValuesError, if any input parameters does not contain a valid value.
45161                 </p></description>
45162                 <description><p>
45163  with error type SecurityError, if the application does not have the privilege to call this method.
45164                 </p></description>
45165                 <description><p>
45166  with error type NotSupportedError, if this feature is not supported.
45167                 </p></description>
45168                 <description><p>
45169  with error type UnknownError, if any other error occurs.
45170                 </p></description>
45171             </descriptive>
45172           </RaiseException>
45173         </Raises>
45174       </Operation>
45175       <Operation name="disconnectService" id="::Push::PushManager::disconnectService">
45176         <webidl>      void disconnectService() raises(<ref>WebAPIException</ref>);</webidl>
45177         <descriptive>
45178             <brief>
45179  Disconnects to the push service and stop receiving push notifications.
45180             </brief>
45181             <version>
45182  2.1
45183             </version>
45184             <privilegelevel>
45185  public
45186             </privilegelevel>
45187             <privilege>
45188  http://tizen.org/privilege/push
45189             </privilege>
45190             <Code> // Requests disconnection
45191  tizen.push.disconnectService();
45192  </Code>
45193         </descriptive>
45194         <Type type="void"/>
45195         <ArgumentList/>
45196         <Raises>
45197           <RaiseException name="WebAPIException">
45198             <descriptive>
45199                 <description><p>
45200  with error type SecurityError, if the application does not have the privilege to call this method.
45201                 </p></description>
45202                 <description><p>
45203  with error type NotSupportedError, if this feature is not supported.
45204                 </p></description>
45205                 <description><p>
45206  with error type UnknownError, if any other error occurs.
45207                 </p></description>
45208             </descriptive>
45209           </RaiseException>
45210         </Raises>
45211       </Operation>
45212       <Operation name="getRegistrationId" id="::Push::PushManager::getRegistrationId">
45213         <webidl>      <ref>PushRegistrationId</ref> getRegistrationId() raises(<ref>WebAPIException</ref>);</webidl>
45214         <descriptive>
45215             <brief>
45216  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.
45217             </brief>
45218             <version>
45219  2.1
45220             </version>
45221             <privilegelevel>
45222  public
45223             </privilegelevel>
45224             <privilege>
45225  http://tizen.org/privilege/push
45226             </privilege>
45227             <Code> var registrationId = tizen.push.getRegistrationId();
45228  if ( registrationId != NULL ) {
45229    console.log(&quot;The registration id: &quot; + registrationId);
45230  }
45231  </Code>
45232         </descriptive>
45233         <Type name="PushRegistrationId"/>
45234         <ArgumentList/>
45235         <Raises>
45236           <RaiseException name="WebAPIException">
45237             <descriptive>
45238                 <description><p>
45239  with error type SecurityError, if the application does not have the privilege to call this method.
45240                 </p></description>
45241                 <description><p>
45242  with error type NotSupportedError, if this feature is not supported.
45243                 </p></description>
45244                 <description><p>
45245  with error type UnknownError, if any other error occurs.
45246                 </p></description>
45247             </descriptive>
45248           </RaiseException>
45249         </Raises>
45250       </Operation>
45251     </Interface>
45252     <Interface name="PushMessage" id="::Push::PushMessage">
45253       <webidl>    [NoInterfaceObject] interface PushMessage {&#13;
45254 &#13;
45255         readonly attribute DOMString appData;&#13;
45256 &#13;
45257 &#13;
45258         readonly attribute DOMString alertMessage;&#13;
45259 &#13;
45260 &#13;
45261         readonly attribute Date date;&#13;
45262     };</webidl>
45263       <descriptive>
45264           <brief>
45265  This interface specifies the push message that is delivered from the push service.
45266           </brief>
45267           <version>
45268  2.1
45269           </version>
45270       </descriptive>
45271       <ExtendedAttributeList>
45272         <ExtendedAttribute name="NoInterfaceObject">
45273           <webidl>NoInterfaceObject</webidl>
45274         </ExtendedAttribute>
45275       </ExtendedAttributeList>
45276       <Attribute readonly="readonly" name="appData" id="::Push::PushMessage::appData">
45277         <webidl>        readonly attribute DOMString appData;</webidl>
45278         <descriptive>
45279             <brief>
45280  An attribute to store the push notification data.
45281             </brief>
45282            <description>
45283             <p>
45284 This data is the message that the sender wants to send and its length must be less than 1 KB.
45285             </p>
45286            </description>
45287             <version>
45288  2.1
45289             </version>
45290         </descriptive>
45291         <Type type="DOMString"/>
45292       </Attribute>
45293       <Attribute readonly="readonly" name="alertMessage" id="::Push::PushMessage::alertMessage">
45294         <webidl>        readonly attribute DOMString alertMessage;</webidl>
45295         <descriptive>
45296             <brief>
45297  An attribute to store the push notification message that is displayed as an alert message to the user.
45298             </brief>
45299             <version>
45300  2.1
45301             </version>
45302         </descriptive>
45303         <Type type="DOMString"/>
45304       </Attribute>
45305       <Attribute readonly="readonly" name="date" id="::Push::PushMessage::date">
45306         <webidl>        readonly attribute Date date;</webidl>
45307         <descriptive>
45308             <brief>
45309  An attribute to store the date/time when a push notification message is received.
45310             </brief>
45311             <version>
45312  2.1
45313             </version>
45314         </descriptive>
45315         <Type type="Date"/>
45316       </Attribute>
45317     </Interface>
45318     <Interface name="PushRegisterSuccessCallback" id="::Push::PushRegisterSuccessCallback">
45319       <webidl>    [Callback=FunctionOnly, NoInterfaceObject]&#13;
45320     interface PushRegisterSuccessCallback {&#13;
45321 &#13;
45322         void onsuccess(<ref>PushRegistrationId</ref> id);&#13;
45323     };</webidl>
45324       <descriptive>
45325           <brief>
45326  This interface specifies the success callback for push service registration request.
45327           </brief>
45328          <description>
45329           <p>
45330 This success callback is invoked when a push service registration request is successful.
45331           </p>
45332          </description>
45333           <version>
45334  2.1
45335           </version>
45336       </descriptive>
45337       <ExtendedAttributeList>
45338         <ExtendedAttribute name="Callback" value="FunctionOnly">
45339           <webidl>Callback</webidl>
45340         </ExtendedAttribute>
45341         <ExtendedAttribute name="NoInterfaceObject">
45342           <webidl> NoInterfaceObject</webidl>
45343         </ExtendedAttribute>
45344       </ExtendedAttributeList>
45345       <Operation name="onsuccess" id="::Push::PushRegisterSuccessCallback::onsuccess">
45346         <webidl>        void onsuccess(<ref>PushRegistrationId</ref> id);</webidl>
45347         <descriptive>
45348             <brief>
45349  Called when a push service registration request is successful.
45350             </brief>
45351             <version>
45352  2.1
45353             </version>
45354         </descriptive>
45355         <Type type="void"/>
45356         <ArgumentList>
45357           <Argument name="id">
45358             <descriptive>
45359                 <description><p>
45360  The registration ID.
45361                 </p></description>
45362             </descriptive>
45363             <Type name="PushRegistrationId"/>
45364           </Argument>
45365         </ArgumentList>
45366       </Operation>
45367     </Interface>
45368     <Interface name="PushNotificationCallback" id="::Push::PushNotificationCallback">
45369       <webidl>    [Callback=FunctionOnly, NoInterfaceObject]&#13;
45370     interface PushNotificationCallback {&#13;
45371 &#13;
45372         void onsuccess(<ref>PushMessage</ref> message);&#13;
45373     };</webidl>
45374       <descriptive>
45375           <brief>
45376  This interface specifies the notification callback for the received push notification message.
45377           </brief>
45378          <description>
45379           <p>
45380 This notification callback is invoked when the push notification message arrives.
45381           </p>
45382          </description>
45383           <version>
45384  2.1
45385           </version>
45386       </descriptive>
45387       <ExtendedAttributeList>
45388         <ExtendedAttribute name="Callback" value="FunctionOnly">
45389           <webidl>Callback</webidl>
45390         </ExtendedAttribute>
45391         <ExtendedAttribute name="NoInterfaceObject">
45392           <webidl> NoInterfaceObject</webidl>
45393         </ExtendedAttribute>
45394       </ExtendedAttributeList>
45395       <Operation name="onsuccess" id="::Push::PushNotificationCallback::onsuccess">
45396         <webidl>        void onsuccess(<ref>PushMessage</ref> message);</webidl>
45397         <descriptive>
45398             <brief>
45399  Called when the push notification message arrives.
45400             </brief>
45401             <version>
45402  2.1
45403             </version>
45404         </descriptive>
45405         <Type type="void"/>
45406         <ArgumentList>
45407           <Argument name="message">
45408             <descriptive>
45409                 <description><p>
45410  The received push notification message.
45411                 </p></description>
45412             </descriptive>
45413             <Type name="PushMessage"/>
45414           </Argument>
45415         </ArgumentList>
45416       </Operation>
45417     </Interface>
45418   </Module>
45419   <Module name="SecureElement" id="::SecureElement">
45420     <webidl>module SecureElement {&#13;
45421 &#13;
45422   [NoInterfaceObject] interface SEServiceManagerObject {&#13;
45423     readonly attribute <ref>SEService</ref> seService;&#13;
45424   };&#13;
45425   <ref>Tizen</ref> implements <ref>SEServiceManagerObject</ref>;&#13;
45426  &#13;
45427 &#13;
45428   [NoInterfaceObject] interface SEService&#13;
45429   {&#13;
45430 &#13;
45431     void getReaders(<ref>ReaderArraySuccessCallback</ref> successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);&#13;
45432 &#13;
45433     unsigned long registerSEListener(<ref>SEChangeListener</ref> listener) raises(<ref>WebAPIException</ref>);&#13;
45434 &#13;
45435     void unregisterSEListener(unsigned long id) raises(<ref>WebAPIException</ref>);&#13;
45436 &#13;
45437 &#13;
45438     void shutdown() raises(<ref>WebAPIException</ref>);&#13;
45439   };&#13;
45440 &#13;
45441 &#13;
45442   [NoInterfaceObject] interface Reader&#13;
45443   {&#13;
45444 &#13;
45445     readonly attribute boolean isPresent;&#13;
45446 &#13;
45447     DOMString getName() raises(<ref>WebAPIException</ref>);&#13;
45448 &#13;
45449     void openSession(<ref>SessionSuccessCallback</ref> successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);&#13;
45450 &#13;
45451     void closeSessions() raises(<ref>WebAPIException</ref>);&#13;
45452   };&#13;
45453 &#13;
45454   [NoInterfaceObject] interface Session&#13;
45455   {&#13;
45456 &#13;
45457     readonly attribute boolean isClosed;&#13;
45458 &#13;
45459     void openBasicChannel(byte[] aid, <ref>ChannelSuccessCallback</ref> successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);&#13;
45460 &#13;
45461     void openLogicalChannel(byte[] aid, <ref>ChannelSuccessCallback</ref> successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);&#13;
45462 &#13;
45463     byte[] getATR() raises(<ref>WebAPIException</ref>);&#13;
45464 &#13;
45465     void close() raises(<ref>WebAPIException</ref>);&#13;
45466 &#13;
45467     void closeChannels() raises(<ref>WebAPIException</ref>);&#13;
45468   };&#13;
45469 &#13;
45470 &#13;
45471   [NoInterfaceObject] interface Channel {&#13;
45472 &#13;
45473     readonly attribute boolean isBasicChannel;&#13;
45474 &#13;
45475     void close() raises(<ref>WebAPIException</ref>);&#13;
45476     &#13;
45477 &#13;
45478     void transmit(byte[] command, <ref>TransmitSuccessCallback</ref> successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);&#13;
45479   };&#13;
45480 &#13;
45481 &#13;
45482   [Callback, NoInterfaceObject] interface SEChangeListener {&#13;
45483 &#13;
45484     void onSEReady(<ref>Reader</ref> reader);&#13;
45485 &#13;
45486     void onSENotReady(<ref>Reader</ref> reader);&#13;
45487   };&#13;
45488 &#13;
45489 &#13;
45490   [Callback=FunctionOnly, NoInterfaceObject] interface ReaderArraySuccessCallback {&#13;
45491 &#13;
45492     void onsuccess(<ref>Reader</ref>[] readers);&#13;
45493   };&#13;
45494 &#13;
45495 &#13;
45496   [Callback=FunctionOnly, NoInterfaceObject] interface SessionSuccessCallback {&#13;
45497 &#13;
45498     void onsuccess(<ref>Session</ref> session);&#13;
45499   };&#13;
45500 &#13;
45501 &#13;
45502   [Callback=FunctionOnly, NoInterfaceObject] interface ChannelSuccessCallback {&#13;
45503 &#13;
45504     void onsuccess(<ref>Channel</ref> channel);&#13;
45505   };&#13;
45506 &#13;
45507 &#13;
45508   [Callback=FunctionOnly, NoInterfaceObject] interface TransmitSuccessCallback {&#13;
45509 &#13;
45510     void onsuccess(byte[] response);&#13;
45511   };&#13;
45512 };</webidl>
45513     <descriptive>
45514         <brief>
45515  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.
45516         </brief>
45517        <description>
45518         <p>
45519 This API provides functionality to communicate with applications in several Secure Elements.
45520         </p>
45521        </description>
45522         <version>
45523  2.1
45524         </version>
45525         <def-api-feature identifier="http://tizen.org/feature/network.secure_element">
45526           <descriptive>
45527            <description>
45528             <p>
45529 To guarantee this application running on a device with SecureElement feature, define below in the config file: 
45530             </p>
45531            </description>
45532           </descriptive>
45533         </def-api-feature>
45534     </descriptive>
45535     <Interface name="SEServiceManagerObject" id="::SecureElement::SEServiceManagerObject">
45536       <webidl>  [NoInterfaceObject] interface SEServiceManagerObject {&#13;
45537     readonly attribute <ref>SEService</ref> seService;&#13;
45538   };</webidl>
45539       <descriptive>
45540           <brief>
45541  Defines what is instantiated by the Tizen object from the Tizen Platform.
45542           </brief>
45543          <description>
45544           <p>
45545 There is a <em>tizen.seService</em> object that allows access to the functionalities of the Secure Element API.
45546           </p>
45547          </description>
45548           <version>
45549  2.1
45550           </version>
45551       </descriptive>
45552       <ExtendedAttributeList>
45553         <ExtendedAttribute name="NoInterfaceObject">
45554           <webidl>NoInterfaceObject</webidl>
45555         </ExtendedAttribute>
45556       </ExtendedAttributeList>
45557       <Attribute readonly="readonly" name="seService" id="::SecureElement::SEServiceManagerObject::seService">
45558         <webidl>    readonly attribute <ref>SEService</ref> seService;</webidl>
45559         <Type name="SEService"/>
45560       </Attribute>
45561     </Interface>
45562     <Implements name1="Tizen" name2="SEServiceManagerObject">
45563       <webidl>  <ref>Tizen</ref> implements <ref>SEServiceManagerObject</ref>;</webidl>
45564     </Implements>
45565     <Interface name="SEService" id="::SecureElement::SEService">
45566       <webidl>  [NoInterfaceObject] interface SEService&#13;
45567   {&#13;
45568 &#13;
45569     void getReaders(<ref>ReaderArraySuccessCallback</ref> successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);&#13;
45570 &#13;
45571     unsigned long registerSEListener(<ref>SEChangeListener</ref> listener) raises(<ref>WebAPIException</ref>);&#13;
45572 &#13;
45573     void unregisterSEListener(unsigned long id) raises(<ref>WebAPIException</ref>);&#13;
45574 &#13;
45575 &#13;
45576     void shutdown() raises(<ref>WebAPIException</ref>);&#13;
45577   };</webidl>
45578       <descriptive>
45579           <brief>
45580  This interface provides access to the available Secure Element readers.
45581           </brief>
45582          <description>
45583           <p>
45584 It provides access to the API functionalities through the <em>tizen.seService</em> interface.
45585           </p>
45586          </description>
45587           <version>
45588  2.1
45589           </version>
45590       </descriptive>
45591       <ExtendedAttributeList>
45592         <ExtendedAttribute name="NoInterfaceObject">
45593           <webidl>NoInterfaceObject</webidl>
45594         </ExtendedAttribute>
45595       </ExtendedAttributeList>
45596       <Operation name="getReaders" id="::SecureElement::SEService::getReaders">
45597         <webidl>    void getReaders(<ref>ReaderArraySuccessCallback</ref> successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
45598         <descriptive>
45599             <brief>
45600  Gets all the available Secure Element readers.
45601             </brief>
45602            <description>
45603             <p>
45604 The ErrorCallback is launched with these error types:
45605             </p>
45606             <ul>
45607               <li>
45608  UnknownError - If any error occurs during retrieval.              </li>
45609             </ul>
45610            </description>
45611             <version>
45612  2.1
45613             </version>
45614             <privilege>
45615  http://tizen.org/privilege/secureelement
45616             </privilege>
45617             <privilegelevel>
45618  public
45619             </privilegelevel>
45620             <Code> try {
45621   function success(readers) {
45622    for (var i = 0; i &#60; readers.length; i++) {
45623     if (readers[i].isPresent) {
45624      console.log (&quot;Reader Name : &quot; + readers[i].getName());
45625     }
45626    }
45627   }
45628   function error(err) {
45629    console.log (err.name + &quot;: &quot; + err.message);
45630   }
45631   tizen.seService.getReaders(success, error);
45632  } catch (err) {
45633   console.log (err.name + &quot;: &quot; + err.message);
45634  }
45635  </Code>
45636         </descriptive>
45637         <Type type="void"/>
45638         <ArgumentList>
45639           <Argument name="successCallback">
45640             <descriptive>
45641                 <description><p>
45642  The method to be invoked when the list of available Secure Element readers has been successfully retrieved
45643                 </p></description>
45644             </descriptive>
45645             <Type name="ReaderArraySuccessCallback"/>
45646           </Argument>
45647           <Argument optional="optional" name="errorCallback">
45648             <descriptive>
45649                 <description><p>
45650  The method to call when an error occurs
45651                 </p></description>
45652             </descriptive>
45653             <Type name="ErrorCallback" nullable="nullable"/>
45654           </Argument>
45655         </ArgumentList>
45656         <Raises>
45657           <RaiseException name="WebAPIException">
45658             <descriptive>
45659                 <description><p>
45660  with error type TypeMismatchError, if the input parameter is not compatible with the expected type for that parameter.
45661                 </p></description>
45662                 <description><p>
45663  with error type SecurityError, if the application does not have the privilege to call this method.
45664                 </p></description>
45665             </descriptive>
45666           </RaiseException>
45667         </Raises>
45668       </Operation>
45669       <Operation name="registerSEListener" id="::SecureElement::SEService::registerSEListener">
45670         <webidl>    unsigned long registerSEListener(<ref>SEChangeListener</ref> listener) raises(<ref>WebAPIException</ref>);</webidl>
45671         <descriptive>
45672             <brief>
45673  Registers a callback function that is invoked when an available Secure Element reader is detected.
45674             </brief>
45675             <version>
45676  2.1
45677             </version>
45678             <privilege>
45679  http://tizen.org/privilege/secureelement
45680             </privilege>
45681             <privilegelevel>
45682  public
45683             </privilegelevel>
45684             <Code> try {
45685   var seListener = tizen.seService.registerSEListener({
45686    onSEReady:function(reader) {
45687      console.log (reader.getName() + &quot;is ready.&quot;);
45688     }, onSENotReady:function(reader) {
45689      console.log (reader.getName() + &quot;is not ready.&quot;);
45690     }});
45691  } catch (err) {
45692   console.log (err.name + &quot;: &quot; + err.message);
45693  }
45694  </Code>
45695         </descriptive>
45696         <Type type="unsigned long">
45697           <descriptive>
45698               <description><p>
45699  unsigned long An identifier used to clear the watch subscription.
45700               </p></description>
45701           </descriptive>
45702         </Type>
45703         <ArgumentList>
45704           <Argument name="listener">
45705             <descriptive>
45706                 <description><p>
45707  A listener to be invoked for successful detection of available Secure Element readers.
45708                 </p></description>
45709             </descriptive>
45710             <Type name="SEChangeListener"/>
45711           </Argument>
45712         </ArgumentList>
45713         <Raises>
45714           <RaiseException name="WebAPIException">
45715             <descriptive>
45716                 <description><p>
45717  with error type TypeMismatchError, if the input parameter is not compatible with the expected type for that parameter.
45718                 </p></description>
45719                 <description><p>
45720  with error type SecurityError, if the application does not have the privilege to call this method.
45721                 </p></description>
45722                 <description><p>
45723  with error type UnknownError, if any other error occurs.
45724                 </p></description>
45725             </descriptive>
45726           </RaiseException>
45727         </Raises>
45728       </Operation>
45729       <Operation name="unregisterSEListener" id="::SecureElement::SEService::unregisterSEListener">
45730         <webidl>    void unregisterSEListener(unsigned long id) raises(<ref>WebAPIException</ref>);</webidl>
45731         <descriptive>
45732             <brief>
45733  Unregisters the listener from notifying any detection of an available Secure Element reader.
45734             </brief>
45735             <version>
45736  2.1
45737             </version>
45738             <privilege>
45739  http://tizen.org/privilege/secureelement
45740             </privilege>
45741             <privilegelevel>
45742  public
45743             </privilegelevel>
45744             <Code> var seListener; //seListener obtained from registerSEListener
45745  try {
45746   tizen.seService.unregisterSEListener(seListener);
45747  } catch (err) {
45748   console.log (err.name + &quot;: &quot; + err.message);
45749  }
45750  </Code>
45751         </descriptive>
45752         <Type type="void"/>
45753         <ArgumentList>
45754           <Argument name="id">
45755             <descriptive>
45756                 <description><p>
45757  A subscription identifier that is returned by the <em>registerSEListener()</em> method.
45758                 </p></description>
45759             </descriptive>
45760             <Type type="unsigned long"/>
45761           </Argument>
45762         </ArgumentList>
45763         <Raises>
45764           <RaiseException name="WebAPIException">
45765             <descriptive>
45766                 <description><p>
45767  with error type TypeMismatchError, if the input parameter is not compatible with the expected type for that parameter.
45768                 </p></description>
45769                 <description><p>
45770  with error type InvalidValuesError, if any of the input parameters contains an invalid value.
45771                 </p></description>
45772                 <description><p>
45773  with error type SecurityError, if the application does not have the privilege to call this method.
45774                 </p></description>
45775                 <description><p>
45776  with error type UnknownError, if any other error occurs.
45777                 </p></description>
45778             </descriptive>
45779           </RaiseException>
45780         </Raises>
45781       </Operation>
45782       <Operation name="shutdown" id="::SecureElement::SEService::shutdown">
45783         <webidl>    void shutdown() raises(<ref>WebAPIException</ref>);</webidl>
45784         <descriptive>
45785             <brief>
45786  Shuts down Secure Elements after releasing all resources.
45787             </brief>
45788             <version>
45789  2.1
45790             </version>
45791             <privilege>
45792  http://tizen.org/privilege/secureelement
45793             </privilege>
45794             <privilegelevel>
45795  public
45796             </privilegelevel>
45797             <Code> try {
45798   tizen.seService.shutdown();
45799  } catch (err) {
45800   console.log (err.name + &quot;: &quot; + err.message);
45801  }
45802  </Code>
45803         </descriptive>
45804         <Type type="void"/>
45805         <ArgumentList/>
45806         <Raises>
45807           <RaiseException name="WebAPIException">
45808             <descriptive>
45809                 <description><p>
45810  with error type SecurityError, if the application does not have the privilege to call this method.
45811                 </p></description>
45812                 <description><p>
45813  with error type UnknownError, if any other error occurs.
45814                 </p></description>
45815             </descriptive>
45816           </RaiseException>
45817         </Raises>
45818       </Operation>
45819     </Interface>
45820     <Interface name="Reader" id="::SecureElement::Reader">
45821       <webidl>  [NoInterfaceObject] interface Reader&#13;
45822   {&#13;
45823 &#13;
45824     readonly attribute boolean isPresent;&#13;
45825 &#13;
45826     DOMString getName() raises(<ref>WebAPIException</ref>);&#13;
45827 &#13;
45828     void openSession(<ref>SessionSuccessCallback</ref> successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);&#13;
45829 &#13;
45830     void closeSessions() raises(<ref>WebAPIException</ref>);&#13;
45831   };</webidl>
45832       <descriptive>
45833           <brief>
45834  Reader interface that is connected to this device.
45835           </brief>
45836          <description>
45837           <p>
45838 This interface offers methods to control sessions on the reader.
45839           </p>
45840          </description>
45841           <version>
45842  2.1
45843           </version>
45844       </descriptive>
45845       <ExtendedAttributeList>
45846         <ExtendedAttribute name="NoInterfaceObject">
45847           <webidl>NoInterfaceObject</webidl>
45848         </ExtendedAttribute>
45849       </ExtendedAttributeList>
45850       <Attribute readonly="readonly" name="isPresent" id="::SecureElement::Reader::isPresent">
45851         <webidl>    readonly attribute boolean isPresent;</webidl>
45852         <descriptive>
45853             <brief>
45854  An attribute to check whether a Secure Element is present on a reader.
45855             </brief>
45856             <version>
45857  2.1
45858             </version>
45859         </descriptive>
45860         <Type type="boolean"/>
45861       </Attribute>
45862       <Operation name="getName" id="::SecureElement::Reader::getName">
45863         <webidl>    DOMString getName() raises(<ref>WebAPIException</ref>);</webidl>
45864         <descriptive>
45865             <brief>
45866  Gets reader's name.
45867             </brief>
45868             <version>
45869  2.1
45870             </version>
45871             <privilege>
45872  http://tizen.org/privilege/secureelement
45873             </privilege>
45874             <privilegelevel>
45875  public
45876             </privilegelevel>
45877             <Code> try {
45878   function success(readers) {
45879    for (var i = 0; i &#60; readers.length; i++) {
45880     if (readers[i].isPresent) {
45881      console.log (&quot;Reader Name : &quot; + readers[i].getName());
45882     }
45883    }
45884   }
45885   function error(err) {
45886    console.log (err.name + &quot;: &quot; + err.message);
45887   }
45888   tizen.seService.getReaders(success, error);
45889  } catch (err) {
45890   console.log (err.name + &quot;: &quot; + err.message);
45891  }
45892  </Code>
45893         </descriptive>
45894         <Type type="DOMString">
45895           <descriptive>
45896               <description><p>
45897  DOMString The name of the reader.
45898               </p></description>
45899           </descriptive>
45900         </Type>
45901         <ArgumentList/>
45902         <Raises>
45903           <RaiseException name="WebAPIException">
45904             <descriptive>
45905                 <description><p>
45906  with error type SecurityError, if the application does not have the privilege to call this method.
45907                 </p></description>
45908                 <description><p>
45909  with error type UnknownError, if any other error occurs.
45910                 </p></description>
45911             </descriptive>
45912           </RaiseException>
45913         </Raises>
45914       </Operation>
45915       <Operation name="openSession" id="::SecureElement::Reader::openSession">
45916         <webidl>    void openSession(<ref>SessionSuccessCallback</ref> successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
45917         <descriptive>
45918             <brief>
45919  Opens a session on a reader.
45920             </brief>
45921            <description>
45922             <p>
45923 The ErrorCallback is launched with these error types:
45924             </p>
45925             <ul>
45926               <li>
45927  IOError - An error occurred in communication with the Secure Element in this reader.              </li>
45928               <li>
45929  InvalidStateError - If a Secure Element is not present on this reader.              </li>
45930               <li>
45931  UnknownError - If any other error occurs.              </li>
45932             </ul>
45933            </description>
45934             <version>
45935  2.1
45936             </version>
45937             <privilege>
45938  http://tizen.org/privilege/secureelement
45939             </privilege>
45940             <privilegelevel>
45941  public
45942             </privilegelevel>
45943             <Code> try {
45944   function success(session) {
45945    console.log (&quot;Open Session Success : &quot; + !session.isClosed);
45946   }
45947   function error(err) {
45948    console.log (err.name + &quot;: &quot; + err.message);
45949   }
45950   reader.openSession(success, error);
45951  } catch (err) {
45952   console.log (err.name + &quot;: &quot; + err.message);
45953  }
45954  </Code>
45955         </descriptive>
45956         <Type type="void"/>
45957         <ArgumentList>
45958           <Argument name="successCallback">
45959             <descriptive>
45960                 <description><p>
45961  The method to be invoked when a session has been successfully opened
45962                 </p></description>
45963             </descriptive>
45964             <Type name="SessionSuccessCallback"/>
45965           </Argument>
45966           <Argument optional="optional" name="errorCallback">
45967             <descriptive>
45968                 <description><p>
45969  The method to be called when an error occurs
45970                 </p></description>
45971             </descriptive>
45972             <Type name="ErrorCallback" nullable="nullable"/>
45973           </Argument>
45974         </ArgumentList>
45975         <Raises>
45976           <RaiseException name="WebAPIException">
45977             <descriptive>
45978                 <description><p>
45979  with error type TypeMismatchError, if the input parameter is not compatible with the expected type for that parameter.
45980                 </p></description>
45981                 <description><p>
45982  with error type SecurityError, if the application does not have the privilege to call this method.
45983                 </p></description>
45984             </descriptive>
45985           </RaiseException>
45986         </Raises>
45987       </Operation>
45988       <Operation name="closeSessions" id="::SecureElement::Reader::closeSessions">
45989         <webidl>    void closeSessions() raises(<ref>WebAPIException</ref>);</webidl>
45990         <descriptive>
45991             <brief>
45992  Closes all sessions opened on a reader.
45993             </brief>
45994             <version>
45995  2.1
45996             </version>
45997             <privilege>
45998  http://tizen.org/privilege/secureelement
45999             </privilege>
46000             <privilegelevel>
46001  public
46002             </privilegelevel>
46003             <Code> try {
46004   reader.closeSessions();
46005  } catch (err) {
46006   console.log (err.name + &quot;: &quot; + err.message);
46007  }
46008  </Code>
46009         </descriptive>
46010         <Type type="void"/>
46011         <ArgumentList/>
46012         <Raises>
46013           <RaiseException name="WebAPIException">
46014             <descriptive>
46015                 <description><p>
46016  with error type SecurityError, if the application does not have the privilege to call this method.
46017                 </p></description>
46018                 <description><p>
46019  with error type UnknownError in any other error case.
46020                 </p></description>
46021             </descriptive>
46022           </RaiseException>
46023         </Raises>
46024       </Operation>
46025     </Interface>
46026     <Interface name="Session" id="::SecureElement::Session">
46027       <webidl>  [NoInterfaceObject] interface Session&#13;
46028   {&#13;
46029 &#13;
46030     readonly attribute boolean isClosed;&#13;
46031 &#13;
46032     void openBasicChannel(byte[] aid, <ref>ChannelSuccessCallback</ref> successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);&#13;
46033 &#13;
46034     void openLogicalChannel(byte[] aid, <ref>ChannelSuccessCallback</ref> successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);&#13;
46035 &#13;
46036     byte[] getATR() raises(<ref>WebAPIException</ref>);&#13;
46037 &#13;
46038     void close() raises(<ref>WebAPIException</ref>);&#13;
46039 &#13;
46040     void closeChannels() raises(<ref>WebAPIException</ref>);&#13;
46041   };</webidl>
46042       <descriptive>
46043           <brief>
46044  This interface is connected to one of the readers and offers methods to control channels in a session.
46045           </brief>
46046           <version>
46047  2.1
46048           </version>
46049       </descriptive>
46050       <ExtendedAttributeList>
46051         <ExtendedAttribute name="NoInterfaceObject">
46052           <webidl>NoInterfaceObject</webidl>
46053         </ExtendedAttribute>
46054       </ExtendedAttributeList>
46055       <Attribute readonly="readonly" name="isClosed" id="::SecureElement::Session::isClosed">
46056         <webidl>    readonly attribute boolean isClosed;</webidl>
46057         <descriptive>
46058             <brief>
46059  An attribute to check whether a session is closed or not.
46060             </brief>
46061             <version>
46062  2.1
46063             </version>
46064         </descriptive>
46065         <Type type="boolean"/>
46066       </Attribute>
46067       <Operation name="openBasicChannel" id="::SecureElement::Session::openBasicChannel">
46068         <webidl>    void openBasicChannel(byte[] aid, <ref>ChannelSuccessCallback</ref> successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
46069         <descriptive>
46070             <brief>
46071  Opens a basic channel in a session.
46072 The basic channel (defined in the ISO7816-4 specification) is opened by default and its channel ID is <var>0</var>.
46073 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.
46074 Some Secure Elements might always deny opening a basic channel.
46075             </brief>
46076            <description>
46077             <p>
46078 The ErrorCallback is launched with these error types:
46079             </p>
46080             <ul>
46081               <li>
46082  IOError - If an error occurs while communicating with the Secure Element in the reader.              </li>
46083               <li>
46084  SecurityError - If access to this AID or the default application on this session is not allowed .              </li>
46085               <li>
46086  InvalidStateError - If this session is closed.               </li>
46087               <li>
46088  NotFoundError - If the application of the AID does not exist in the Secure Element.              </li>
46089               <li>
46090  NoChannelError - If basic channel is unavailable.              </li>
46091               <li>
46092  UnknownError - If any other error occurs.              </li>
46093             </ul>
46094            </description>
46095             <version>
46096  2.1
46097             </version>
46098             <privilege>
46099  http://tizen.org/privilege/secureelement
46100             </privilege>
46101             <privilegelevel>
46102  public
46103             </privilegelevel>
46104             <Code> try {
46105   function successChannel(channel) {
46106    if (channel.isBasicChannel) {
46107     console.log (&quot;Basic channel is opened.&quot;);
46108    } else {
46109     console.log (&quot;Logical channel is opened.&quot;);
46110    }
46111   }
46112   function errorChannel(err) {
46113    console.log (&quot;openBasicChannel Error :&quot; + err.name +&quot;: &quot; + err.message);
46114   }
46115
46116   function successSession(session) {
46117    console.log (&quot;Open Session Success : &quot; + !session.isClosed);
46118    // This aid is for test. Use aid for your applet in secure element.
46119    session.openBasicChannel([0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, 0xc, 0xd, 0xe], successChannel, errorChannel);
46120   }
46121   function errorSession(err) {
46122    console.log (&quot;openSession Error : &quot; + err.name + &quot;: &quot; + err.message);
46123   }
46124   reader.openSession(successSession, errorSession);
46125  } catch (err) {
46126   console.log (err.name + &quot;: &quot; + err.message);
46127  }
46128  </Code>
46129         </descriptive>
46130         <Type type="void"/>
46131         <ArgumentList>
46132           <Argument name="aid">
46133             <descriptive>
46134                 <description><p>
46135  The id of the applet to select on this channel.<br/>If the array is empty, the default applet is selected in this session.
46136                 </p></description>
46137             </descriptive>
46138             <Type type="array">
46139               <Type type="byte"/>
46140             </Type>
46141           </Argument>
46142           <Argument name="successCallback">
46143             <descriptive>
46144                 <description><p>
46145  The method to be invoked when a basic channel has been successfully opened
46146                 </p></description>
46147             </descriptive>
46148             <Type name="ChannelSuccessCallback"/>
46149           </Argument>
46150           <Argument optional="optional" name="errorCallback">
46151             <descriptive>
46152                 <description><p>
46153  The method to be called when an error occurs
46154                 </p></description>
46155             </descriptive>
46156             <Type name="ErrorCallback" nullable="nullable"/>
46157           </Argument>
46158         </ArgumentList>
46159         <Raises>
46160           <RaiseException name="WebAPIException">
46161             <descriptive>
46162                 <description><p>
46163  with error type TypeMismatchError, if the input parameter
46164 is not compatible with the expected type for that parameter.
46165                 </p></description>
46166                 <description><p>
46167  with error type InvalidValuesError, if the AID's length is not within the limit: 5 to 16(inclusive).
46168                 </p></description>
46169                 <description><p>
46170  with error type SecurityError, if the application does not have the privilege to call this method.
46171                 </p></description>
46172             </descriptive>
46173           </RaiseException>
46174         </Raises>
46175       </Operation>
46176       <Operation name="openLogicalChannel" id="::SecureElement::Session::openLogicalChannel">
46177         <webidl>    void openLogicalChannel(byte[] aid, <ref>ChannelSuccessCallback</ref> successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
46178         <descriptive>
46179             <brief>
46180  Opens a logical channel in a session by the specified applet id.
46181 The logical channel is defined in the ISO7816-4 specification.
46182             </brief>
46183            <description>
46184             <p>
46185 The ErrorCallback is launched with these error types:
46186             </p>
46187             <ul>
46188               <li>
46189  IOError - If an error occurs while communicating with the Secure Element in the reader.              </li>
46190               <li>
46191  SecurityError - If access to this AID or the default application in this session is not allowed.              </li>
46192               <li>
46193  InvalidStateError - If this session is closed.              </li>
46194               <li>
46195  NotFoundError - If the application of the AID does not exist in the Secure Element.              </li>
46196               <li>
46197  NoChannelError - If logical channel is unavailable.              </li>
46198               <li>
46199  UnknownError - If any other error occurs.              </li>
46200             </ul>
46201            </description>
46202             <version>
46203  2.1
46204             </version>
46205             <privilege>
46206  http://tizen.org/privilege/secureelement
46207             </privilege>
46208             <privilegelevel>
46209  public
46210             </privilegelevel>
46211             <Code> var session; //Session obtained from openSession callback
46212  try {
46213   function successChannel(channel) {
46214    if (channel.isBasicChannel) {
46215     console.log (&quot;Basic channel is opened.&quot;);
46216    } else {
46217     console.log (&quot;Logical channel is opened.&quot;);
46218    }
46219   }
46220   function errorChannel(err) {
46221    console.log (&quot;openLogicalChannel Error :&quot; + err.name + &quot;: &quot; + err.message);
46222   }
46223
46224    // This aid is for test. Use aid for your applet in secure element.
46225   session.openLogicalChannel([0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, 0xc, 0xd, 0xe], successChannel, errorChannel);
46226  } catch (err) {
46227   console.log (err.name + &quot;: &quot; + err.message);
46228  }
46229  </Code>
46230         </descriptive>
46231         <Type type="void"/>
46232         <ArgumentList>
46233           <Argument name="aid">
46234             <descriptive>
46235                 <description><p>
46236  The id of the applet to select on this channel<br/>If the array is empty, the default application is selected in this session.
46237                 </p></description>
46238             </descriptive>
46239             <Type type="array">
46240               <Type type="byte"/>
46241             </Type>
46242           </Argument>
46243           <Argument name="successCallback">
46244             <descriptive>
46245                 <description><p>
46246  The method to be invoked when a logical channel has been successfully opened
46247                 </p></description>
46248             </descriptive>
46249             <Type name="ChannelSuccessCallback"/>
46250           </Argument>
46251           <Argument optional="optional" name="errorCallback">
46252             <descriptive>
46253                 <description><p>
46254  The method to be called when an error occurs
46255                 </p></description>
46256             </descriptive>
46257             <Type name="ErrorCallback" nullable="nullable"/>
46258           </Argument>
46259         </ArgumentList>
46260         <Raises>
46261           <RaiseException name="WebAPIException">
46262             <descriptive>
46263                 <description><p>
46264  with error type TypeMismatchError, if the input parameter is not compatible with the expected type for that parameter.
46265                 </p></description>
46266                 <description><p>
46267  with error type InvalidValuesError, if the AID's length is not within the limit: 5 to 16(inclusive).
46268                 </p></description>
46269                 <description><p>
46270  with error type SecurityError, if the application does not have the privilege to call this method.
46271                 </p></description>
46272             </descriptive>
46273           </RaiseException>
46274         </Raises>
46275       </Operation>
46276       <Operation name="getATR" id="::SecureElement::Session::getATR">
46277         <webidl>    byte[] getATR() raises(<ref>WebAPIException</ref>);</webidl>
46278         <descriptive>
46279             <brief>
46280  Gets the answer to reset(ATR) of a Secure Element.
46281             </brief>
46282             <version>
46283  2.1
46284             </version>
46285             <privilege>
46286  http://tizen.org/privilege/secureelement
46287             </privilege>
46288             <privilegelevel>
46289  public
46290             </privilegelevel>
46291             <Code> var session; //Session obtained from openSession callback
46292  try {
46293   var atr = session.getATR();
46294  } catch (err) {
46295   console.log (err.name + &quot;: &quot; + err.message);
46296  }
46297  </Code>
46298         </descriptive>
46299         <Type type="array">
46300           <descriptive>
46301               <description><p>
46302  byte[] The ATR of a Secure Element.
46303               </p></description>
46304           </descriptive>
46305           <Type type="byte"/>
46306         </Type>
46307         <ArgumentList/>
46308         <Raises>
46309           <RaiseException name="WebAPIException">
46310             <descriptive>
46311                 <description><p>
46312  with error type SecurityError, if the application does not have the privilege to call this method.
46313                 </p></description>
46314                 <description><p>
46315  with error type UnknownError, if any other error occurs.
46316                 </p></description>
46317             </descriptive>
46318           </RaiseException>
46319         </Raises>
46320       </Operation>
46321       <Operation name="close" id="::SecureElement::Session::close">
46322         <webidl>    void close() raises(<ref>WebAPIException</ref>);</webidl>
46323         <descriptive>
46324             <brief>
46325  Closes a session.
46326             </brief>
46327             <version>
46328  2.1
46329             </version>
46330             <privilege>
46331  http://tizen.org/privilege/secureelement
46332             </privilege>
46333             <privilegelevel>
46334  public
46335             </privilegelevel>
46336             <Code> var session; //Session obtained from openSession callback
46337  try {
46338   session.close();
46339  } catch (err) {
46340   console.log (err.name + &quot;: &quot; + err.message);
46341  }
46342  </Code>
46343         </descriptive>
46344         <Type type="void"/>
46345         <ArgumentList/>
46346         <Raises>
46347           <RaiseException name="WebAPIException">
46348             <descriptive>
46349                 <description><p>
46350  with error type SecurityError, if the application does not have the privilege to call this method.
46351                 </p></description>
46352                 <description><p>
46353  with error type UnknownError, if any other error occurs.
46354                 </p></description>
46355             </descriptive>
46356           </RaiseException>
46357         </Raises>
46358       </Operation>
46359       <Operation name="closeChannels" id="::SecureElement::Session::closeChannels">
46360         <webidl>    void closeChannels() raises(<ref>WebAPIException</ref>);</webidl>
46361         <descriptive>
46362             <brief>
46363  Closes all channels on this session.
46364             </brief>
46365             <version>
46366  2.1
46367             </version>
46368             <privilege>
46369  http://tizen.org/privilege/secureelement
46370             </privilege>
46371             <privilegelevel>
46372  public
46373             </privilegelevel>
46374             <Code> var session; //Session obtained from openSession callback 
46375  try {
46376   session.closeChannels();
46377  } catch (err) {
46378   console.log (err.name + &quot;: &quot; + err.message);
46379  }
46380  </Code>
46381         </descriptive>
46382         <Type type="void"/>
46383         <ArgumentList/>
46384         <Raises>
46385           <RaiseException name="WebAPIException">
46386             <descriptive>
46387                 <description><p>
46388  with error type SecurityError, if the application does not have the privilege to call this method.
46389                 </p></description>
46390                 <description><p>
46391  with error type UnknownError in any other error case.
46392                 </p></description>
46393             </descriptive>
46394           </RaiseException>
46395         </Raises>
46396       </Operation>
46397     </Interface>
46398     <Interface name="Channel" id="::SecureElement::Channel">
46399       <webidl>  [NoInterfaceObject] interface Channel {&#13;
46400 &#13;
46401     readonly attribute boolean isBasicChannel;&#13;
46402 &#13;
46403     void close() raises(<ref>WebAPIException</ref>);&#13;
46404     &#13;
46405 &#13;
46406     void transmit(byte[] command, <ref>TransmitSuccessCallback</ref> successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);&#13;
46407   };</webidl>
46408       <descriptive>
46409           <brief>
46410  This interface is open to a Secure Element and offers methods to send Application Protocol Data Units(APDU) to the Secure Element.
46411 The channel is defined in the ISO7816-4.
46412           </brief>
46413           <version>
46414  2.1
46415           </version>
46416       </descriptive>
46417       <ExtendedAttributeList>
46418         <ExtendedAttribute name="NoInterfaceObject">
46419           <webidl>NoInterfaceObject</webidl>
46420         </ExtendedAttribute>
46421       </ExtendedAttributeList>
46422       <Attribute readonly="readonly" name="isBasicChannel" id="::SecureElement::Channel::isBasicChannel">
46423         <webidl>    readonly attribute boolean isBasicChannel;</webidl>
46424         <descriptive>
46425             <brief>
46426  An attribute to check whether it is a basic channel or not.
46427             </brief>
46428             <version>
46429  2.1
46430             </version>
46431         </descriptive>
46432         <Type type="boolean"/>
46433       </Attribute>
46434       <Operation name="close" id="::SecureElement::Channel::close">
46435         <webidl>    void close() raises(<ref>WebAPIException</ref>);</webidl>
46436         <descriptive>
46437             <brief>
46438  Closes a channel.
46439             </brief>
46440             <version>
46441  2.1
46442             </version>
46443             <privilege>
46444  http://tizen.org/privilege/secureelement
46445             </privilege>
46446             <privilegelevel>
46447  public
46448             </privilegelevel>
46449             <Code> var channel; //Obtained from openLogicalChannel or openBasicChannel
46450  try {
46451   channel.close();
46452  } catch (err) {
46453   console.log (err.name + &quot;: &quot; + err.message);
46454  }
46455  </Code>
46456         </descriptive>
46457         <Type type="void"/>
46458         <ArgumentList/>
46459         <Raises>
46460           <RaiseException name="WebAPIException">
46461             <descriptive>
46462                 <description><p>
46463  with error type SecurityError, if the application does not have the privilege to call this method.
46464                 </p></description>
46465                 <description><p>
46466  with error type UnknownError, if any other error occurs.
46467                 </p></description>
46468             </descriptive>
46469           </RaiseException>
46470         </Raises>
46471       </Operation>
46472       <Operation name="transmit" id="::SecureElement::Channel::transmit">
46473         <webidl>    void transmit(byte[] command, <ref>TransmitSuccessCallback</ref> successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
46474         <descriptive>
46475             <brief>
46476  Transmits an APDU command to a Secure Element. The APDU command is defined in ISO7816-4.
46477             </brief>
46478            <description>
46479             <p>
46480 Some commands that are not allowed to be sent are:
46481             </p>
46482             <ul>
46483               <li>
46484  MANAGE_CHANNEL commands.               </li>
46485               <li>
46486  SELECT by DF Name (p1=04).               </li>
46487               <li>
46488  The commands that CLA bytes with channel numbers are de-masked.               </li>
46489             </ul>
46490             <p>
46491 The ErrorCallback is launched with these error types:
46492             </p>
46493             <ul>
46494               <li>
46495  InvalidValuesError - If the command contain an invalid value.              </li>
46496               <li>
46497  IOError - An error occurred while communicating with the Secure Element in the reader.              </li>
46498               <li>
46499  SecurityError - If the command is not allowed.              </li>
46500               <li>
46501  InvalidStateError - If this channel is closed.              </li>
46502               <li>
46503  UnknownError - If any other error occurs.              </li>
46504             </ul>
46505            </description>
46506             <version>
46507  2.1
46508             </version>
46509             <privilege>
46510  http://tizen.org/privilege/secureelement
46511             </privilege>
46512             <privilegelevel>
46513  public
46514             </privilegelevel>
46515         </descriptive>
46516         <Type type="void"/>
46517         <ArgumentList>
46518           <Argument name="command">
46519             <descriptive>
46520                 <description><p>
46521  The APDU command to transmit through this channel
46522                 </p></description>
46523             </descriptive>
46524             <Type type="array">
46525               <Type type="byte"/>
46526             </Type>
46527           </Argument>
46528           <Argument name="successCallback">
46529             <descriptive>
46530                 <description><p>
46531  The method to be invoked when a command has been successfully transmitted
46532                 </p></description>
46533             </descriptive>
46534             <Type name="TransmitSuccessCallback"/>
46535           </Argument>
46536           <Argument optional="optional" name="errorCallback">
46537             <descriptive>
46538                 <description><p>
46539  The method to be called when an error occurs
46540                 </p></description>
46541             </descriptive>
46542             <Type name="ErrorCallback" nullable="nullable"/>
46543           </Argument>
46544         </ArgumentList>
46545         <Raises>
46546           <RaiseException name="WebAPIException">
46547             <descriptive>
46548                 <description><p>
46549  with error type TypeMismatchError, if the input parameter is not compatible with the expected type for that parameter.
46550                 </p></description>
46551                 <description><p>
46552  with error type SecurityError, if the application does not have the privilege to call this method.
46553                 </p></description>
46554             </descriptive>
46555           </RaiseException>
46556         </Raises>
46557       </Operation>
46558     </Interface>
46559     <Interface name="SEChangeListener" id="::SecureElement::SEChangeListener">
46560       <webidl>  [Callback, NoInterfaceObject] interface SEChangeListener {&#13;
46561 &#13;
46562     void onSEReady(<ref>Reader</ref> reader);&#13;
46563 &#13;
46564     void onSENotReady(<ref>Reader</ref> reader);&#13;
46565   };</webidl>
46566       <descriptive>
46567           <brief>
46568  This interface provides the success callback that is invoked when a Secure Element reader is detected or lost.
46569           </brief>
46570          <description>
46571           <p>
46572 It is used in <em>SEService.registerSEListener()</em>.
46573           </p>
46574          </description>
46575           <version>
46576  2.1
46577           </version>
46578       </descriptive>
46579       <ExtendedAttributeList>
46580         <ExtendedAttribute name="Callback">
46581           <webidl>Callback</webidl>
46582         </ExtendedAttribute>
46583         <ExtendedAttribute name="NoInterfaceObject">
46584           <webidl> NoInterfaceObject</webidl>
46585         </ExtendedAttribute>
46586       </ExtendedAttributeList>
46587       <Operation name="onSEReady" id="::SecureElement::SEChangeListener::onSEReady">
46588         <webidl>    void onSEReady(<ref>Reader</ref> reader);</webidl>
46589         <descriptive>
46590             <brief>
46591  Called when a Secure Element reader is detected.
46592             </brief>
46593             <version>
46594  2.1
46595             </version>
46596         </descriptive>
46597         <Type type="void"/>
46598         <ArgumentList>
46599           <Argument name="reader">
46600             <descriptive>
46601                 <description><p>
46602  A newly detected Secure Element reader
46603                 </p></description>
46604             </descriptive>
46605             <Type name="Reader"/>
46606           </Argument>
46607         </ArgumentList>
46608       </Operation>
46609       <Operation name="onSENotReady" id="::SecureElement::SEChangeListener::onSENotReady">
46610         <webidl>    void onSENotReady(<ref>Reader</ref> reader);</webidl>
46611         <descriptive>
46612             <brief>
46613  Called when a Secure Element reader is lost.
46614             </brief>
46615             <version>
46616  2.1
46617             </version>
46618         </descriptive>
46619         <Type type="void"/>
46620         <ArgumentList>
46621           <Argument name="reader">
46622             <descriptive>
46623                 <description><p>
46624  A lost Secure Element reader
46625                 </p></description>
46626             </descriptive>
46627             <Type name="Reader"/>
46628           </Argument>
46629         </ArgumentList>
46630       </Operation>
46631     </Interface>
46632     <Interface name="ReaderArraySuccessCallback" id="::SecureElement::ReaderArraySuccessCallback">
46633       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface ReaderArraySuccessCallback {&#13;
46634 &#13;
46635     void onsuccess(<ref>Reader</ref>[] readers);&#13;
46636   };</webidl>
46637       <descriptive>
46638           <brief>
46639  This callback interface provides a success callback that is invoked when a list of available Secure Element readers is retrieved.
46640           </brief>
46641          <description>
46642           <p>
46643 It specifies a success method with an array of <em>Reader</em> objects as an input parameter.
46644 It is used in asynchronous operations such as <em>SEService.getReaders()</em>.
46645           </p>
46646          </description>
46647           <version>
46648  2.1
46649           </version>
46650       </descriptive>
46651       <ExtendedAttributeList>
46652         <ExtendedAttribute name="Callback" value="FunctionOnly">
46653           <webidl>Callback</webidl>
46654         </ExtendedAttribute>
46655         <ExtendedAttribute name="NoInterfaceObject">
46656           <webidl> NoInterfaceObject</webidl>
46657         </ExtendedAttribute>
46658       </ExtendedAttributeList>
46659       <Operation name="onsuccess" id="::SecureElement::ReaderArraySuccessCallback::onsuccess">
46660         <webidl>    void onsuccess(<ref>Reader</ref>[] readers);</webidl>
46661         <descriptive>
46662             <brief>
46663  Called when an asynchronous call completes successfully.
46664             </brief>
46665             <version>
46666  2.1
46667             </version>
46668         </descriptive>
46669         <Type type="void"/>
46670         <ArgumentList>
46671           <Argument name="readers">
46672             <descriptive>
46673                 <description><p>
46674  A list of available Secure Element readers
46675                 </p></description>
46676             </descriptive>
46677             <Type type="array">
46678               <Type name="Reader"/>
46679             </Type>
46680           </Argument>
46681         </ArgumentList>
46682       </Operation>
46683     </Interface>
46684     <Interface name="SessionSuccessCallback" id="::SecureElement::SessionSuccessCallback">
46685       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface SessionSuccessCallback {&#13;
46686 &#13;
46687     void onsuccess(<ref>Session</ref> session);&#13;
46688   };</webidl>
46689       <descriptive>
46690           <brief>
46691  This interface specifies the success callback that is invoked when a session on a specific reader is open.
46692           </brief>
46693          <description>
46694           <p>
46695 This callback interface specifies a success method with a <em>Session</em> object as an input parameter.
46696 It is used in asynchronous operations such as <em>Reader.openSession()</em>.
46697           </p>
46698          </description>
46699           <version>
46700  2.1
46701           </version>
46702       </descriptive>
46703       <ExtendedAttributeList>
46704         <ExtendedAttribute name="Callback" value="FunctionOnly">
46705           <webidl>Callback</webidl>
46706         </ExtendedAttribute>
46707         <ExtendedAttribute name="NoInterfaceObject">
46708           <webidl> NoInterfaceObject</webidl>
46709         </ExtendedAttribute>
46710       </ExtendedAttributeList>
46711       <Operation name="onsuccess" id="::SecureElement::SessionSuccessCallback::onsuccess">
46712         <webidl>    void onsuccess(<ref>Session</ref> session);</webidl>
46713         <descriptive>
46714             <brief>
46715  Called when an asynchronous call completes successfully.
46716             </brief>
46717             <version>
46718  2.1
46719             </version>
46720         </descriptive>
46721         <Type type="void"/>
46722         <ArgumentList>
46723           <Argument name="session">
46724             <descriptive>
46725                 <description><p>
46726  An open session
46727                 </p></description>
46728             </descriptive>
46729             <Type name="Session"/>
46730           </Argument>
46731         </ArgumentList>
46732       </Operation>
46733     </Interface>
46734     <Interface name="ChannelSuccessCallback" id="::SecureElement::ChannelSuccessCallback">
46735       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface ChannelSuccessCallback {&#13;
46736 &#13;
46737     void onsuccess(<ref>Channel</ref> channel);&#13;
46738   };</webidl>
46739       <descriptive>
46740           <brief>
46741  This interface specifies the success callback that is invoked when a channel is open to communicate with a specific applet.
46742           </brief>
46743          <description>
46744           <p>
46745 This callback interface specifies a success method with a <em>Channel</em> object as an input parameter.
46746 It is used in asynchronous operations such as <em>Session.openBasicChannel() </em>or <em>Session.openLogicalChannel()</em>.
46747           </p>
46748          </description>
46749           <version>
46750  2.1
46751           </version>
46752       </descriptive>
46753       <ExtendedAttributeList>
46754         <ExtendedAttribute name="Callback" value="FunctionOnly">
46755           <webidl>Callback</webidl>
46756         </ExtendedAttribute>
46757         <ExtendedAttribute name="NoInterfaceObject">
46758           <webidl> NoInterfaceObject</webidl>
46759         </ExtendedAttribute>
46760       </ExtendedAttributeList>
46761       <Operation name="onsuccess" id="::SecureElement::ChannelSuccessCallback::onsuccess">
46762         <webidl>    void onsuccess(<ref>Channel</ref> channel);</webidl>
46763         <descriptive>
46764             <brief>
46765  Called when an asynchronous call completes successfully.
46766             </brief>
46767             <version>
46768  2.1
46769             </version>
46770         </descriptive>
46771         <Type type="void"/>
46772         <ArgumentList>
46773           <Argument name="channel">
46774             <descriptive>
46775                 <description><p>
46776  An open channel
46777                 </p></description>
46778             </descriptive>
46779             <Type name="Channel"/>
46780           </Argument>
46781         </ArgumentList>
46782       </Operation>
46783     </Interface>
46784     <Interface name="TransmitSuccessCallback" id="::SecureElement::TransmitSuccessCallback">
46785       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface TransmitSuccessCallback {&#13;
46786 &#13;
46787     void onsuccess(byte[] response);&#13;
46788   };</webidl>
46789       <descriptive>
46790           <brief>
46791  This interface specifies the success callback that is invoked when <em>Channel.transmit() </em>completes successfully.
46792           </brief>
46793          <description>
46794           <p>
46795 This callback interface specifies a success method with an array of bytes as an input parameter. It is used in <em>Channel.transmit()</em>.
46796           </p>
46797          </description>
46798           <version>
46799  2.1
46800           </version>
46801       </descriptive>
46802       <ExtendedAttributeList>
46803         <ExtendedAttribute name="Callback" value="FunctionOnly">
46804           <webidl>Callback</webidl>
46805         </ExtendedAttribute>
46806         <ExtendedAttribute name="NoInterfaceObject">
46807           <webidl> NoInterfaceObject</webidl>
46808         </ExtendedAttribute>
46809       </ExtendedAttributeList>
46810       <Operation name="onsuccess" id="::SecureElement::TransmitSuccessCallback::onsuccess">
46811         <webidl>    void onsuccess(byte[] response);</webidl>
46812         <descriptive>
46813             <brief>
46814  Called when an asynchronous call completes successfully.
46815             </brief>
46816             <version>
46817  2.1
46818             </version>
46819         </descriptive>
46820         <Type type="void"/>
46821         <ArgumentList>
46822           <Argument name="response">
46823             <descriptive>
46824                 <description><p>
46825  An APDU command response that is transmitted on a channel
46826                 </p></description>
46827             </descriptive>
46828             <Type type="array">
46829               <Type type="byte"/>
46830             </Type>
46831           </Argument>
46832         </ArgumentList>
46833       </Operation>
46834     </Interface>
46835   </Module>
46836   <Module name="SystemInfo" id="::SystemInfo">
46837     <webidl>module SystemInfo {
46838
46839   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; };
46840
46841   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; };
46842   
46843   enum SystemInfoDeviceOrientationStatus { &quot;PORTRAIT_PRIMARY&quot;, &quot;PORTRAIT_SECONDARY&quot;, &quot;LANDSCAPE_PRIMARY&quot;, &quot;LANDSCAPE_SECONDARY&quot; };
46844   
46845   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; };
46846   
46847   enum SystemInfoProfile { &quot;MOBILE_FULL&quot;, &quot;MOBILE_WEB&quot; };
46848
46849   [NoInterfaceObject] interface SystemInfoObject {
46850     readonly attribute <ref>SystemInfo</ref> systeminfo;
46851   };
46852   <ref>Tizen</ref> implements <ref>SystemInfoObject</ref>;
46853
46854   [NoInterfaceObject] interface SystemInfo {
46855
46856     <ref>SystemInfoDeviceCapability</ref> getCapabilities() raises(<ref>WebAPIException</ref>);
46857
46858     void getPropertyValue(<ref>SystemInfoPropertyId</ref> property,
46859                           <ref>SystemInfoPropertySuccessCallback</ref> successCallback,
46860                           optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
46861
46862     unsigned long addPropertyValueChangeListener(<ref>SystemInfoPropertyId</ref> property,
46863                                         <ref>SystemInfoPropertySuccessCallback</ref> successCallback,
46864                                         optional <ref>SystemInfoOptions</ref>? options) raises(<ref>WebAPIException</ref>);
46865
46866     void removePropertyValueChangeListener(unsigned long listenerId) raises(<ref>WebAPIException</ref>);
46867   };
46868
46869   [NoInterfaceObject] interface SystemInfoDeviceCapability {
46870     readonly attribute boolean bluetooth;
46871
46872     readonly attribute boolean nfc;
46873
46874     readonly attribute boolean nfcReservedPush ;
46875
46876     readonly attribute unsigned short multiTouchCount;
46877
46878     readonly attribute boolean inputKeyboard;
46879
46880     readonly attribute boolean inputKeyboardLayout;
46881
46882     readonly attribute boolean wifi;
46883
46884     readonly attribute boolean wifiDirect;
46885
46886     readonly attribute boolean opengles;
46887
46888     readonly attribute DOMString openglestextureFormat;
46889
46890     readonly attribute boolean openglesVersion1_1;
46891
46892     readonly attribute boolean openglesVersion2_0;
46893
46894     readonly attribute boolean fmRadio;
46895
46896     readonly attribute DOMString platformVersion raises(<ref>WebAPIException</ref>);
46897
46898     readonly attribute DOMString webApiVersion raises(<ref>WebAPIException</ref>);
46899
46900     readonly attribute DOMString nativeApiVersion raises(<ref>WebAPIException</ref>);
46901
46902     readonly attribute DOMString platformName;
46903
46904     readonly attribute boolean camera;
46905
46906     readonly attribute boolean cameraFront;
46907
46908     readonly attribute boolean cameraFrontFlash;
46909
46910     readonly attribute boolean cameraBack;
46911
46912     readonly attribute boolean cameraBackFlash;
46913
46914     readonly attribute boolean location;
46915
46916     readonly attribute boolean locationGps;
46917
46918     readonly attribute boolean locationWps;
46919
46920     readonly attribute boolean microphone;
46921
46922     readonly attribute boolean usbHost;
46923
46924     readonly attribute boolean usbAccessory;
46925
46926     readonly attribute boolean screenOutputRca;
46927
46928     readonly attribute boolean screenOutputHdmi;
46929
46930     readonly attribute DOMString platformCoreCpuArch;
46931
46932     readonly attribute DOMString platformCoreFpuArch;
46933
46934     readonly attribute boolean sipVoip;
46935
46936     readonly attribute DOMString duid;
46937
46938     readonly attribute boolean speechRecognition;
46939
46940     readonly attribute boolean speechSynthesis;
46941
46942     readonly attribute boolean accelerometer;
46943
46944     readonly attribute boolean accelerometerWakeup;
46945
46946     readonly attribute boolean barometer;
46947
46948     readonly attribute boolean barometerWakeup;
46949
46950     readonly attribute boolean gyroscope;
46951
46952     readonly attribute boolean gyroscopeWakeup;
46953
46954     readonly attribute boolean magnetometer;
46955
46956     readonly attribute boolean magnetometerWakeup;
46957
46958     readonly attribute boolean photometer;
46959
46960     readonly attribute boolean photometerWakeup;
46961
46962     readonly attribute boolean proximity;
46963
46964     readonly attribute boolean proximityWakeup;
46965
46966     readonly attribute boolean tiltmeter;
46967
46968     readonly attribute boolean tiltmeterWakeup;
46969
46970     readonly attribute boolean dataEncryption;
46971
46972     readonly attribute boolean graphicsAcceleration;
46973
46974     readonly attribute boolean push;
46975
46976     readonly attribute boolean telephony;
46977
46978     readonly attribute boolean telephonyMms;
46979
46980     readonly attribute boolean telephonySms;
46981
46982     readonly attribute boolean screenSizeNormal;
46983
46984     readonly attribute boolean screenSize480_800;
46985
46986     readonly attribute boolean screenSize720_1280;
46987
46988     readonly attribute boolean autoRotation;
46989
46990     readonly attribute boolean shellAppWidget;
46991
46992     readonly attribute boolean visionImageRecognition;
46993
46994     readonly attribute boolean visionQrcodeGeneration;
46995
46996     readonly attribute boolean visionQrcodeRecognition;
46997
46998     readonly attribute boolean visionFaceRecognition;
46999
47000     readonly attribute boolean secureElement;
47001         
47002     readonly attribute boolean nativeOspCompatible;
47003
47004     readonly attribute <ref>SystemInfoProfile</ref> profile;
47005   };  
47006   
47007   dictionary SystemInfoOptions {
47008     unsigned long timeout;
47009
47010     double highThreshold;
47011
47012     double lowThreshold;
47013   };
47014
47015   [Callback=FunctionOnly, NoInterfaceObject] interface SystemInfoPropertySuccessCallback {
47016     void onsuccess(<ref>SystemInfoProperty</ref> prop);
47017   };
47018
47019   [NoInterfaceObject] interface SystemInfoProperty {
47020   };
47021
47022   [NoInterfaceObject] interface SystemInfoBattery : <ref>SystemInfoProperty</ref> {
47023     readonly attribute double level;
47024
47025     readonly attribute boolean isCharging;
47026   };
47027
47028   [NoInterfaceObject] interface SystemInfoCpu : <ref>SystemInfoProperty</ref> {
47029     readonly attribute double load;
47030   };
47031
47032   [NoInterfaceObject] interface SystemInfoStorage : <ref>SystemInfoProperty</ref> {
47033     readonly attribute <ref>SystemInfoStorageUnit</ref>[] units;
47034   };
47035
47036   [NoInterfaceObject] interface SystemInfoStorageUnit : <ref>SystemInfoProperty</ref> {
47037     readonly attribute DOMString type;
47038
47039     readonly attribute unsigned long long capacity;
47040
47041     readonly attribute unsigned long long availableCapacity;
47042
47043     readonly attribute boolean isRemovable;
47044
47045     readonly attribute boolean isRemoveable;
47046   };
47047
47048   [NoInterfaceObject] interface SystemInfoDisplay : <ref>SystemInfoProperty</ref> {
47049     readonly attribute unsigned long resolutionWidth;
47050
47051     readonly attribute unsigned long resolutionHeight;
47052
47053     readonly attribute unsigned long dotsPerInchWidth;
47054
47055     readonly attribute unsigned long dotsPerInchHeight;
47056
47057     readonly attribute double physicalWidth;
47058
47059     readonly attribute double physicalHeight;
47060
47061     readonly attribute double brightness;
47062   };
47063
47064   [NoInterfaceObject] interface SystemInfoDeviceOrientation : <ref>SystemInfoProperty</ref> {
47065
47066     readonly attribute <ref>SystemInfoDeviceOrientationStatus</ref> status;
47067     readonly attribute boolean isAutoRotation;
47068   };
47069   
47070   [NoInterfaceObject] interface SystemInfoBuild : <ref>SystemInfoProperty</ref> {
47071
47072     readonly attribute DOMString model;
47073     readonly attribute DOMString manufacturer;
47074     readonly attribute DOMString buildVersion;
47075   };
47076
47077   [NoInterfaceObject] interface SystemInfoLocale : <ref>SystemInfoProperty</ref> {
47078
47079     readonly attribute DOMString language;
47080
47081     readonly attribute DOMString country;
47082   };
47083   
47084   [NoInterfaceObject] interface SystemInfoNetwork : <ref>SystemInfoProperty</ref> {    
47085
47086     readonly attribute <ref>SystemInfoNetworkType</ref> networkType;    
47087   };    
47088
47089    [NoInterfaceObject] interface SystemInfoWifiNetwork : <ref>SystemInfoProperty</ref> {    
47090
47091     readonly attribute DOMString status;    
47092     readonly attribute DOMString ssid;    
47093     readonly attribute DOMString ipAddress;    
47094      readonly attribute DOMString ipv6Address;    
47095     readonly attribute double signalStrength;    
47096   };    
47097
47098   [NoInterfaceObject] interface SystemInfoCellularNetwork : <ref>SystemInfoProperty</ref> {    
47099
47100     readonly attribute DOMString status;    
47101     readonly attribute DOMString apn;    
47102     readonly attribute DOMString ipAddress;    
47103     readonly attribute DOMString ipv6Address;    
47104     readonly attribute unsigned short mcc;    
47105     readonly attribute unsigned short mnc;    
47106     readonly attribute unsigned short cellId;    
47107     readonly attribute unsigned short lac;    
47108     readonly attribute boolean isRoaming;
47109     readonly attribute boolean isFlightMode;
47110     readonly attribute DOMString imei raises(<ref>WebAPIException</ref>);
47111   };
47112
47113   [NoInterfaceObject] interface SystemInfoSIM : <ref>SystemInfoProperty</ref> {
47114     readonly attribute <ref>SystemInfoSimState</ref> state raises(<ref>WebAPIException</ref>);
47115     readonly attribute DOMString operatorName raises(<ref>WebAPIException</ref>);
47116     readonly attribute DOMString msisdn raises(<ref>WebAPIException</ref>);
47117     readonly attribute DOMString iccid raises(<ref>WebAPIException</ref>);
47118     readonly attribute unsigned short mcc raises(<ref>WebAPIException</ref>);
47119     readonly attribute unsigned short mnc raises(<ref>WebAPIException</ref>);
47120     readonly attribute DOMString msin raises(<ref>WebAPIException</ref>);
47121     readonly attribute DOMString spn raises(<ref>WebAPIException</ref>);
47122   };    
47123   
47124   [NoInterfaceObject] interface SystemInfoPeripheral : <ref>SystemInfoProperty</ref> {
47125
47126     readonly attribute boolean isVideoOutputOn;
47127   };
47128 };</webidl>
47129     <descriptive>
47130         <brief>
47131  This specification defines interfaces and methods that provide web applications with access to various properties of a system.
47132         </brief>
47133        <description>
47134         <p>
47135 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. 
47136         </p>
47137         <p>
47138 The following provides an overview of the tree data structure:
47139         </p>
47140         <ul>
47141           <li>
47142 BATTERY          </li>
47143           <li>
47144 CPU          </li>
47145           <li>
47146 STORAGE          </li>
47147           <li>
47148 DISPLAY          </li>
47149           <li>
47150 DEVICE_ORIENTATION          </li>
47151           <li>
47152 BUILD          </li>
47153           <li>
47154 LOCALE          </li>
47155           <li>
47156 NETWORK          </li>
47157           <li>
47158 WIFI_NETWORK          </li>
47159           <li>
47160 CELLULAR_NETWORK          </li>
47161           <li>
47162 SIM          </li>
47163           <li>
47164 PERIPHERAL          </li>
47165         </ul>
47166         <p>
47167 For more information on the SystemInfo features, see <a href="../../org.tizen.web.appprogramming/html/guide/sys_guide/systeminfo.htm">System Information Guide</a>.
47168         </p>
47169        </description>
47170         <version>
47171  1.0
47172         </version>
47173     </descriptive>
47174     <Enum name="SystemInfoPropertyId" id="::SystemInfo::SystemInfoPropertyId">
47175       <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>
47176       <descriptive>
47177           <brief>
47178  The device property identifier.
47179           </brief>
47180           <version>
47181  2.0
47182           </version>
47183           <remark>
47184  LOCALE and PERIPHERAL are supported Since 2.1
47185           </remark>
47186       </descriptive>
47187       <EnumValue stringvalue="BATTERY">
47188         <webidl> &quot;BATTERY</webidl>
47189       </EnumValue>
47190       <EnumValue stringvalue="CPU">
47191         <webidl> &quot;CPU</webidl>
47192       </EnumValue>
47193       <EnumValue stringvalue="STORAGE">
47194         <webidl> &quot;STORAGE</webidl>
47195       </EnumValue>
47196       <EnumValue stringvalue="DISPLAY">
47197         <webidl> &quot;DISPLAY</webidl>
47198       </EnumValue>
47199       <EnumValue stringvalue="DEVICE_ORIENTATION">
47200         <webidl> &quot;DEVICE_ORIENTATION</webidl>
47201       </EnumValue>
47202       <EnumValue stringvalue="BUILD">
47203         <webidl> &quot;BUILD</webidl>
47204       </EnumValue>
47205       <EnumValue stringvalue="LOCALE">
47206         <webidl> &quot;LOCALE</webidl>
47207       </EnumValue>
47208       <EnumValue stringvalue="NETWORK">
47209         <webidl> &quot;NETWORK</webidl>
47210       </EnumValue>
47211       <EnumValue stringvalue="WIFI_NETWORK">
47212         <webidl> &quot;WIFI_NETWORK</webidl>
47213       </EnumValue>
47214       <EnumValue stringvalue="CELLULAR_NETWORK">
47215         <webidl> &quot;CELLULAR_NETWORK</webidl>
47216       </EnumValue>
47217       <EnumValue stringvalue="SIM">
47218         <webidl> &quot;SIM</webidl>
47219       </EnumValue>
47220       <EnumValue stringvalue="PERIPHERAL">
47221         <webidl> &quot;PERIPHERAL</webidl>
47222       </EnumValue>
47223     </Enum>
47224     <Enum name="SystemInfoNetworkType" id="::SystemInfo::SystemInfoNetworkType">
47225       <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>
47226       <descriptive>
47227           <brief>
47228  Data Network Type.
47229           </brief>
47230           <version>
47231  2.0
47232           </version>
47233       </descriptive>
47234       <EnumValue stringvalue="NONE">
47235         <webidl> &quot;NONE</webidl>
47236       </EnumValue>
47237       <EnumValue stringvalue="2G">
47238         <webidl> &quot;2G</webidl>
47239       </EnumValue>
47240       <EnumValue stringvalue="2.5G">
47241         <webidl> &quot;2.5G</webidl>
47242       </EnumValue>
47243       <EnumValue stringvalue="3G">
47244         <webidl> &quot;3G</webidl>
47245       </EnumValue>
47246       <EnumValue stringvalue="4G">
47247         <webidl> &quot;4G</webidl>
47248       </EnumValue>
47249       <EnumValue stringvalue="WIFI">
47250         <webidl> &quot;WIFI</webidl>
47251       </EnumValue>
47252       <EnumValue stringvalue="ETHERNET">
47253         <webidl> &quot;ETHERNET</webidl>
47254       </EnumValue>
47255       <EnumValue stringvalue="UNKNOWN">
47256         <webidl> &quot;UNKNOWN</webidl>
47257       </EnumValue>
47258     </Enum>
47259     <Enum name="SystemInfoDeviceOrientationStatus" id="::SystemInfo::SystemInfoDeviceOrientationStatus">
47260       <webidl>  enum SystemInfoDeviceOrientationStatus { &quot;PORTRAIT_PRIMARY&quot;, &quot;PORTRAIT_SECONDARY&quot;, &quot;LANDSCAPE_PRIMARY&quot;, &quot;LANDSCAPE_SECONDARY&quot; };</webidl>
47261       <descriptive>
47262           <brief>
47263  Device Orientation Status.
47264           </brief>
47265           <version>
47266  2.0
47267           </version>
47268       </descriptive>
47269       <EnumValue stringvalue="PORTRAIT_PRIMARY">
47270         <webidl> &quot;PORTRAIT_PRIMARY</webidl>
47271       </EnumValue>
47272       <EnumValue stringvalue="PORTRAIT_SECONDARY">
47273         <webidl> &quot;PORTRAIT_SECONDARY</webidl>
47274       </EnumValue>
47275       <EnumValue stringvalue="LANDSCAPE_PRIMARY">
47276         <webidl> &quot;LANDSCAPE_PRIMARY</webidl>
47277       </EnumValue>
47278       <EnumValue stringvalue="LANDSCAPE_SECONDARY">
47279         <webidl> &quot;LANDSCAPE_SECONDARY</webidl>
47280       </EnumValue>
47281     </Enum>
47282     <Enum name="SystemInfoSimState" id="::SystemInfo::SystemInfoSimState">
47283       <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>
47284       <descriptive>
47285           <brief>
47286  Sim State.
47287           </brief>
47288           <version>
47289  2.1
47290           </version>
47291       </descriptive>
47292       <EnumValue stringvalue="ABSENT">
47293         <webidl> &quot;ABSENT</webidl>
47294       </EnumValue>
47295       <EnumValue stringvalue="INITIALIZING">
47296         <webidl> &quot;INITIALIZING</webidl>
47297       </EnumValue>
47298       <EnumValue stringvalue="READY">
47299         <webidl> &quot;READY</webidl>
47300       </EnumValue>
47301       <EnumValue stringvalue="PIN_REQUIRED">
47302         <webidl> &quot;PIN_REQUIRED</webidl>
47303       </EnumValue>
47304       <EnumValue stringvalue="PUK_REQUIRED">
47305         <webidl> &quot;PUK_REQUIRED</webidl>
47306       </EnumValue>
47307       <EnumValue stringvalue="NETWORK_LOCKED">
47308         <webidl> &quot;NETWORK_LOCKED</webidl>
47309       </EnumValue>
47310       <EnumValue stringvalue="SIM_LOCKED">
47311         <webidl> &quot;SIM_LOCKED</webidl>
47312       </EnumValue>
47313       <EnumValue stringvalue="UNKNOWN">
47314         <webidl> &quot;UNKNOWN</webidl>
47315       </EnumValue>
47316     </Enum>
47317     <Enum name="SystemInfoProfile" id="::SystemInfo::SystemInfoProfile">
47318       <webidl>  enum SystemInfoProfile { &quot;MOBILE_FULL&quot;, &quot;MOBILE_WEB&quot; };</webidl>
47319       <descriptive>
47320           <brief>
47321  Device Profile.
47322           </brief>
47323           <version>
47324  2.2
47325           </version>
47326       </descriptive>
47327       <EnumValue stringvalue="MOBILE_FULL">
47328         <webidl> &quot;MOBILE_FULL</webidl>
47329       </EnumValue>
47330       <EnumValue stringvalue="MOBILE_WEB">
47331         <webidl> &quot;MOBILE_WEB</webidl>
47332       </EnumValue>
47333     </Enum>
47334     <Interface name="SystemInfoObject" id="::SystemInfo::SystemInfoObject">
47335       <webidl>  [NoInterfaceObject] interface SystemInfoObject {
47336     readonly attribute <ref>SystemInfo</ref> systeminfo;
47337   };</webidl>
47338       <descriptive>
47339           <brief>
47340  Defines what is instantiated by the <em>Tizen </em>object from the Tizen Platform.
47341           </brief>
47342          <description>
47343           <p>
47344 There will be a tizen.systeminfo object that allows accessing the
47345 functionality of the SystemInfo API.
47346           </p>
47347          </description>
47348           <version>
47349  1.0
47350           </version>
47351       </descriptive>
47352       <ExtendedAttributeList>
47353         <ExtendedAttribute name="NoInterfaceObject">
47354           <webidl>NoInterfaceObject</webidl>
47355         </ExtendedAttribute>
47356       </ExtendedAttributeList>
47357       <Attribute readonly="readonly" name="systeminfo" id="::SystemInfo::SystemInfoObject::systeminfo">
47358         <webidl>    readonly attribute <ref>SystemInfo</ref> systeminfo;</webidl>
47359         <Type name="SystemInfo"/>
47360       </Attribute>
47361     </Interface>
47362     <Implements name1="Tizen" name2="SystemInfoObject">
47363       <webidl>  <ref>Tizen</ref> implements <ref>SystemInfoObject</ref>;</webidl>
47364     </Implements>
47365     <Interface name="SystemInfo" id="::SystemInfo::SystemInfo">
47366       <webidl>  [NoInterfaceObject] interface SystemInfo {
47367
47368     <ref>SystemInfoDeviceCapability</ref> getCapabilities() raises(<ref>WebAPIException</ref>);
47369
47370     void getPropertyValue(<ref>SystemInfoPropertyId</ref> property,
47371                           <ref>SystemInfoPropertySuccessCallback</ref> successCallback,
47372                           optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
47373
47374     unsigned long addPropertyValueChangeListener(<ref>SystemInfoPropertyId</ref> property,
47375                                         <ref>SystemInfoPropertySuccessCallback</ref> successCallback,
47376                                         optional <ref>SystemInfoOptions</ref>? options) raises(<ref>WebAPIException</ref>);
47377
47378     void removePropertyValueChangeListener(unsigned long listenerId) raises(<ref>WebAPIException</ref>);
47379   };</webidl>
47380       <descriptive>
47381           <brief>
47382  This entry interface queries the information of a system.
47383           </brief>
47384          <description>
47385           <p>
47386 This API offers methods for retrieving system information
47387 and for subscribing notifications of system information changes.
47388           </p>
47389          </description>
47390       </descriptive>
47391       <ExtendedAttributeList>
47392         <ExtendedAttribute name="NoInterfaceObject">
47393           <webidl>NoInterfaceObject</webidl>
47394         </ExtendedAttribute>
47395       </ExtendedAttributeList>
47396       <Operation name="getCapabilities" id="::SystemInfo::SystemInfo::getCapabilities">
47397         <webidl>    <ref>SystemInfoDeviceCapability</ref> getCapabilities() raises(<ref>WebAPIException</ref>);</webidl>
47398         <descriptive>
47399             <brief>
47400  Gets the capabilities of the device. 
47401             </brief>
47402            <description>
47403             <p>
47404 The function must synchronously acquire the capabilities of the device. 
47405             </p>
47406            </description>
47407             <version>
47408  2.0
47409             </version>
47410             <Code> var deviceCapabilities;
47411  deviceCapabilities = tizen.systeminfo.getCapabilities();
47412  if (deviceCapabilities.bluetooth)
47413  {
47414      console.log(&quot;Bluetooth is supported&quot;);
47415  }
47416  </Code>
47417         </descriptive>
47418         <Type name="SystemInfoDeviceCapability"/>
47419         <ArgumentList/>
47420         <Raises>
47421           <RaiseException name="WebAPIException">
47422             <descriptive>
47423                 <description><p>
47424  with error type NotSupportedError, if this feature is not supported.
47425                 </p></description>
47426                 <description><p>
47427  with error type SecurityError, if this functionality is not allowed.
47428                 </p></description>
47429                 <description><p>
47430  with error type UnknownError in any other error case.
47431                 </p></description>
47432             </descriptive>
47433           </RaiseException>
47434         </Raises>
47435       </Operation>
47436       <Operation name="getPropertyValue" id="::SystemInfo::SystemInfo::getPropertyValue">
47437         <webidl>    void getPropertyValue(<ref>SystemInfoPropertyId</ref> property,
47438                           <ref>SystemInfoPropertySuccessCallback</ref> successCallback,
47439                           optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
47440         <descriptive>
47441             <brief>
47442  Gets the current value of a specified system property.
47443             </brief>
47444            <description>
47445             <p>
47446 The function must asynchronously acquire the current value of the requested property. If it is successful,
47447 the successCallback must be invoked with an object containing the information provided by the property.
47448             </p>
47449             <p>
47450 The <em>errorCallback() </em>can be launched with any of these error types:
47451             </p>
47452             <ul>
47453               <li>
47454 UnknownError - If any other error occurs.              </li>
47455             </ul>
47456            </description>
47457             <version>
47458  1.0
47459             </version>
47460             <Code> function onSuccessCallback(battery) {
47461      console.log(&quot;The battery level is &quot; + battery.level);
47462  }
47463
47464  function onErrorCallback(error) {
47465      console.log(&quot;An error occurred &quot; + error.message);
47466  }
47467
47468  tizen.systeminfo.getPropertyValue(&quot;BATTERY&quot;, onSuccessCallback, onErrorCallback);
47469  </Code>
47470         </descriptive>
47471         <Type type="void"/>
47472         <ArgumentList>
47473           <Argument name="property">
47474             <descriptive>
47475                 <description><p>
47476  The name of the property to retrieve.
47477                 </p></description>
47478             </descriptive>
47479             <Type name="SystemInfoPropertyId"/>
47480           </Argument>
47481           <Argument name="successCallback">
47482             <descriptive>
47483                 <description><p>
47484  Function called when the properties have been successfully retrieved.
47485                 </p></description>
47486             </descriptive>
47487             <Type name="SystemInfoPropertySuccessCallback"/>
47488           </Argument>
47489           <Argument optional="optional" name="errorCallback">
47490             <descriptive>
47491                 <description><p>
47492  Function called when an error occurred while retrieving the properties.
47493                 </p></description>
47494             </descriptive>
47495             <Type name="ErrorCallback" nullable="nullable"/>
47496           </Argument>
47497         </ArgumentList>
47498         <Raises>
47499           <RaiseException name="WebAPIException">
47500             <descriptive>
47501                 <description><p>
47502  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
47503                 </p></description>
47504                 <description><p>
47505  with error type SecurityError, if this functionality is not allowed.
47506                 </p></description>
47507                 <description><p>
47508  with error type UnknownError in any other error case.
47509                 </p></description>
47510             </descriptive>
47511           </RaiseException>
47512         </Raises>
47513       </Operation>
47514       <Operation name="addPropertyValueChangeListener" id="::SystemInfo::SystemInfo::addPropertyValueChangeListener">
47515         <webidl>    unsigned long addPropertyValueChangeListener(<ref>SystemInfoPropertyId</ref> property,
47516                                         <ref>SystemInfoPropertySuccessCallback</ref> successCallback,
47517                                         optional <ref>SystemInfoOptions</ref>? options) raises(<ref>WebAPIException</ref>);</webidl>
47518         <descriptive>
47519             <brief>
47520  Adds a listener to allow tracking of changes in one or more system properties.
47521             </brief>
47522            <description>
47523             <p>
47524 When called, it immediately returns and then asynchronously starts a watch process defined by the following steps:
47525             </p>
47526             <p>
47527 1. Register the successCallback to receive system events that the status of the requested properties may have changed.
47528             </p>
47529             <p>
47530 2. When a system event is successfully received invoke the associated successCallback with an object containing the property
47531 values.
47532             </p>
47533             <p>
47534 3. Repeat step 2 until removePropertyValueChangeListener function is called.
47535             </p>
47536             <p>
47537 If property value is 'BUILD', listener would not be registered because 'BUILD' property's value is a fixed value.
47538             </p>
47539            </description>
47540             <version>
47541  1.0
47542             </version>
47543             <Code> function onSuccessCallback(battery) {
47544      console.log(&quot;Low battery:  &quot; + battery.level);
47545  }
47546
47547
47548  tizen.systeminfo.addPropertyValueChangeListener(&quot;BATTERY&quot;, onSuccessCallback, {lowThreshold : 0.2});
47549  </Code>
47550         </descriptive>
47551         <Type type="unsigned long">
47552           <descriptive>
47553               <description><p>
47554  unsigned long An identifier used to clear the watch subscription.
47555               </p></description>
47556           </descriptive>
47557         </Type>
47558         <ArgumentList>
47559           <Argument name="property">
47560             <descriptive>
47561                 <description><p>
47562  The name of the property to retrieve.
47563                 </p></description>
47564             </descriptive>
47565             <Type name="SystemInfoPropertyId"/>
47566           </Argument>
47567           <Argument name="successCallback">
47568             <descriptive>
47569                 <description><p>
47570  Function called when the properties have been successfully retrieved.
47571                 </p></description>
47572             </descriptive>
47573             <Type name="SystemInfoPropertySuccessCallback"/>
47574           </Argument>
47575           <Argument optional="optional" name="options">
47576             <descriptive>
47577                 <description><p>
47578  An object containing the various options for fetching the properties requested.
47579                 </p></description>
47580             </descriptive>
47581             <Type name="SystemInfoOptions" nullable="nullable"/>
47582           </Argument>
47583         </ArgumentList>
47584         <Raises>
47585           <RaiseException name="WebAPIException">
47586             <descriptive>
47587                 <description><p>
47588  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
47589                 </p></description>
47590                 <description><p>
47591  with error type NotSupportedError, if this feature is not supported.
47592                 </p></description>
47593                 <description><p>
47594  with error type InvalidValuesError, if any of the input 
47595 parameters contain an invalid value.
47596                 </p></description>
47597                 <description><p>
47598  with error type SecurityError, if this functionality is not allowed.
47599                 </p></description>
47600                 <description><p>
47601  with error type UnknownError in any other error case.
47602                 </p></description>
47603             </descriptive>
47604           </RaiseException>
47605         </Raises>
47606       </Operation>
47607       <Operation name="removePropertyValueChangeListener" id="::SystemInfo::SystemInfo::removePropertyValueChangeListener">
47608         <webidl>    void removePropertyValueChangeListener(unsigned long listenerId) raises(<ref>WebAPIException</ref>);</webidl>
47609         <descriptive>
47610             <brief>
47611  Unsubscribes notifications for property changes set up by addPropertyValueChangeListener.
47612             </brief>
47613            <description>
47614             <p>
47615 If a valid listenerId argument is passed that corresponds to a subscription
47616 already place, then the watch process MUST immediately terminate and no further
47617 callback is invoked. If the listenerId argument does not correspond to a valid subscription,
47618 the method should return without any further action.
47619             </p>
47620            </description>
47621             <version>
47622  1.0
47623             </version>
47624             <Code> var id = null;
47625  function onSuccessCallback(battery) {
47626     console.log(&quot;New value for Battery level is &quot; + battery.level);
47627     if (id != null) { // After receiving the first notification, we clear it
47628         tizen.systeminfo.removePropertyValueChangeListener(id);
47629     }
47630  }
47631
47632  id = tizen.systeminfo.addPropertyValueChangeListener(&quot;BATTERY&quot;, onSuccessCallback);
47633  </Code>
47634         </descriptive>
47635         <Type type="void"/>
47636         <ArgumentList>
47637           <Argument name="listenerId">
47638             <descriptive>
47639                 <description><p>
47640  An identifier of the subscription returned by the addPropertyValueChangeListener() method.
47641                 </p></description>
47642             </descriptive>
47643             <Type type="unsigned long"/>
47644           </Argument>
47645         </ArgumentList>
47646         <Raises>
47647           <RaiseException name="WebAPIException">
47648             <descriptive>
47649                 <description><p>
47650  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
47651                 </p></description>
47652                 <description><p>
47653  with error type NotSupportedError, if this feature is not supported.
47654                 </p></description>
47655                 <description><p>
47656  with error type InvalidValuesError, if any of the input 
47657 parameters contain an invalid value.
47658                 </p></description>
47659                 <description><p>
47660  with error type SecurityError, if this functionality is not allowed.
47661                 </p></description>
47662                 <description><p>
47663  with error type UnknownError in any other error case.
47664                 </p></description>
47665             </descriptive>
47666           </RaiseException>
47667         </Raises>
47668       </Operation>
47669     </Interface>
47670     <Interface name="SystemInfoDeviceCapability" id="::SystemInfo::SystemInfoDeviceCapability">
47671       <webidl>  [NoInterfaceObject] interface SystemInfoDeviceCapability {
47672     readonly attribute boolean bluetooth;
47673
47674     readonly attribute boolean nfc;
47675
47676     readonly attribute boolean nfcReservedPush ;
47677
47678     readonly attribute unsigned short multiTouchCount;
47679
47680     readonly attribute boolean inputKeyboard;
47681
47682     readonly attribute boolean inputKeyboardLayout;
47683
47684     readonly attribute boolean wifi;
47685
47686     readonly attribute boolean wifiDirect;
47687
47688     readonly attribute boolean opengles;
47689
47690     readonly attribute DOMString openglestextureFormat;
47691
47692     readonly attribute boolean openglesVersion1_1;
47693
47694     readonly attribute boolean openglesVersion2_0;
47695
47696     readonly attribute boolean fmRadio;
47697
47698     readonly attribute DOMString platformVersion raises(<ref>WebAPIException</ref>);
47699
47700     readonly attribute DOMString webApiVersion raises(<ref>WebAPIException</ref>);
47701
47702     readonly attribute DOMString nativeApiVersion raises(<ref>WebAPIException</ref>);
47703
47704     readonly attribute DOMString platformName;
47705
47706     readonly attribute boolean camera;
47707
47708     readonly attribute boolean cameraFront;
47709
47710     readonly attribute boolean cameraFrontFlash;
47711
47712     readonly attribute boolean cameraBack;
47713
47714     readonly attribute boolean cameraBackFlash;
47715
47716     readonly attribute boolean location;
47717
47718     readonly attribute boolean locationGps;
47719
47720     readonly attribute boolean locationWps;
47721
47722     readonly attribute boolean microphone;
47723
47724     readonly attribute boolean usbHost;
47725
47726     readonly attribute boolean usbAccessory;
47727
47728     readonly attribute boolean screenOutputRca;
47729
47730     readonly attribute boolean screenOutputHdmi;
47731
47732     readonly attribute DOMString platformCoreCpuArch;
47733
47734     readonly attribute DOMString platformCoreFpuArch;
47735
47736     readonly attribute boolean sipVoip;
47737
47738     readonly attribute DOMString duid;
47739
47740     readonly attribute boolean speechRecognition;
47741
47742     readonly attribute boolean speechSynthesis;
47743
47744     readonly attribute boolean accelerometer;
47745
47746     readonly attribute boolean accelerometerWakeup;
47747
47748     readonly attribute boolean barometer;
47749
47750     readonly attribute boolean barometerWakeup;
47751
47752     readonly attribute boolean gyroscope;
47753
47754     readonly attribute boolean gyroscopeWakeup;
47755
47756     readonly attribute boolean magnetometer;
47757
47758     readonly attribute boolean magnetometerWakeup;
47759
47760     readonly attribute boolean photometer;
47761
47762     readonly attribute boolean photometerWakeup;
47763
47764     readonly attribute boolean proximity;
47765
47766     readonly attribute boolean proximityWakeup;
47767
47768     readonly attribute boolean tiltmeter;
47769
47770     readonly attribute boolean tiltmeterWakeup;
47771
47772     readonly attribute boolean dataEncryption;
47773
47774     readonly attribute boolean graphicsAcceleration;
47775
47776     readonly attribute boolean push;
47777
47778     readonly attribute boolean telephony;
47779
47780     readonly attribute boolean telephonyMms;
47781
47782     readonly attribute boolean telephonySms;
47783
47784     readonly attribute boolean screenSizeNormal;
47785
47786     readonly attribute boolean screenSize480_800;
47787
47788     readonly attribute boolean screenSize720_1280;
47789
47790     readonly attribute boolean autoRotation;
47791
47792     readonly attribute boolean shellAppWidget;
47793
47794     readonly attribute boolean visionImageRecognition;
47795
47796     readonly attribute boolean visionQrcodeGeneration;
47797
47798     readonly attribute boolean visionQrcodeRecognition;
47799
47800     readonly attribute boolean visionFaceRecognition;
47801
47802     readonly attribute boolean secureElement;
47803         
47804     readonly attribute boolean nativeOspCompatible;
47805
47806     readonly attribute <ref>SystemInfoProfile</ref> profile;
47807   };</webidl>
47808       <descriptive>
47809           <brief>
47810  SystemInfoDeviceCapability object.
47811           </brief>
47812           <version>
47813  2.0
47814           </version>
47815       </descriptive>
47816       <ExtendedAttributeList>
47817         <ExtendedAttribute name="NoInterfaceObject">
47818           <webidl>NoInterfaceObject</webidl>
47819         </ExtendedAttribute>
47820       </ExtendedAttributeList>
47821       <Attribute readonly="readonly" name="bluetooth" id="::SystemInfo::SystemInfoDeviceCapability::bluetooth">
47822         <webidl>    readonly attribute boolean bluetooth;</webidl>
47823         <descriptive>
47824             <brief>
47825  Indicates whether the device supports Bluetooth.
47826             </brief>
47827             <version>
47828  2.0
47829             </version>
47830         </descriptive>
47831         <Type type="boolean"/>
47832       </Attribute>
47833       <Attribute readonly="readonly" name="nfc" id="::SystemInfo::SystemInfoDeviceCapability::nfc">
47834         <webidl>    readonly attribute boolean nfc;</webidl>
47835         <descriptive>
47836             <brief>
47837  Indicates whether the device supports NFC.
47838             </brief>
47839             <version>
47840  2.0
47841             </version>
47842         </descriptive>
47843         <Type type="boolean"/>
47844       </Attribute>
47845       <Attribute readonly="readonly" name="nfcReservedPush" id="::SystemInfo::SystemInfoDeviceCapability::nfcReservedPush">
47846         <webidl>    readonly attribute boolean nfcReservedPush ;</webidl>
47847         <descriptive>
47848             <brief>
47849  Indicates whether the device supports NFC reserved push.
47850             </brief>
47851             <version>
47852  2.1
47853             </version>
47854         </descriptive>
47855         <Type type="boolean"/>
47856       </Attribute>
47857       <Attribute readonly="readonly" name="multiTouchCount" id="::SystemInfo::SystemInfoDeviceCapability::multiTouchCount">
47858         <webidl>    readonly attribute unsigned short multiTouchCount;</webidl>
47859         <descriptive>
47860             <brief>
47861  The number of point in Multi-point touch.
47862             </brief>
47863             <version>
47864  2.0
47865             </version>
47866         </descriptive>
47867         <Type type="unsigned short"/>
47868       </Attribute>
47869       <Attribute readonly="readonly" name="inputKeyboard" id="::SystemInfo::SystemInfoDeviceCapability::inputKeyboard">
47870         <webidl>    readonly attribute boolean inputKeyboard;</webidl>
47871         <descriptive>
47872             <brief>
47873  Indicates whether the device supports the built-in Keyboard.
47874             </brief>
47875             <version>
47876  2.0
47877             </version>
47878         </descriptive>
47879         <Type type="boolean"/>
47880       </Attribute>
47881       <Attribute readonly="readonly" name="inputKeyboardLayout" id="::SystemInfo::SystemInfoDeviceCapability::inputKeyboardLayout">
47882         <webidl>    readonly attribute boolean inputKeyboardLayout;</webidl>
47883         <descriptive>
47884             <brief>
47885  Indicates whether the device supports the built-in keyboard layout.
47886             </brief>
47887             <version>
47888  2.1
47889             </version>
47890         </descriptive>
47891         <Type type="boolean"/>
47892       </Attribute>
47893       <Attribute readonly="readonly" name="wifi" id="::SystemInfo::SystemInfoDeviceCapability::wifi">
47894         <webidl>    readonly attribute boolean wifi;</webidl>
47895         <descriptive>
47896             <brief>
47897  Indicates whether the device supports Wi-Fi.
47898             </brief>
47899             <version>
47900  2.0
47901             </version>
47902         </descriptive>
47903         <Type type="boolean"/>
47904       </Attribute>
47905       <Attribute readonly="readonly" name="wifiDirect" id="::SystemInfo::SystemInfoDeviceCapability::wifiDirect">
47906         <webidl>    readonly attribute boolean wifiDirect;</webidl>
47907         <descriptive>
47908             <brief>
47909  Indicates whether the device supports Wi-Fi direct.
47910             </brief>
47911             <version>
47912  2.0
47913             </version>
47914         </descriptive>
47915         <Type type="boolean"/>
47916       </Attribute>
47917       <Attribute readonly="readonly" name="opengles" id="::SystemInfo::SystemInfoDeviceCapability::opengles">
47918         <webidl>    readonly attribute boolean opengles;</webidl>
47919         <descriptive>
47920             <brief>
47921  Indicates whether the device supports OpenGL-ES.
47922             </brief>
47923             <version>
47924  2.1
47925             </version>
47926         </descriptive>
47927         <Type type="boolean"/>
47928       </Attribute>
47929       <Attribute readonly="readonly" name="openglestextureFormat" id="::SystemInfo::SystemInfoDeviceCapability::openglestextureFormat">
47930         <webidl>    readonly attribute DOMString openglestextureFormat;</webidl>
47931         <descriptive>
47932             <brief>
47933  The device 3DC texture format for OpenGL-ES.
47934 One example of possible output is as follows: &quot;3dc/atc/etc/ptc/pvrtc/utc&quot;
47935             </brief>
47936             <version>
47937  2.1
47938             </version>
47939         </descriptive>
47940         <Type type="DOMString"/>
47941       </Attribute>
47942       <Attribute readonly="readonly" name="openglesVersion1_1" id="::SystemInfo::SystemInfoDeviceCapability::openglesVersion1_1">
47943         <webidl>    readonly attribute boolean openglesVersion1_1;</webidl>
47944         <descriptive>
47945             <brief>
47946  Indicates whether the device supports OpenGL-ES version 1.1.
47947             </brief>
47948             <version>
47949  2.0
47950             </version>
47951         </descriptive>
47952         <Type type="boolean"/>
47953       </Attribute>
47954       <Attribute readonly="readonly" name="openglesVersion2_0" id="::SystemInfo::SystemInfoDeviceCapability::openglesVersion2_0">
47955         <webidl>    readonly attribute boolean openglesVersion2_0;</webidl>
47956         <descriptive>
47957             <brief>
47958  Indicates whether the device supports OpenGL-ES version 2.0.
47959             </brief>
47960             <version>
47961  2.0
47962             </version>
47963         </descriptive>
47964         <Type type="boolean"/>
47965       </Attribute>
47966       <Attribute readonly="readonly" name="fmRadio" id="::SystemInfo::SystemInfoDeviceCapability::fmRadio">
47967         <webidl>    readonly attribute boolean fmRadio;</webidl>
47968         <descriptive>
47969             <brief>
47970  Indicates whether the device supports FM radio.
47971             </brief>
47972             <version>
47973  2.0
47974             </version>
47975         </descriptive>
47976         <Type type="boolean"/>
47977       </Attribute>
47978       <Attribute readonly="readonly" name="platformVersion" id="::SystemInfo::SystemInfoDeviceCapability::platformVersion">
47979         <webidl>    readonly attribute DOMString platformVersion raises(<ref>WebAPIException</ref>);</webidl>
47980         <descriptive>
47981             <brief>
47982  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>.
47983             </brief>
47984             <version>
47985  2.0
47986             </version>
47987             <privilegelevel>
47988  public
47989             </privilegelevel>
47990             <privilege>
47991  http://tizen.org/privilege/system
47992             </privilege>
47993         </descriptive>
47994         <Type type="DOMString"/>
47995         <Raises>
47996           <RaiseException name="WebAPIException">
47997             <descriptive>
47998                 <description><p>
47999  with error type SecurityError, if this attribute is not allowed.        
48000                 </p></description>
48001             </descriptive>
48002           </RaiseException>
48003         </Raises>
48004       </Attribute>
48005       <Attribute readonly="readonly" name="webApiVersion" id="::SystemInfo::SystemInfoDeviceCapability::webApiVersion">
48006         <webidl>    readonly attribute DOMString webApiVersion raises(<ref>WebAPIException</ref>);</webidl>
48007         <descriptive>
48008             <brief>
48009  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>.
48010             </brief>
48011             <version>
48012  2.1
48013             </version>
48014             <privilegelevel>
48015  public
48016             </privilegelevel>
48017             <privilege>
48018  http://tizen.org/privilege/system
48019             </privilege>
48020         </descriptive>
48021         <Type type="DOMString"/>
48022         <Raises>
48023           <RaiseException name="WebAPIException">
48024             <descriptive>
48025                 <description><p>
48026  with error type SecurityError, if this attribute is not allowed.
48027                 </p></description>
48028             </descriptive>
48029           </RaiseException>
48030         </Raises>
48031       </Attribute>
48032       <Attribute readonly="readonly" name="nativeApiVersion" id="::SystemInfo::SystemInfoDeviceCapability::nativeApiVersion">
48033         <webidl>    readonly attribute DOMString nativeApiVersion raises(<ref>WebAPIException</ref>);</webidl>
48034         <descriptive>
48035             <brief>
48036  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>.
48037             </brief>
48038             <version>
48039  2.1
48040             </version>
48041             <privilegelevel>
48042  public
48043             </privilegelevel>
48044             <privilege>
48045  http://tizen.org/privilege/system
48046             </privilege>
48047         </descriptive>
48048         <Type type="DOMString"/>
48049         <Raises>
48050           <RaiseException name="WebAPIException">
48051             <descriptive>
48052                 <description><p>
48053  with error type SecurityError, if this attribute is not allowed.
48054                 </p></description>
48055             </descriptive>
48056           </RaiseException>
48057         </Raises>
48058       </Attribute>
48059       <Attribute readonly="readonly" name="platformName" id="::SystemInfo::SystemInfoDeviceCapability::platformName">
48060         <webidl>    readonly attribute DOMString platformName;</webidl>
48061         <descriptive>
48062             <brief>
48063  The name of the platform.
48064             </brief>
48065             <version>
48066  2.0
48067             </version>
48068         </descriptive>
48069         <Type type="DOMString"/>
48070       </Attribute>
48071       <Attribute readonly="readonly" name="camera" id="::SystemInfo::SystemInfoDeviceCapability::camera">
48072         <webidl>    readonly attribute boolean camera;</webidl>
48073         <descriptive>
48074             <brief>
48075  Indicates whether the device supports camera.
48076             </brief>
48077             <version>
48078  2.1
48079             </version>
48080         </descriptive>
48081         <Type type="boolean"/>
48082       </Attribute>
48083       <Attribute readonly="readonly" name="cameraFront" id="::SystemInfo::SystemInfoDeviceCapability::cameraFront">
48084         <webidl>    readonly attribute boolean cameraFront;</webidl>
48085         <descriptive>
48086             <brief>
48087  Indicates whether the device supports front camera.
48088             </brief>
48089             <version>
48090  2.0
48091             </version>
48092         </descriptive>
48093         <Type type="boolean"/>
48094       </Attribute>
48095       <Attribute readonly="readonly" name="cameraFrontFlash" id="::SystemInfo::SystemInfoDeviceCapability::cameraFrontFlash">
48096         <webidl>    readonly attribute boolean cameraFrontFlash;</webidl>
48097         <descriptive>
48098             <brief>
48099  Indicates whether the device supports flash on the front camera.
48100             </brief>
48101             <version>
48102  2.0
48103             </version>
48104         </descriptive>
48105         <Type type="boolean"/>
48106       </Attribute>
48107       <Attribute readonly="readonly" name="cameraBack" id="::SystemInfo::SystemInfoDeviceCapability::cameraBack">
48108         <webidl>    readonly attribute boolean cameraBack;</webidl>
48109         <descriptive>
48110             <brief>
48111  Indicates whether the device supports back-side camera.
48112             </brief>
48113             <version>
48114  2.0
48115             </version>
48116         </descriptive>
48117         <Type type="boolean"/>
48118       </Attribute>
48119       <Attribute readonly="readonly" name="cameraBackFlash" id="::SystemInfo::SystemInfoDeviceCapability::cameraBackFlash">
48120         <webidl>    readonly attribute boolean cameraBackFlash;</webidl>
48121         <descriptive>
48122             <brief>
48123  Indicates whether the device supports flash on the back-side camera.
48124             </brief>
48125             <version>
48126  2.0
48127             </version>
48128         </descriptive>
48129         <Type type="boolean"/>
48130       </Attribute>
48131       <Attribute readonly="readonly" name="location" id="::SystemInfo::SystemInfoDeviceCapability::location">
48132         <webidl>    readonly attribute boolean location;</webidl>
48133         <descriptive>
48134             <brief>
48135  Indicates whether the device supports CPS or not.
48136             </brief>
48137             <version>
48138  2.0
48139             </version>
48140         </descriptive>
48141         <Type type="boolean"/>
48142       </Attribute>
48143       <Attribute readonly="readonly" name="locationGps" id="::SystemInfo::SystemInfoDeviceCapability::locationGps">
48144         <webidl>    readonly attribute boolean locationGps;</webidl>
48145         <descriptive>
48146             <brief>
48147  Indicates whether the device supports GPS based location feature.
48148             </brief>
48149             <version>
48150  2.0
48151             </version>
48152         </descriptive>
48153         <Type type="boolean"/>
48154       </Attribute>
48155       <Attribute readonly="readonly" name="locationWps" id="::SystemInfo::SystemInfoDeviceCapability::locationWps">
48156         <webidl>    readonly attribute boolean locationWps;</webidl>
48157         <descriptive>
48158             <brief>
48159  Indicates whether the device supports WPS based location feature.
48160             </brief>
48161             <version>
48162  2.0
48163             </version>
48164         </descriptive>
48165         <Type type="boolean"/>
48166       </Attribute>
48167       <Attribute readonly="readonly" name="microphone" id="::SystemInfo::SystemInfoDeviceCapability::microphone">
48168         <webidl>    readonly attribute boolean microphone;</webidl>
48169         <descriptive>
48170             <brief>
48171  Indicates whether the device supports microphone.
48172             </brief>
48173             <version>
48174  2.0
48175             </version>
48176         </descriptive>
48177         <Type type="boolean"/>
48178       </Attribute>
48179       <Attribute readonly="readonly" name="usbHost" id="::SystemInfo::SystemInfoDeviceCapability::usbHost">
48180         <webidl>    readonly attribute boolean usbHost;</webidl>
48181         <descriptive>
48182             <brief>
48183  Indicates whether the device supports USB host.
48184             </brief>
48185             <version>
48186  2.0
48187             </version>
48188         </descriptive>
48189         <Type type="boolean"/>
48190       </Attribute>
48191       <Attribute readonly="readonly" name="usbAccessory" id="::SystemInfo::SystemInfoDeviceCapability::usbAccessory">
48192         <webidl>    readonly attribute boolean usbAccessory;</webidl>
48193         <descriptive>
48194             <brief>
48195  Indicates whether the device supports USB accessory.
48196             </brief>
48197             <version>
48198  2.0
48199             </version>
48200         </descriptive>
48201         <Type type="boolean"/>
48202       </Attribute>
48203       <Attribute readonly="readonly" name="screenOutputRca" id="::SystemInfo::SystemInfoDeviceCapability::screenOutputRca">
48204         <webidl>    readonly attribute boolean screenOutputRca;</webidl>
48205         <descriptive>
48206             <brief>
48207  Indicates whether the device supports RCA output.
48208             </brief>
48209             <version>
48210  2.0
48211             </version>
48212         </descriptive>
48213         <Type type="boolean"/>
48214       </Attribute>
48215       <Attribute readonly="readonly" name="screenOutputHdmi" id="::SystemInfo::SystemInfoDeviceCapability::screenOutputHdmi">
48216         <webidl>    readonly attribute boolean screenOutputHdmi;</webidl>
48217         <descriptive>
48218             <brief>
48219  Indicates whether the device supports HDMI output.
48220             </brief>
48221             <version>
48222  2.0
48223             </version>
48224         </descriptive>
48225         <Type type="boolean"/>
48226       </Attribute>
48227       <Attribute readonly="readonly" name="platformCoreCpuArch" id="::SystemInfo::SystemInfoDeviceCapability::platformCoreCpuArch">
48228         <webidl>    readonly attribute DOMString platformCoreCpuArch;</webidl>
48229         <descriptive>
48230             <brief>
48231  The device CPU architecture.
48232 The possible values for this attribute are: armv6, armv7, x86.
48233             </brief>
48234             <version>
48235  2.0
48236             </version>
48237         </descriptive>
48238         <Type type="DOMString"/>
48239       </Attribute>
48240       <Attribute readonly="readonly" name="platformCoreFpuArch" id="::SystemInfo::SystemInfoDeviceCapability::platformCoreFpuArch">
48241         <webidl>    readonly attribute DOMString platformCoreFpuArch;</webidl>
48242         <descriptive>
48243             <brief>
48244  The device FPU architecture.
48245 The possible values for this attribute are: vfpv3 / sse2 / sse3 / ssse3.
48246             </brief>
48247             <version>
48248  2.0
48249             </version>
48250         </descriptive>
48251         <Type type="DOMString"/>
48252       </Attribute>
48253       <Attribute readonly="readonly" name="sipVoip" id="::SystemInfo::SystemInfoDeviceCapability::sipVoip">
48254         <webidl>    readonly attribute boolean sipVoip;</webidl>
48255         <descriptive>
48256             <brief>
48257  Indicates whether the device supports VOIP.
48258             </brief>
48259             <version>
48260  2.0
48261             </version>
48262         </descriptive>
48263         <Type type="boolean"/>
48264       </Attribute>
48265       <Attribute readonly="readonly" name="duid" id="::SystemInfo::SystemInfoDeviceCapability::duid">
48266         <webidl>    readonly attribute DOMString duid;</webidl>
48267         <descriptive>
48268             <brief>
48269  The device unique ID.
48270             </brief>
48271             <version>
48272  2.0
48273             </version>
48274         </descriptive>
48275         <Type type="DOMString"/>
48276       </Attribute>
48277       <Attribute readonly="readonly" name="speechRecognition" id="::SystemInfo::SystemInfoDeviceCapability::speechRecognition">
48278         <webidl>    readonly attribute boolean speechRecognition;</webidl>
48279         <descriptive>
48280             <brief>
48281  Indicates whether the device supports speech recognition.
48282             </brief>
48283             <version>
48284  2.0
48285             </version>
48286         </descriptive>
48287         <Type type="boolean"/>
48288       </Attribute>
48289       <Attribute readonly="readonly" name="speechSynthesis" id="::SystemInfo::SystemInfoDeviceCapability::speechSynthesis">
48290         <webidl>    readonly attribute boolean speechSynthesis;</webidl>
48291         <descriptive>
48292             <brief>
48293  Indicates whether the device supports speech synthesis.
48294             </brief>
48295             <version>
48296  2.1
48297             </version>
48298         </descriptive>
48299         <Type type="boolean"/>
48300       </Attribute>
48301       <Attribute readonly="readonly" name="accelerometer" id="::SystemInfo::SystemInfoDeviceCapability::accelerometer">
48302         <webidl>    readonly attribute boolean accelerometer;</webidl>
48303         <descriptive>
48304             <brief>
48305  Indicates whether the device supports Accelerometer sensor.
48306             </brief>
48307             <version>
48308  2.0
48309             </version>
48310         </descriptive>
48311         <Type type="boolean"/>
48312       </Attribute>
48313       <Attribute readonly="readonly" name="accelerometerWakeup" id="::SystemInfo::SystemInfoDeviceCapability::accelerometerWakeup">
48314         <webidl>    readonly attribute boolean accelerometerWakeup;</webidl>
48315         <descriptive>
48316             <brief>
48317  Indicates whether the device supports Accelerometer sensor wake-up feature.
48318             </brief>
48319             <version>
48320  2.1
48321             </version>
48322         </descriptive>
48323         <Type type="boolean"/>
48324       </Attribute>
48325       <Attribute readonly="readonly" name="barometer" id="::SystemInfo::SystemInfoDeviceCapability::barometer">
48326         <webidl>    readonly attribute boolean barometer;</webidl>
48327         <descriptive>
48328             <brief>
48329  Indicates whether the device supports Barometer sensor.
48330             </brief>
48331             <version>
48332  2.0
48333             </version>
48334         </descriptive>
48335         <Type type="boolean"/>
48336       </Attribute>
48337       <Attribute readonly="readonly" name="barometerWakeup" id="::SystemInfo::SystemInfoDeviceCapability::barometerWakeup">
48338         <webidl>    readonly attribute boolean barometerWakeup;</webidl>
48339         <descriptive>
48340             <brief>
48341  Indicates whether the device supports Barometer sensor wake-up feature.
48342             </brief>
48343             <version>
48344  2.1
48345             </version>
48346         </descriptive>
48347         <Type type="boolean"/>
48348       </Attribute>
48349       <Attribute readonly="readonly" name="gyroscope" id="::SystemInfo::SystemInfoDeviceCapability::gyroscope">
48350         <webidl>    readonly attribute boolean gyroscope;</webidl>
48351         <descriptive>
48352             <brief>
48353  Indicates whether the device supports Gyroscope sensor.
48354             </brief>
48355             <version>
48356  2.0
48357             </version>
48358         </descriptive>
48359         <Type type="boolean"/>
48360       </Attribute>
48361       <Attribute readonly="readonly" name="gyroscopeWakeup" id="::SystemInfo::SystemInfoDeviceCapability::gyroscopeWakeup">
48362         <webidl>    readonly attribute boolean gyroscopeWakeup;</webidl>
48363         <descriptive>
48364             <brief>
48365  Indicates whether the device supports Gyroscope sensor wake-up feature.
48366             </brief>
48367             <version>
48368  2.1
48369             </version>
48370         </descriptive>
48371         <Type type="boolean"/>
48372       </Attribute>
48373       <Attribute readonly="readonly" name="magnetometer" id="::SystemInfo::SystemInfoDeviceCapability::magnetometer">
48374         <webidl>    readonly attribute boolean magnetometer;</webidl>
48375         <descriptive>
48376             <brief>
48377  Indicates whether the device supports Magnetometer sensor.
48378             </brief>
48379             <version>
48380  2.0
48381             </version>
48382         </descriptive>
48383         <Type type="boolean"/>
48384       </Attribute>
48385       <Attribute readonly="readonly" name="magnetometerWakeup" id="::SystemInfo::SystemInfoDeviceCapability::magnetometerWakeup">
48386         <webidl>    readonly attribute boolean magnetometerWakeup;</webidl>
48387         <descriptive>
48388             <brief>
48389  Indicates whether the device supports Magnetometer sensor wake-up feature.
48390             </brief>
48391             <version>
48392  2.1
48393             </version>
48394         </descriptive>
48395         <Type type="boolean"/>
48396       </Attribute>
48397       <Attribute readonly="readonly" name="photometer" id="::SystemInfo::SystemInfoDeviceCapability::photometer">
48398         <webidl>    readonly attribute boolean photometer;</webidl>
48399         <descriptive>
48400             <brief>
48401  Indicates whether the device supports Photometer sensor.
48402             </brief>
48403             <version>
48404  2.1
48405             </version>
48406         </descriptive>
48407         <Type type="boolean"/>
48408       </Attribute>
48409       <Attribute readonly="readonly" name="photometerWakeup" id="::SystemInfo::SystemInfoDeviceCapability::photometerWakeup">
48410         <webidl>    readonly attribute boolean photometerWakeup;</webidl>
48411         <descriptive>
48412             <brief>
48413  Indicates whether the device supports Photometer sensor wake-up feature.
48414             </brief>
48415             <version>
48416  2.1
48417             </version>
48418         </descriptive>
48419         <Type type="boolean"/>
48420       </Attribute>
48421       <Attribute readonly="readonly" name="proximity" id="::SystemInfo::SystemInfoDeviceCapability::proximity">
48422         <webidl>    readonly attribute boolean proximity;</webidl>
48423         <descriptive>
48424             <brief>
48425  Indicates whether the device supports Proximity sensor.
48426             </brief>
48427             <version>
48428  2.0
48429             </version>
48430         </descriptive>
48431         <Type type="boolean"/>
48432       </Attribute>
48433       <Attribute readonly="readonly" name="proximityWakeup" id="::SystemInfo::SystemInfoDeviceCapability::proximityWakeup">
48434         <webidl>    readonly attribute boolean proximityWakeup;</webidl>
48435         <descriptive>
48436             <brief>
48437  Indicates whether the device supports Proximity sensor wake-up feature.
48438             </brief>
48439             <version>
48440  2.1
48441             </version>
48442         </descriptive>
48443         <Type type="boolean"/>
48444       </Attribute>
48445       <Attribute readonly="readonly" name="tiltmeter" id="::SystemInfo::SystemInfoDeviceCapability::tiltmeter">
48446         <webidl>    readonly attribute boolean tiltmeter;</webidl>
48447         <descriptive>
48448             <brief>
48449  Indicates whether the device supports Tiltmeter sensor.
48450             </brief>
48451             <version>
48452  2.1
48453             </version>
48454         </descriptive>
48455         <Type type="boolean"/>
48456       </Attribute>
48457       <Attribute readonly="readonly" name="tiltmeterWakeup" id="::SystemInfo::SystemInfoDeviceCapability::tiltmeterWakeup">
48458         <webidl>    readonly attribute boolean tiltmeterWakeup;</webidl>
48459         <descriptive>
48460             <brief>
48461  Indicates whether the device supports Tiltmeter sensor wake-up feature.
48462             </brief>
48463             <version>
48464  2.1
48465             </version>
48466         </descriptive>
48467         <Type type="boolean"/>
48468       </Attribute>
48469       <Attribute readonly="readonly" name="dataEncryption" id="::SystemInfo::SystemInfoDeviceCapability::dataEncryption">
48470         <webidl>    readonly attribute boolean dataEncryption;</webidl>
48471         <descriptive>
48472             <brief>
48473  Indicates whether the device supports data encryption.
48474             </brief>
48475             <version>
48476  2.1
48477             </version>
48478         </descriptive>
48479         <Type type="boolean"/>
48480       </Attribute>
48481       <Attribute readonly="readonly" name="graphicsAcceleration" id="::SystemInfo::SystemInfoDeviceCapability::graphicsAcceleration">
48482         <webidl>    readonly attribute boolean graphicsAcceleration;</webidl>
48483         <descriptive>
48484             <brief>
48485  Indicates whether the device supports hardware acceleration for 2D/3D graphics.
48486             </brief>
48487             <version>
48488  2.1
48489             </version>
48490         </descriptive>
48491         <Type type="boolean"/>
48492       </Attribute>
48493       <Attribute readonly="readonly" name="push" id="::SystemInfo::SystemInfoDeviceCapability::push">
48494         <webidl>    readonly attribute boolean push;</webidl>
48495         <descriptive>
48496             <brief>
48497  Indicates whether the device supports push service.
48498             </brief>
48499             <version>
48500  2.1
48501             </version>
48502         </descriptive>
48503         <Type type="boolean"/>
48504       </Attribute>
48505       <Attribute readonly="readonly" name="telephony" id="::SystemInfo::SystemInfoDeviceCapability::telephony">
48506         <webidl>    readonly attribute boolean telephony;</webidl>
48507         <descriptive>
48508             <brief>
48509  Indicates whether the device supports the telephony feature.
48510             </brief>
48511             <version>
48512  2.1
48513             </version>
48514         </descriptive>
48515         <Type type="boolean"/>
48516       </Attribute>
48517       <Attribute readonly="readonly" name="telephonyMms" id="::SystemInfo::SystemInfoDeviceCapability::telephonyMms">
48518         <webidl>    readonly attribute boolean telephonyMms;</webidl>
48519         <descriptive>
48520             <brief>
48521  Indicates whether the device supports the mms feature.
48522             </brief>
48523             <version>
48524  2.1
48525             </version>
48526         </descriptive>
48527         <Type type="boolean"/>
48528       </Attribute>
48529       <Attribute readonly="readonly" name="telephonySms" id="::SystemInfo::SystemInfoDeviceCapability::telephonySms">
48530         <webidl>    readonly attribute boolean telephonySms;</webidl>
48531         <descriptive>
48532             <brief>
48533  Indicates whether the device supports the sms feature.
48534             </brief>
48535             <version>
48536  2.1
48537             </version>
48538         </descriptive>
48539         <Type type="boolean"/>
48540       </Attribute>
48541       <Attribute readonly="readonly" name="screenSizeNormal" id="::SystemInfo::SystemInfoDeviceCapability::screenSizeNormal">
48542         <webidl>    readonly attribute boolean screenSizeNormal;</webidl>
48543         <descriptive>
48544             <brief>
48545  Indicates whether the device supports the screen normal size.
48546             </brief>
48547             <version>
48548  2.1
48549             </version>
48550         </descriptive>
48551         <Type type="boolean"/>
48552       </Attribute>
48553       <Attribute readonly="readonly" name="screenSize480_800" id="::SystemInfo::SystemInfoDeviceCapability::screenSize480_800">
48554         <webidl>    readonly attribute boolean screenSize480_800;</webidl>
48555         <descriptive>
48556             <brief>
48557  Indicates whether the device supports the 480 * 800 screen size.
48558             </brief>
48559             <version>
48560  2.1
48561             </version>
48562         </descriptive>
48563         <Type type="boolean"/>
48564       </Attribute>
48565       <Attribute readonly="readonly" name="screenSize720_1280" id="::SystemInfo::SystemInfoDeviceCapability::screenSize720_1280">
48566         <webidl>    readonly attribute boolean screenSize720_1280;</webidl>
48567         <descriptive>
48568             <brief>
48569  Indicates whether the device supports the 720 * 1280 screen size.
48570             </brief>
48571             <version>
48572  2.1
48573             </version>
48574         </descriptive>
48575         <Type type="boolean"/>
48576       </Attribute>
48577       <Attribute readonly="readonly" name="autoRotation" id="::SystemInfo::SystemInfoDeviceCapability::autoRotation">
48578         <webidl>    readonly attribute boolean autoRotation;</webidl>
48579         <descriptive>
48580             <brief>
48581  Indicates whether the device supports auto rotation.
48582             </brief>
48583             <version>
48584  2.1
48585             </version>
48586         </descriptive>
48587         <Type type="boolean"/>
48588       </Attribute>
48589       <Attribute readonly="readonly" name="shellAppWidget" id="::SystemInfo::SystemInfoDeviceCapability::shellAppWidget">
48590         <webidl>    readonly attribute boolean shellAppWidget;</webidl>
48591         <descriptive>
48592             <brief>
48593  Indicates whether the device supports shell app widget.
48594             </brief>
48595             <version>
48596  2.1
48597             </version>
48598         </descriptive>
48599         <Type type="boolean"/>
48600       </Attribute>
48601       <Attribute readonly="readonly" name="visionImageRecognition" id="::SystemInfo::SystemInfoDeviceCapability::visionImageRecognition">
48602         <webidl>    readonly attribute boolean visionImageRecognition;</webidl>
48603         <descriptive>
48604             <brief>
48605  Indicates whether the device supports vision image recognition.
48606             </brief>
48607             <version>
48608  2.1
48609             </version>
48610         </descriptive>
48611         <Type type="boolean"/>
48612       </Attribute>
48613       <Attribute readonly="readonly" name="visionQrcodeGeneration" id="::SystemInfo::SystemInfoDeviceCapability::visionQrcodeGeneration">
48614         <webidl>    readonly attribute boolean visionQrcodeGeneration;</webidl>
48615         <descriptive>
48616             <brief>
48617  Indicates whether the device supports vision qrcode generation.
48618             </brief>
48619             <version>
48620  2.1
48621             </version>
48622         </descriptive>
48623         <Type type="boolean"/>
48624       </Attribute>
48625       <Attribute readonly="readonly" name="visionQrcodeRecognition" id="::SystemInfo::SystemInfoDeviceCapability::visionQrcodeRecognition">
48626         <webidl>    readonly attribute boolean visionQrcodeRecognition;</webidl>
48627         <descriptive>
48628             <brief>
48629  Indicates whether the device supports vision qrcode recognition.
48630             </brief>
48631             <version>
48632  2.1
48633             </version>
48634         </descriptive>
48635         <Type type="boolean"/>
48636       </Attribute>
48637       <Attribute readonly="readonly" name="visionFaceRecognition" id="::SystemInfo::SystemInfoDeviceCapability::visionFaceRecognition">
48638         <webidl>    readonly attribute boolean visionFaceRecognition;</webidl>
48639         <descriptive>
48640             <brief>
48641  Indicates whether the device supports vision face recognition.
48642             </brief>
48643             <version>
48644  2.1
48645             </version>
48646         </descriptive>
48647         <Type type="boolean"/>
48648       </Attribute>
48649       <Attribute readonly="readonly" name="secureElement" id="::SystemInfo::SystemInfoDeviceCapability::secureElement">
48650         <webidl>    readonly attribute boolean secureElement;</webidl>
48651         <descriptive>
48652             <brief>
48653  Indicates whether the device supports secure element.
48654             </brief>
48655             <version>
48656  2.1
48657             </version>
48658         </descriptive>
48659         <Type type="boolean"/>
48660       </Attribute>
48661       <Attribute readonly="readonly" name="nativeOspCompatible" id="::SystemInfo::SystemInfoDeviceCapability::nativeOspCompatible">
48662         <webidl>    readonly attribute boolean nativeOspCompatible;</webidl>
48663         <descriptive>
48664             <brief>
48665  Indicates whether the device supports native osp API.
48666             </brief>
48667             <version>
48668  2.1
48669             </version>
48670         </descriptive>
48671         <Type type="boolean"/>
48672       </Attribute>
48673       <Attribute readonly="readonly" name="profile" id="::SystemInfo::SystemInfoDeviceCapability::profile">
48674         <webidl>    readonly attribute <ref>SystemInfoProfile</ref> profile;</webidl>
48675         <descriptive>
48676             <brief>
48677  Represents the profile of the current device.
48678             </brief>
48679             <version>
48680  2.2
48681             </version>
48682         </descriptive>
48683         <Type name="SystemInfoProfile"/>
48684       </Attribute>
48685     </Interface>
48686     <Dictionary name="SystemInfoOptions" id="::SystemInfo::SystemInfoOptions">
48687       <webidl>  dictionary SystemInfoOptions {
48688     unsigned long timeout;
48689
48690     double highThreshold;
48691
48692     double lowThreshold;
48693   };</webidl>
48694       <descriptive>
48695           <brief>
48696  An object containing the various options for fetching the properties requested.
48697           </brief>
48698           <version>
48699  1.0
48700           </version>
48701       </descriptive>
48702       <DictionaryMember name="timeout" id="::SystemInfo::SystemInfoOptions::timeout">
48703         <webidl>    unsigned long timeout;</webidl>
48704         <descriptive>
48705             <brief>
48706  The number of milliseconds beyond which the operation must be interrupted.
48707             </brief>
48708             <version>
48709  1.0
48710             </version>
48711         </descriptive>
48712         <Type type="unsigned long"/>
48713       </DictionaryMember>
48714       <DictionaryMember name="highThreshold" id="::SystemInfo::SystemInfoOptions::highThreshold">
48715         <webidl>    double highThreshold;</webidl>
48716         <descriptive>
48717             <brief>
48718  An attribute to indicate that the <em>successCallback()</em> method in the watch 
48719 operation will be triggered only if the device property is a number and its value is greater than or equal to this number.
48720 This attribute has no effect on the <em>get()</em> method.
48721             </brief>
48722             <version>
48723  1.0
48724             </version>
48725         </descriptive>
48726         <Type type="double"/>
48727       </DictionaryMember>
48728       <DictionaryMember name="lowThreshold" id="::SystemInfo::SystemInfoOptions::lowThreshold">
48729         <webidl>    double lowThreshold;</webidl>
48730         <descriptive>
48731             <brief>
48732  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.
48733 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>.
48734 This attribute has no effect on the get method.
48735             </brief>
48736             <version>
48737  1.0
48738             </version>
48739         </descriptive>
48740         <Type type="double"/>
48741       </DictionaryMember>
48742     </Dictionary>
48743     <Interface name="SystemInfoPropertySuccessCallback" id="::SystemInfo::SystemInfoPropertySuccessCallback">
48744       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface SystemInfoPropertySuccessCallback {
48745     void onsuccess(<ref>SystemInfoProperty</ref> prop);
48746   };</webidl>
48747       <descriptive>
48748           <brief>
48749  Systemfinfo specific success callback.
48750           </brief>
48751          <description>
48752           <p>
48753 This callback interface specifies a success callback with SystemInfoProperty as input argument. 
48754 It is used in asynchronous
48755 operations, such as getPropertyValue() or addPropertyValueChangeListener()
48756           </p>
48757          </description>
48758           <version>
48759  1.0
48760           </version>
48761       </descriptive>
48762       <ExtendedAttributeList>
48763         <ExtendedAttribute name="Callback" value="FunctionOnly">
48764           <webidl>Callback</webidl>
48765         </ExtendedAttribute>
48766         <ExtendedAttribute name="NoInterfaceObject">
48767           <webidl> NoInterfaceObject</webidl>
48768         </ExtendedAttribute>
48769       </ExtendedAttributeList>
48770       <Operation name="onsuccess" id="::SystemInfo::SystemInfoPropertySuccessCallback::onsuccess">
48771         <webidl>    void onsuccess(<ref>SystemInfoProperty</ref> prop);</webidl>
48772         <descriptive>
48773             <brief>
48774  Method invoked when the asynchronous call completes successfully.
48775             </brief>
48776             <version>
48777  1.0
48778             </version>
48779         </descriptive>
48780         <Type type="void"/>
48781         <ArgumentList>
48782           <Argument name="prop">
48783             <descriptive>
48784                 <description><p>
48785  The property returned from a successful asynchronous operation.
48786                 </p></description>
48787             </descriptive>
48788             <Type name="SystemInfoProperty"/>
48789           </Argument>
48790         </ArgumentList>
48791       </Operation>
48792     </Interface>
48793     <Interface name="SystemInfoProperty" id="::SystemInfo::SystemInfoProperty">
48794       <webidl>  [NoInterfaceObject] interface SystemInfoProperty {
48795   };</webidl>
48796       <descriptive>
48797           <brief>
48798  This is a common abstract interface used by different types of system information objects.
48799           </brief>
48800           <version>
48801  1.0
48802           </version>
48803       </descriptive>
48804       <ExtendedAttributeList>
48805         <ExtendedAttribute name="NoInterfaceObject">
48806           <webidl>NoInterfaceObject</webidl>
48807         </ExtendedAttribute>
48808       </ExtendedAttributeList>
48809     </Interface>
48810     <Interface name="SystemInfoBattery" id="::SystemInfo::SystemInfoBattery">
48811       <webidl>  [NoInterfaceObject] interface SystemInfoBattery : <ref>SystemInfoProperty</ref> {
48812     readonly attribute double level;
48813
48814     readonly attribute boolean isCharging;
48815   };</webidl>
48816       <descriptive>
48817           <brief>
48818  This property reflects the general state of the system's battery
48819           </brief>
48820           <version>
48821  1.0
48822           </version>
48823       </descriptive>
48824       <ExtendedAttributeList>
48825         <ExtendedAttribute name="NoInterfaceObject">
48826           <webidl>NoInterfaceObject</webidl>
48827         </ExtendedAttribute>
48828       </ExtendedAttributeList>
48829       <InterfaceInheritance>
48830         <Name name="SystemInfoProperty"/>
48831       </InterfaceInheritance>
48832       <Attribute readonly="readonly" name="level" id="::SystemInfo::SystemInfoBattery::level">
48833         <webidl>    readonly attribute double level;</webidl>
48834         <descriptive>
48835             <brief>
48836  An attribute to specify the remaining level of an internal battery, scaled from <var>0 </var>to <var>1</var>:
48837             </brief>
48838            <description>
48839             <ul>
48840               <li>
48841 <var>0 </var>indicates that the battery level is the lowest and the system is about to enter shutdown mode.              </li>
48842               <li>
48843 <var>1 </var>indicates that the system's charge is maximum.              </li>
48844             </ul>
48845             <p>
48846 Any threshold parameter used in a watch operation to monitor this property applies to this attribute.
48847             </p>
48848            </description>
48849             <version>
48850  1.0
48851             </version>
48852         </descriptive>
48853         <Type type="double"/>
48854       </Attribute>
48855       <Attribute readonly="readonly" name="isCharging" id="::SystemInfo::SystemInfoBattery::isCharging">
48856         <webidl>    readonly attribute boolean isCharging;</webidl>
48857         <descriptive>
48858             <brief>
48859  Indicates whether the battery source is currently charging.
48860             </brief>
48861             <version>
48862  1.0
48863             </version>
48864         </descriptive>
48865         <Type type="boolean"/>
48866       </Attribute>
48867     </Interface>
48868     <Interface name="SystemInfoCpu" id="::SystemInfo::SystemInfoCpu">
48869       <webidl>  [NoInterfaceObject] interface SystemInfoCpu : <ref>SystemInfoProperty</ref> {
48870     readonly attribute double load;
48871   };</webidl>
48872       <descriptive>
48873           <brief>
48874  This property reflects the state of the CPUs available to this system.
48875           </brief>
48876           <version>
48877  1.0
48878           </version>
48879       </descriptive>
48880       <ExtendedAttributeList>
48881         <ExtendedAttribute name="NoInterfaceObject">
48882           <webidl>NoInterfaceObject</webidl>
48883         </ExtendedAttribute>
48884       </ExtendedAttributeList>
48885       <InterfaceInheritance>
48886         <Name name="SystemInfoProperty"/>
48887       </InterfaceInheritance>
48888       <Attribute readonly="readonly" name="load" id="::SystemInfo::SystemInfoCpu::load">
48889         <webidl>    readonly attribute double load;</webidl>
48890         <descriptive>
48891             <brief>
48892   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.
48893 Any threshold parameter used in a watch function to monitor this property applies to this attribute.
48894             </brief>
48895             <version>
48896  1.0
48897             </version>
48898         </descriptive>
48899         <Type type="double"/>
48900       </Attribute>
48901     </Interface>
48902     <Interface name="SystemInfoStorage" id="::SystemInfo::SystemInfoStorage">
48903       <webidl>  [NoInterfaceObject] interface SystemInfoStorage : <ref>SystemInfoProperty</ref> {
48904     readonly attribute <ref>SystemInfoStorageUnit</ref>[] units;
48905   };</webidl>
48906       <descriptive>
48907           <brief>
48908  This property exposes the data storage devices connected to this system.
48909           </brief>
48910           <version>
48911  1.0
48912           </version>
48913       </descriptive>
48914       <ExtendedAttributeList>
48915         <ExtendedAttribute name="NoInterfaceObject">
48916           <webidl>NoInterfaceObject</webidl>
48917         </ExtendedAttribute>
48918       </ExtendedAttributeList>
48919       <InterfaceInheritance>
48920         <Name name="SystemInfoProperty"/>
48921       </InterfaceInheritance>
48922       <Attribute readonly="readonly" name="units" id="::SystemInfo::SystemInfoStorage::units">
48923         <webidl>    readonly attribute <ref>SystemInfoStorageUnit</ref>[] units;</webidl>
48924         <descriptive>
48925             <brief>
48926  The array of storage units connected to this device.
48927             </brief>
48928             <version>
48929  1.0
48930             </version>
48931         </descriptive>
48932         <Type type="array">
48933           <Type name="SystemInfoStorageUnit"/>
48934         </Type>
48935       </Attribute>
48936     </Interface>
48937     <Interface name="SystemInfoStorageUnit" id="::SystemInfo::SystemInfoStorageUnit">
48938       <webidl>  [NoInterfaceObject] interface SystemInfoStorageUnit : <ref>SystemInfoProperty</ref> {
48939     readonly attribute DOMString type;
48940
48941     readonly attribute unsigned long long capacity;
48942
48943     readonly attribute unsigned long long availableCapacity;
48944
48945     readonly attribute boolean isRemovable;
48946
48947     readonly attribute boolean isRemoveable;
48948   };</webidl>
48949       <descriptive>
48950           <brief>
48951  This property exposes a single storage device connected to this system.
48952           </brief>
48953       </descriptive>
48954       <ExtendedAttributeList>
48955         <ExtendedAttribute name="NoInterfaceObject">
48956           <webidl>NoInterfaceObject</webidl>
48957         </ExtendedAttribute>
48958       </ExtendedAttributeList>
48959       <InterfaceInheritance>
48960         <Name name="SystemInfoProperty"/>
48961       </InterfaceInheritance>
48962       <Attribute readonly="readonly" name="type" id="::SystemInfo::SystemInfoStorageUnit::type">
48963         <webidl>    readonly attribute DOMString type;</webidl>
48964         <descriptive>
48965             <brief>
48966  The type of a storage device. The value is one of the constants defined for this type.
48967             </brief>
48968            <description>
48969             <p>
48970 The supported storage unit types are:
48971             </p>
48972             <ul>
48973               <li>
48974 UNKNOWN              </li>
48975               <li>
48976 INTERNAL               </li>
48977               <li>
48978 USB_HOST              </li>
48979               <li>
48980 MMC              </li>
48981         
48982
48983             </ul>
48984            </description>
48985             <version>
48986  1.0
48987             </version>
48988         </descriptive>
48989         <Type type="DOMString"/>
48990       </Attribute>
48991       <Attribute readonly="readonly" name="capacity" id="::SystemInfo::SystemInfoStorageUnit::capacity">
48992         <webidl>    readonly attribute unsigned long long capacity;</webidl>
48993         <descriptive>
48994             <brief>
48995  The amount of data that this device can hold, in bytes.
48996             </brief>
48997             <version>
48998  1.0
48999             </version>
49000         </descriptive>
49001         <Type type="unsigned long long"/>
49002       </Attribute>
49003       <Attribute readonly="readonly" name="availableCapacity" id="::SystemInfo::SystemInfoStorageUnit::availableCapacity">
49004         <webidl>    readonly attribute unsigned long long availableCapacity;</webidl>
49005         <descriptive>
49006             <brief>
49007  The amount of available data that this device can hold, in bytes.
49008             </brief>
49009             <version>
49010  1.0
49011             </version>
49012         </descriptive>
49013         <Type type="unsigned long long"/>
49014       </Attribute>
49015       <Attribute readonly="readonly" name="isRemovable" id="::SystemInfo::SystemInfoStorageUnit::isRemovable">
49016         <webidl>    readonly attribute boolean isRemovable;</webidl>
49017         <descriptive>
49018             <brief>
49019  An attribute to indicate whether a device can be removed or not.
49020             </brief>
49021            <description>
49022             <p>
49023 The following values are supported:
49024             </p>
49025             <ul>
49026               <li>
49027 <var>true </var> - If this storage unit can be removed from the system (such as an sdcard unplugged)              </li>
49028               <li>
49029 <var>false</var> - If this storage unit cannot be removed from the system              </li>
49030             </ul>
49031            </description>
49032             <version>
49033  2.1
49034             </version>
49035         </descriptive>
49036         <Type type="boolean"/>
49037       </Attribute>
49038       <Attribute readonly="readonly" name="isRemoveable" id="::SystemInfo::SystemInfoStorageUnit::isRemoveable">
49039         <webidl>    readonly attribute boolean isRemoveable;</webidl>
49040         <descriptive>
49041             <brief>
49042  true if this unit can be removed from the system (such as an sdcard unplugged), false otherwise.
49043             </brief>
49044             <version>
49045  1.0
49046             </version>
49047             <deprecated>
49048  A typographic error.
49049             </deprecated>
49050         </descriptive>
49051         <Type type="boolean"/>
49052       </Attribute>
49053     </Interface>
49054     <Interface name="SystemInfoDisplay" id="::SystemInfo::SystemInfoDisplay">
49055       <webidl>  [NoInterfaceObject] interface SystemInfoDisplay : <ref>SystemInfoProperty</ref> {
49056     readonly attribute unsigned long resolutionWidth;
49057
49058     readonly attribute unsigned long resolutionHeight;
49059
49060     readonly attribute unsigned long dotsPerInchWidth;
49061
49062     readonly attribute unsigned long dotsPerInchHeight;
49063
49064     readonly attribute double physicalWidth;
49065
49066     readonly attribute double physicalHeight;
49067
49068     readonly attribute double brightness;
49069   };</webidl>
49070       <descriptive>
49071           <brief>
49072  This property reflects the information of the Display.
49073           </brief>
49074           <version>
49075  1.0
49076           </version>
49077       </descriptive>
49078       <ExtendedAttributeList>
49079         <ExtendedAttribute name="NoInterfaceObject">
49080           <webidl>NoInterfaceObject</webidl>
49081         </ExtendedAttribute>
49082       </ExtendedAttributeList>
49083       <InterfaceInheritance>
49084         <Name name="SystemInfoProperty"/>
49085       </InterfaceInheritance>
49086       <Attribute readonly="readonly" name="resolutionWidth" id="::SystemInfo::SystemInfoDisplay::resolutionWidth">
49087         <webidl>    readonly attribute unsigned long resolutionWidth;</webidl>
49088         <descriptive>
49089             <brief>
49090  The total number of addressable pixels in the horizontal direction of a rectangular entity
49091 (such as Camera, Display, Image, Video, ...) when held in its default orientation.
49092             </brief>
49093             <version>
49094  1.0
49095             </version>
49096         </descriptive>
49097         <Type type="unsigned long"/>
49098       </Attribute>
49099       <Attribute readonly="readonly" name="resolutionHeight" id="::SystemInfo::SystemInfoDisplay::resolutionHeight">
49100         <webidl>    readonly attribute unsigned long resolutionHeight;</webidl>
49101         <descriptive>
49102             <brief>
49103  The total number of addressable pixels in the vertical direction of a rectangular element
49104 (such as Camera, Display, Image, Video, ...) when held in its default orientation.
49105             </brief>
49106             <version>
49107  1.0
49108             </version>
49109         </descriptive>
49110         <Type type="unsigned long"/>
49111       </Attribute>
49112       <Attribute readonly="readonly" name="dotsPerInchWidth" id="::SystemInfo::SystemInfoDisplay::dotsPerInchWidth">
49113         <webidl>    readonly attribute unsigned long dotsPerInchWidth;</webidl>
49114         <descriptive>
49115             <brief>
49116  Resolution of this device, along its width, in dots per inch.
49117             </brief>
49118             <version>
49119  1.0
49120             </version>
49121         </descriptive>
49122         <Type type="unsigned long"/>
49123       </Attribute>
49124       <Attribute readonly="readonly" name="dotsPerInchHeight" id="::SystemInfo::SystemInfoDisplay::dotsPerInchHeight">
49125         <webidl>    readonly attribute unsigned long dotsPerInchHeight;</webidl>
49126         <descriptive>
49127             <brief>
49128  Resolution of this device, along its height, in dots per inch.
49129             </brief>
49130             <version>
49131  1.0
49132             </version>
49133         </descriptive>
49134         <Type type="unsigned long"/>
49135       </Attribute>
49136       <Attribute readonly="readonly" name="physicalWidth" id="::SystemInfo::SystemInfoDisplay::physicalWidth">
49137         <webidl>    readonly attribute double physicalWidth;</webidl>
49138         <descriptive>
49139             <brief>
49140  The display's physical width in millimeters.
49141             </brief>
49142             <version>
49143  1.0
49144             </version>
49145         </descriptive>
49146         <Type type="double"/>
49147       </Attribute>
49148       <Attribute readonly="readonly" name="physicalHeight" id="::SystemInfo::SystemInfoDisplay::physicalHeight">
49149         <webidl>    readonly attribute double physicalHeight;</webidl>
49150         <descriptive>
49151             <brief>
49152  The display's physical height in millimeters.
49153             </brief>
49154             <version>
49155  1.0
49156             </version>
49157         </descriptive>
49158         <Type type="double"/>
49159       </Attribute>
49160       <Attribute readonly="readonly" name="brightness" id="::SystemInfo::SystemInfoDisplay::brightness">
49161         <webidl>    readonly attribute double brightness;</webidl>
49162         <descriptive>
49163             <brief>
49164  The current brightness of a display ranging between <var>0 </var>to <var>1</var>.
49165             </brief>
49166             <version>
49167  1.0
49168             </version>
49169         </descriptive>
49170         <Type type="double"/>
49171       </Attribute>
49172     </Interface>
49173     <Interface name="SystemInfoDeviceOrientation" id="::SystemInfo::SystemInfoDeviceOrientation">
49174       <webidl>  [NoInterfaceObject] interface SystemInfoDeviceOrientation : <ref>SystemInfoProperty</ref> {
49175
49176     readonly attribute <ref>SystemInfoDeviceOrientationStatus</ref> status;
49177     readonly attribute boolean isAutoRotation;
49178   };</webidl>
49179       <descriptive>
49180           <brief>
49181  This property reflects the information of the device orientation in this system.
49182           </brief>
49183           <version>
49184  2.0
49185           </version>
49186       </descriptive>
49187       <ExtendedAttributeList>
49188         <ExtendedAttribute name="NoInterfaceObject">
49189           <webidl>NoInterfaceObject</webidl>
49190         </ExtendedAttribute>
49191       </ExtendedAttributeList>
49192       <InterfaceInheritance>
49193         <Name name="SystemInfoProperty"/>
49194       </InterfaceInheritance>
49195       <Attribute readonly="readonly" name="status" id="::SystemInfo::SystemInfoDeviceOrientation::status">
49196         <webidl>    readonly attribute <ref>SystemInfoDeviceOrientationStatus</ref> status;</webidl>
49197         <descriptive>
49198             <brief>
49199  Represents the status of the current device orientation.
49200             </brief>
49201             <version>
49202  2.0
49203             </version>
49204         </descriptive>
49205         <Type name="SystemInfoDeviceOrientationStatus"/>
49206       </Attribute>
49207       <Attribute readonly="readonly" name="isAutoRotation" id="::SystemInfo::SystemInfoDeviceOrientation::isAutoRotation">
49208         <webidl>    readonly attribute boolean isAutoRotation;</webidl>
49209         <descriptive>
49210             <brief>
49211  whether the device is in autorotation.
49212             </brief>
49213             <version>
49214  2.2
49215             </version>
49216         </descriptive>
49217         <Type type="boolean"/>
49218       </Attribute>
49219     </Interface>
49220     <Interface name="SystemInfoBuild" id="::SystemInfo::SystemInfoBuild">
49221       <webidl>  [NoInterfaceObject] interface SystemInfoBuild : <ref>SystemInfoProperty</ref> {
49222
49223     readonly attribute DOMString model;
49224     readonly attribute DOMString manufacturer;
49225     readonly attribute DOMString buildVersion;
49226   };</webidl>
49227       <descriptive>
49228           <brief>
49229  This property reflects the information of the current device.
49230           </brief>
49231           <version>
49232  2.0
49233           </version>
49234       </descriptive>
49235       <ExtendedAttributeList>
49236         <ExtendedAttribute name="NoInterfaceObject">
49237           <webidl>NoInterfaceObject</webidl>
49238         </ExtendedAttribute>
49239       </ExtendedAttributeList>
49240       <InterfaceInheritance>
49241         <Name name="SystemInfoProperty"/>
49242       </InterfaceInheritance>
49243       <Attribute readonly="readonly" name="model" id="::SystemInfo::SystemInfoBuild::model">
49244         <webidl>    readonly attribute DOMString model;</webidl>
49245         <descriptive>
49246             <brief>
49247  Represents the model name of the current device.
49248             </brief>
49249             <version>
49250  2.0
49251             </version>
49252         </descriptive>
49253         <Type type="DOMString"/>
49254       </Attribute>
49255       <Attribute readonly="readonly" name="manufacturer" id="::SystemInfo::SystemInfoBuild::manufacturer">
49256         <webidl>    readonly attribute DOMString manufacturer;</webidl>
49257         <descriptive>
49258             <brief>
49259  Represents the manufacturer of the device.
49260             </brief>
49261             <version>
49262  2.1
49263             </version>
49264         </descriptive>
49265         <Type type="DOMString"/>
49266       </Attribute>
49267       <Attribute readonly="readonly" name="buildVersion" id="::SystemInfo::SystemInfoBuild::buildVersion">
49268         <webidl>    readonly attribute DOMString buildVersion;</webidl>
49269         <descriptive>
49270             <brief>
49271  Represents the build version information of the device.
49272             </brief>
49273             <version>
49274  2.2
49275             </version>
49276         </descriptive>
49277         <Type type="DOMString"/>
49278       </Attribute>
49279     </Interface>
49280     <Interface name="SystemInfoLocale" id="::SystemInfo::SystemInfoLocale">
49281       <webidl>  [NoInterfaceObject] interface SystemInfoLocale : <ref>SystemInfoProperty</ref> {
49282
49283     readonly attribute DOMString language;
49284
49285     readonly attribute DOMString country;
49286   };</webidl>
49287       <descriptive>
49288           <brief>
49289  This property reflects the locale information of the current device.
49290           </brief>
49291           <version>
49292  2.1
49293           </version>
49294       </descriptive>
49295       <ExtendedAttributeList>
49296         <ExtendedAttribute name="NoInterfaceObject">
49297           <webidl>NoInterfaceObject</webidl>
49298         </ExtendedAttribute>
49299       </ExtendedAttributeList>
49300       <InterfaceInheritance>
49301         <Name name="SystemInfoProperty"/>
49302       </InterfaceInheritance>
49303       <Attribute readonly="readonly" name="language" id="::SystemInfo::SystemInfoLocale::language">
49304         <webidl>    readonly attribute DOMString language;</webidl>
49305         <descriptive>
49306             <brief>
49307  Indicates the current language setting in the (LANGUAGE)_(REGION) syntax.
49308 The language setting is in the ISO 630-2 format and the region setting is in the ISO 3166-1 format. 
49309 The language setting is case-sensitive.
49310             </brief>
49311             <version>
49312  2.1
49313             </version>
49314         </descriptive>
49315         <Type type="DOMString"/>
49316       </Attribute>
49317       <Attribute readonly="readonly" name="country" id="::SystemInfo::SystemInfoLocale::country">
49318         <webidl>    readonly attribute DOMString country;</webidl>
49319         <descriptive>
49320             <brief>
49321  Indicates the current country setting in the (LANGUAGE)_(REGION) syntax.
49322 The language setting is in the ISO 630-2 format and the region setting is in the ISO 3166-1 format.
49323 The country setting is case-sensitive.
49324             </brief>
49325             <version>
49326  2.1
49327             </version>
49328         </descriptive>
49329         <Type type="DOMString"/>
49330       </Attribute>
49331     </Interface>
49332     <Interface name="SystemInfoNetwork" id="::SystemInfo::SystemInfoNetwork">
49333       <webidl>  [NoInterfaceObject] interface SystemInfoNetwork : <ref>SystemInfoProperty</ref> {    
49334
49335     readonly attribute <ref>SystemInfoNetworkType</ref> networkType;    
49336   };</webidl>
49337       <descriptive>
49338           <brief>
49339  This property reflects the information of the data network in this system.    
49340           </brief>
49341           <version>
49342  2.0    
49343           </version>
49344       </descriptive>
49345       <ExtendedAttributeList>
49346         <ExtendedAttribute name="NoInterfaceObject">
49347           <webidl>NoInterfaceObject</webidl>
49348         </ExtendedAttribute>
49349       </ExtendedAttributeList>
49350       <InterfaceInheritance>
49351         <Name name="SystemInfoProperty"/>
49352       </InterfaceInheritance>
49353       <Attribute readonly="readonly" name="networkType" id="::SystemInfo::SystemInfoNetwork::networkType">
49354         <webidl>    readonly attribute <ref>SystemInfoNetworkType</ref> networkType;</webidl>
49355         <descriptive>
49356             <brief>
49357  Represents the network type of the current data network.    
49358             </brief>
49359             <version>
49360  2.0    
49361             </version>
49362         </descriptive>
49363         <Type name="SystemInfoNetworkType"/>
49364       </Attribute>
49365     </Interface>
49366     <Interface name="SystemInfoWifiNetwork" id="::SystemInfo::SystemInfoWifiNetwork">
49367       <webidl>   [NoInterfaceObject] interface SystemInfoWifiNetwork : <ref>SystemInfoProperty</ref> {    
49368
49369     readonly attribute DOMString status;    
49370     readonly attribute DOMString ssid;    
49371     readonly attribute DOMString ipAddress;    
49372      readonly attribute DOMString ipv6Address;    
49373     readonly attribute double signalStrength;    
49374   };</webidl>
49375       <descriptive>
49376           <brief>
49377  This property reflects the information of the Wi-Fi network in this system.    
49378           </brief>
49379           <version>
49380  1.0    
49381           </version>
49382       </descriptive>
49383       <ExtendedAttributeList>
49384         <ExtendedAttribute name="NoInterfaceObject">
49385           <webidl>NoInterfaceObject</webidl>
49386         </ExtendedAttribute>
49387       </ExtendedAttributeList>
49388       <InterfaceInheritance>
49389         <Name name="SystemInfoProperty"/>
49390       </InterfaceInheritance>
49391       <Attribute readonly="readonly" name="status" id="::SystemInfo::SystemInfoWifiNetwork::status">
49392         <webidl>    readonly attribute DOMString status;</webidl>
49393         <descriptive>
49394             <brief>
49395  Represents the status (ON or OFF) of the Wi-Fi interface.    
49396             </brief>
49397             <version>
49398  1.0    
49399             </version>
49400         </descriptive>
49401         <Type type="DOMString"/>
49402       </Attribute>
49403       <Attribute readonly="readonly" name="ssid" id="::SystemInfo::SystemInfoWifiNetwork::ssid">
49404         <webidl>    readonly attribute DOMString ssid;</webidl>
49405         <descriptive>
49406             <brief>
49407  Represents the SSID of a Wi-Fi network.    
49408             </brief>
49409             <version>
49410  1.0    
49411             </version>
49412         </descriptive>
49413         <Type type="DOMString"/>
49414       </Attribute>
49415       <Attribute readonly="readonly" name="ipAddress" id="::SystemInfo::SystemInfoWifiNetwork::ipAddress">
49416         <webidl>    readonly attribute DOMString ipAddress;</webidl>
49417         <descriptive>
49418             <brief>
49419  Represents the IPv4 address of Wi-Fi network.    
49420             </brief>
49421             <version>
49422  1.0    
49423             </version>
49424         </descriptive>
49425         <Type type="DOMString"/>
49426       </Attribute>
49427       <Attribute readonly="readonly" name="ipv6Address" id="::SystemInfo::SystemInfoWifiNetwork::ipv6Address">
49428         <webidl>     readonly attribute DOMString ipv6Address;</webidl>
49429         <descriptive>
49430             <brief>
49431  Represents the IPv6 address of Wi-Fi network.    
49432             </brief>
49433             <version>
49434  2.0    
49435             </version>
49436         </descriptive>
49437         <Type type="DOMString"/>
49438       </Attribute>
49439       <Attribute readonly="readonly" name="signalStrength" id="::SystemInfo::SystemInfoWifiNetwork::signalStrength">
49440         <webidl>    readonly attribute double signalStrength;</webidl>
49441         <descriptive>
49442             <brief>
49443  This connection's signal strength, as a normalized value between 0 (no signal detected) and 1 (the level is at its maximum value).    
49444             </brief>
49445             <version>
49446  1.0    
49447             </version>
49448         </descriptive>
49449         <Type type="double"/>
49450       </Attribute>
49451     </Interface>
49452     <Interface name="SystemInfoCellularNetwork" id="::SystemInfo::SystemInfoCellularNetwork">
49453       <webidl>  [NoInterfaceObject] interface SystemInfoCellularNetwork : <ref>SystemInfoProperty</ref> {    
49454
49455     readonly attribute DOMString status;    
49456     readonly attribute DOMString apn;    
49457     readonly attribute DOMString ipAddress;    
49458     readonly attribute DOMString ipv6Address;    
49459     readonly attribute unsigned short mcc;    
49460     readonly attribute unsigned short mnc;    
49461     readonly attribute unsigned short cellId;    
49462     readonly attribute unsigned short lac;    
49463     readonly attribute boolean isRoaming;
49464     readonly attribute boolean isFlightMode;
49465     readonly attribute DOMString imei raises(<ref>WebAPIException</ref>);
49466   };</webidl>
49467       <descriptive>
49468           <brief>
49469  This property reflects the information of the Cellular network in this system.    
49470           </brief>
49471           <version>
49472  1.0    
49473           </version>
49474       </descriptive>
49475       <ExtendedAttributeList>
49476         <ExtendedAttribute name="NoInterfaceObject">
49477           <webidl>NoInterfaceObject</webidl>
49478         </ExtendedAttribute>
49479       </ExtendedAttributeList>
49480       <InterfaceInheritance>
49481         <Name name="SystemInfoProperty"/>
49482       </InterfaceInheritance>
49483       <Attribute readonly="readonly" name="status" id="::SystemInfo::SystemInfoCellularNetwork::status">
49484         <webidl>    readonly attribute DOMString status;</webidl>
49485         <descriptive>
49486             <brief>
49487  Represents the status (ON or OFF) of the cellular network.    
49488             </brief>
49489             <version>
49490  1.0    
49491             </version>
49492         </descriptive>
49493         <Type type="DOMString"/>
49494       </Attribute>
49495       <Attribute readonly="readonly" name="apn" id="::SystemInfo::SystemInfoCellularNetwork::apn">
49496         <webidl>    readonly attribute DOMString apn;</webidl>
49497         <descriptive>
49498             <brief>
49499  Represents an Access Point Name of the cellular network.    
49500             </brief>
49501             <version>
49502  1.0    
49503             </version>
49504         </descriptive>
49505         <Type type="DOMString"/>
49506       </Attribute>
49507       <Attribute readonly="readonly" name="ipAddress" id="::SystemInfo::SystemInfoCellularNetwork::ipAddress">
49508         <webidl>    readonly attribute DOMString ipAddress;</webidl>
49509         <descriptive>
49510             <brief>
49511  Represents the IPv4 address of the cellular network.    
49512             </brief>
49513             <version>
49514  1.0    
49515             </version>
49516         </descriptive>
49517         <Type type="DOMString"/>
49518       </Attribute>
49519       <Attribute readonly="readonly" name="ipv6Address" id="::SystemInfo::SystemInfoCellularNetwork::ipv6Address">
49520         <webidl>    readonly attribute DOMString ipv6Address;</webidl>
49521         <descriptive>
49522             <brief>
49523  Represents the IPv6 address of the cellular network.    
49524             </brief>
49525             <version>
49526  2.0    
49527             </version>
49528         </descriptive>
49529         <Type type="DOMString"/>
49530       </Attribute>
49531       <Attribute readonly="readonly" name="mcc" id="::SystemInfo::SystemInfoCellularNetwork::mcc">
49532         <webidl>    readonly attribute unsigned short mcc;</webidl>
49533         <descriptive>
49534             <brief>
49535  Represents Mobile Country Code (MCC) of the cellular network.    
49536             </brief>
49537             <version>
49538  1.0    
49539             </version>
49540         </descriptive>
49541         <Type type="unsigned short"/>
49542       </Attribute>
49543       <Attribute readonly="readonly" name="mnc" id="::SystemInfo::SystemInfoCellularNetwork::mnc">
49544         <webidl>    readonly attribute unsigned short mnc;</webidl>
49545         <descriptive>
49546             <brief>
49547  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    
49548 identify a mobile phone operator/carrier using the GSM, CDMA, iDEN, TETRA and UMTS public land mobile networks and some satellite mobile networks.    
49549             </brief>
49550             <version>
49551  1.0    
49552             </version>
49553         </descriptive>
49554         <Type type="unsigned short"/>
49555       </Attribute>
49556       <Attribute readonly="readonly" name="cellId" id="::SystemInfo::SystemInfoCellularNetwork::cellId">
49557         <webidl>    readonly attribute unsigned short cellId;</webidl>
49558         <descriptive>
49559             <brief>
49560  Represents Cell Id.    
49561             </brief>
49562             <version>
49563  1.0    
49564             </version>
49565         </descriptive>
49566         <Type type="unsigned short"/>
49567       </Attribute>
49568       <Attribute readonly="readonly" name="lac" id="::SystemInfo::SystemInfoCellularNetwork::lac">
49569         <webidl>    readonly attribute unsigned short lac;</webidl>
49570         <descriptive>
49571             <brief>
49572  Represents Location Area Code.    
49573             </brief>
49574             <version>
49575  1.0    
49576             </version>
49577         </descriptive>
49578         <Type type="unsigned short"/>
49579       </Attribute>
49580       <Attribute readonly="readonly" name="isRoaming" id="::SystemInfo::SystemInfoCellularNetwork::isRoaming">
49581         <webidl>    readonly attribute boolean isRoaming;</webidl>
49582         <descriptive>
49583             <brief>
49584  Whether the connection is set up while the device is roaming.    
49585             </brief>
49586             <version>
49587  1.0    
49588             </version>
49589         </descriptive>
49590         <Type type="boolean"/>
49591       </Attribute>
49592       <Attribute readonly="readonly" name="isFlightMode" id="::SystemInfo::SystemInfoCellularNetwork::isFlightMode">
49593         <webidl>    readonly attribute boolean isFlightMode;</webidl>
49594         <descriptive>
49595             <brief>
49596  Indicates whether the device is in flight mode.
49597             </brief>
49598             <version>
49599  2.1
49600             </version>
49601         </descriptive>
49602         <Type type="boolean"/>
49603       </Attribute>
49604       <Attribute readonly="readonly" name="imei" id="::SystemInfo::SystemInfoCellularNetwork::imei">
49605         <webidl>    readonly attribute DOMString imei raises(<ref>WebAPIException</ref>);</webidl>
49606         <descriptive>
49607             <brief>
49608  Represents the International Mobile Equipment Identity (IMEI).
49609             </brief>
49610             <version>
49611  2.1
49612             </version>
49613             <privilegelevel>
49614  partner
49615             </privilegelevel>
49616             <privilege>
49617  http://tizen.org/privilege/systemmanager
49618             </privilege>
49619         </descriptive>
49620         <Type type="DOMString"/>
49621         <Raises>
49622           <RaiseException name="WebAPIException">
49623             <descriptive>
49624                 <description><p>
49625  with error type SecurityError, if this attribute is not allowed.
49626                 </p></description>
49627             </descriptive>
49628           </RaiseException>
49629         </Raises>
49630       </Attribute>
49631     </Interface>
49632     <Interface name="SystemInfoSIM" id="::SystemInfo::SystemInfoSIM">
49633       <webidl>  [NoInterfaceObject] interface SystemInfoSIM : <ref>SystemInfoProperty</ref> {
49634     readonly attribute <ref>SystemInfoSimState</ref> state raises(<ref>WebAPIException</ref>);
49635     readonly attribute DOMString operatorName raises(<ref>WebAPIException</ref>);
49636     readonly attribute DOMString msisdn raises(<ref>WebAPIException</ref>);
49637     readonly attribute DOMString iccid raises(<ref>WebAPIException</ref>);
49638     readonly attribute unsigned short mcc raises(<ref>WebAPIException</ref>);
49639     readonly attribute unsigned short mnc raises(<ref>WebAPIException</ref>);
49640     readonly attribute DOMString msin raises(<ref>WebAPIException</ref>);
49641     readonly attribute DOMString spn raises(<ref>WebAPIException</ref>);
49642   };</webidl>
49643       <descriptive>
49644           <brief>
49645  This property reflects the information of the SIM card information.    
49646           </brief>
49647           <version>
49648  2.0
49649           </version>
49650       </descriptive>
49651       <ExtendedAttributeList>
49652         <ExtendedAttribute name="NoInterfaceObject">
49653           <webidl>NoInterfaceObject</webidl>
49654         </ExtendedAttribute>
49655       </ExtendedAttributeList>
49656       <InterfaceInheritance>
49657         <Name name="SystemInfoProperty"/>
49658       </InterfaceInheritance>
49659       <Attribute readonly="readonly" name="state" id="::SystemInfo::SystemInfoSIM::state">
49660         <webidl>    readonly attribute <ref>SystemInfoSimState</ref> state raises(<ref>WebAPIException</ref>);</webidl>
49661         <descriptive>
49662             <brief>
49663  Represents the SIM card state.
49664             </brief>
49665             <version>
49666  2.1
49667             </version>
49668             <privilegelevel>
49669  public
49670             </privilegelevel>
49671             <privilege>
49672  http://tizen.org/privilege/system
49673             </privilege>
49674         </descriptive>
49675         <Type name="SystemInfoSimState"/>
49676         <Raises>
49677           <RaiseException name="WebAPIException">
49678             <descriptive>
49679                 <description><p>
49680  with error type SecurityError, if this attribute is not allowed.
49681                 </p></description>
49682             </descriptive>
49683           </RaiseException>
49684         </Raises>
49685       </Attribute>
49686       <Attribute readonly="readonly" name="operatorName" id="::SystemInfo::SystemInfoSIM::operatorName">
49687         <webidl>    readonly attribute DOMString operatorName raises(<ref>WebAPIException</ref>);</webidl>
49688         <descriptive>
49689             <brief>
49690  Represents the Operator Name String (ONS) of Common PCN Handset Specification (CPHS) in SIM card.     
49691             </brief>
49692             <version>
49693  2.0    
49694             </version>
49695             <privilegelevel>
49696  public
49697             </privilegelevel>
49698             <privilege>
49699  http://tizen.org/privilege/system
49700             </privilege>
49701         </descriptive>
49702         <Type type="DOMString"/>
49703         <Raises>
49704           <RaiseException name="WebAPIException">
49705             <descriptive>
49706                 <description><p>
49707  with error type SecurityError, if this attribute is not allowed.
49708                 </p></description>
49709             </descriptive>
49710           </RaiseException>
49711         </Raises>
49712       </Attribute>
49713       <Attribute readonly="readonly" name="msisdn" id="::SystemInfo::SystemInfoSIM::msisdn">
49714         <webidl>    readonly attribute DOMString msisdn raises(<ref>WebAPIException</ref>);</webidl>
49715         <descriptive>
49716             <brief>
49717  Represents the SIM card subscriber number.     
49718             </brief>
49719             <version>
49720  2.0    
49721             </version>
49722             <privilegelevel>
49723  partner
49724             </privilegelevel>
49725             <privilege>
49726  http://tizen.org/privilege/systemmanager
49727             </privilege>
49728         </descriptive>
49729         <Type type="DOMString"/>
49730         <Raises>
49731           <RaiseException name="WebAPIException">
49732             <descriptive>
49733                 <description><p>
49734  with error type SecurityError, if this attribute is not allowed.
49735                 </p></description>
49736             </descriptive>
49737           </RaiseException>
49738         </Raises>
49739       </Attribute>
49740       <Attribute readonly="readonly" name="iccid" id="::SystemInfo::SystemInfoSIM::iccid">
49741         <webidl>    readonly attribute DOMString iccid raises(<ref>WebAPIException</ref>);</webidl>
49742         <descriptive>
49743             <brief>
49744  Represents the Integrated Circuit Card ID.    
49745             </brief>
49746             <version>
49747  2.0    
49748             </version>
49749             <privilegelevel>
49750  public
49751             </privilegelevel>
49752             <privilege>
49753  http://tizen.org/privilege/system
49754             </privilege>
49755         </descriptive>
49756         <Type type="DOMString"/>
49757         <Raises>
49758           <RaiseException name="WebAPIException">
49759             <descriptive>
49760                 <description><p>
49761  with error type SecurityError, if this attribute is not allowed.
49762                 </p></description>
49763             </descriptive>
49764           </RaiseException>
49765         </Raises>
49766       </Attribute>
49767       <Attribute readonly="readonly" name="mcc" id="::SystemInfo::SystemInfoSIM::mcc">
49768         <webidl>    readonly attribute unsigned short mcc raises(<ref>WebAPIException</ref>);</webidl>
49769         <descriptive>
49770             <brief>
49771  Represents the Mobile Country Code (MCC) of SIM provider.     
49772             </brief>
49773             <version>
49774  2.0    
49775             </version>
49776             <privilegelevel>
49777  public
49778             </privilegelevel>
49779             <privilege>
49780  http://tizen.org/privilege/system
49781             </privilege>
49782         </descriptive>
49783         <Type type="unsigned short"/>
49784         <Raises>
49785           <RaiseException name="WebAPIException">
49786             <descriptive>
49787                 <description><p>
49788  with error type SecurityError, if this attribute is not allowed.
49789                 </p></description>
49790             </descriptive>
49791           </RaiseException>
49792         </Raises>
49793       </Attribute>
49794       <Attribute readonly="readonly" name="mnc" id="::SystemInfo::SystemInfoSIM::mnc">
49795         <webidl>    readonly attribute unsigned short mnc raises(<ref>WebAPIException</ref>);</webidl>
49796         <descriptive>
49797             <brief>
49798  Represents the Mobile Network Code (MNC) of SIM provider.     
49799             </brief>
49800             <version>
49801  2.0    
49802             </version>
49803             <privilegelevel>
49804  public
49805             </privilegelevel>
49806             <privilege>
49807  http://tizen.org/privilege/system
49808             </privilege>
49809         </descriptive>
49810         <Type type="unsigned short"/>
49811         <Raises>
49812           <RaiseException name="WebAPIException">
49813             <descriptive>
49814                 <description><p>
49815  with error type SecurityError, if this attribute is not allowed.
49816                 </p></description>
49817             </descriptive>
49818           </RaiseException>
49819         </Raises>
49820       </Attribute>
49821       <Attribute readonly="readonly" name="msin" id="::SystemInfo::SystemInfoSIM::msin">
49822         <webidl>    readonly attribute DOMString msin raises(<ref>WebAPIException</ref>);</webidl>
49823         <descriptive>
49824             <brief>
49825  Represents the Mobile Subscription Identification Number (MSIN) of SIM provider.     
49826             </brief>
49827             <version>
49828  2.0    
49829             </version>
49830             <privilegelevel>
49831  partner
49832             </privilegelevel>
49833             <privilege>
49834  http://tizen.org/privilege/systemmanager
49835             </privilege>
49836         </descriptive>
49837         <Type type="DOMString"/>
49838         <Raises>
49839           <RaiseException name="WebAPIException">
49840             <descriptive>
49841                 <description><p>
49842  with error type SecurityError, if this attribute is not allowed.
49843                 </p></description>
49844             </descriptive>
49845           </RaiseException>
49846         </Raises>
49847       </Attribute>
49848       <Attribute readonly="readonly" name="spn" id="::SystemInfo::SystemInfoSIM::spn">
49849         <webidl>    readonly attribute DOMString spn raises(<ref>WebAPIException</ref>);</webidl>
49850         <descriptive>
49851             <brief>
49852  Represents the Service Provider Name (SPN) of SIM card.     
49853             </brief>
49854             <version>
49855  2.0    
49856             </version>
49857             <privilegelevel>
49858  public
49859             </privilegelevel>
49860             <privilege>
49861  http://tizen.org/privilege/system
49862             </privilege>
49863         </descriptive>
49864         <Type type="DOMString"/>
49865         <Raises>
49866           <RaiseException name="WebAPIException">
49867             <descriptive>
49868                 <description><p>
49869  with error type SecurityError, if this attribute is not allowed.
49870                 </p></description>
49871             </descriptive>
49872           </RaiseException>
49873         </Raises>
49874       </Attribute>
49875     </Interface>
49876     <Interface name="SystemInfoPeripheral" id="::SystemInfo::SystemInfoPeripheral">
49877       <webidl>  [NoInterfaceObject] interface SystemInfoPeripheral : <ref>SystemInfoProperty</ref> {
49878
49879     readonly attribute boolean isVideoOutputOn;
49880   };</webidl>
49881       <descriptive>
49882           <brief>
49883  This property reflects the peripheral information of the current device.
49884           </brief>
49885           <version>
49886  2.1
49887           </version>
49888       </descriptive>
49889       <ExtendedAttributeList>
49890         <ExtendedAttribute name="NoInterfaceObject">
49891           <webidl>NoInterfaceObject</webidl>
49892         </ExtendedAttribute>
49893       </ExtendedAttributeList>
49894       <InterfaceInheritance>
49895         <Name name="SystemInfoProperty"/>
49896       </InterfaceInheritance>
49897       <Attribute readonly="readonly" name="isVideoOutputOn" id="::SystemInfo::SystemInfoPeripheral::isVideoOutputOn">
49898         <webidl>    readonly attribute boolean isVideoOutputOn;</webidl>
49899         <descriptive>
49900             <brief>
49901  Represents the video out status.
49902             </brief>
49903             <version>
49904  2.1
49905             </version>
49906         </descriptive>
49907         <Type type="boolean"/>
49908       </Attribute>
49909     </Interface>
49910   </Module>
49911   <Module name="SystemSetting" id="::SystemSetting">
49912     <webidl>module SystemSetting {
49913
49914   [NoInterfaceObject] interface SystemSettingObject {
49915     readonly attribute <ref>SystemSettingManager</ref> systemsetting;
49916   };
49917     <ref>Tizen</ref> implements <ref>SystemSettingObject</ref>;
49918
49919   enum SystemSettingType {&quot;HOME_SCREEN&quot;, &quot;LOCK_SCREEN&quot;, &quot;INCOMING_CALL&quot;, &quot;NOTIFICATION_EMAIL&quot;};
49920
49921   [NoInterfaceObject] interface SystemSettingManager {
49922
49923      void setProperty(<ref>SystemSettingType</ref> type,
49924               DOMString value,
49925               <ref>SuccessCallback</ref> successCallback,
49926               optional <ref>ErrorCallback</ref>? errorCallback) raises (<ref>WebAPIException</ref>);
49927
49928      void getProperty(<ref>SystemSettingType</ref> type,
49929               <ref>SystemSettingSuccessCallback</ref> successCallback,
49930               optional <ref>ErrorCallback</ref>? errorCallback) raises (<ref>WebAPIException</ref>);
49931      
49932   };
49933
49934   [Callback=FunctionOnly, NoInterfaceObject] interface SystemSettingSuccessCallback {
49935     void onsuccess(DOMString value);
49936   };
49937
49938 };</webidl>
49939     <descriptive>
49940         <brief>
49941  This API provides interfaces and methods providing Web applications with access to various values of the system.
49942         </brief>
49943        <description>
49944         <p>
49945 This API provides an interface and method through features such as:
49946         </p>
49947         <ul>
49948           <li>
49949  HOME_SCREEN          </li>
49950           <li>
49951  LOCK_SCREEN          </li>
49952           <li>
49953  INCOMING_CALL          </li>
49954           <li>
49955  NOTIFICATION_EMAIL          </li>
49956         </ul>
49957         <p>
49958 For more information on the SystemSetting features, see <a href="../../org.tizen.web.appprogramming/html/guide/sys_guide/systemsetting.htm">System Setting Guide</a>.
49959         </p>
49960        </description>
49961         <version>
49962  2.0
49963         </version>
49964     </descriptive>
49965     <Interface name="SystemSettingObject" id="::SystemSetting::SystemSettingObject">
49966       <webidl>  [NoInterfaceObject] interface SystemSettingObject {
49967     readonly attribute <ref>SystemSettingManager</ref> systemsetting;
49968   };</webidl>
49969       <descriptive>
49970           <brief>
49971  This interface defines what is instantiated by the <em>Tizen </em>object from the Tizen Platform.
49972           </brief>
49973          <description>
49974           <p>
49975 There will be a <em>tizen.systemsetting </em>object that allows accessing the functionality of the SystemSetting API.
49976           </p>
49977          </description>
49978           <version>
49979  2.0
49980           </version>
49981       </descriptive>
49982       <ExtendedAttributeList>
49983         <ExtendedAttribute name="NoInterfaceObject">
49984           <webidl>NoInterfaceObject</webidl>
49985         </ExtendedAttribute>
49986       </ExtendedAttributeList>
49987       <Attribute readonly="readonly" name="systemsetting" id="::SystemSetting::SystemSettingObject::systemsetting">
49988         <webidl>    readonly attribute <ref>SystemSettingManager</ref> systemsetting;</webidl>
49989         <Type name="SystemSettingManager"/>
49990       </Attribute>
49991     </Interface>
49992     <Implements name1="Tizen" name2="SystemSettingObject">
49993       <webidl>    <ref>Tizen</ref> implements <ref>SystemSettingObject</ref>;</webidl>
49994     </Implements>
49995     <Enum name="SystemSettingType" id="::SystemSetting::SystemSettingType">
49996       <webidl>  enum SystemSettingType {&quot;HOME_SCREEN&quot;, &quot;LOCK_SCREEN&quot;, &quot;INCOMING_CALL&quot;, &quot;NOTIFICATION_EMAIL&quot;};</webidl>
49997       <descriptive>
49998           <brief>
49999  This enumerator indicates the type of supported system setting.
50000 The following values are supported in this release:
50001           </brief>
50002          <description>
50003           <ul>
50004             <li>
50005 HOME_SCREEN - For homescreen background image.            </li>
50006             <li>
50007 LOCK_SCREEN - For lockscreen background image.            </li>
50008             <li>
50009 INCOMING_CALL - For incoming call ringtone.            </li>
50010             <li>
50011 NOTIFICATION_EMAIL - For email notification alert tone.            </li>
50012           </ul>
50013           <p>
50014 Defines supporting setting types.
50015 The HOME_SCREEN and LOCK_SCREEN are supported for images files.
50016 The INCOMING_CALL and NOTIFICATION_EMAIL are support for sound files.
50017           </p>
50018          </description>
50019           <version>
50020  2.0
50021           </version>
50022       </descriptive>
50023       <EnumValue stringvalue="HOME_SCREEN">
50024         <webidl>&quot;HOME_SCREEN</webidl>
50025       </EnumValue>
50026       <EnumValue stringvalue="LOCK_SCREEN">
50027         <webidl> &quot;LOCK_SCREEN</webidl>
50028       </EnumValue>
50029       <EnumValue stringvalue="INCOMING_CALL">
50030         <webidl> &quot;INCOMING_CALL</webidl>
50031       </EnumValue>
50032       <EnumValue stringvalue="NOTIFICATION_EMAIL">
50033         <webidl> &quot;NOTIFICATION_EMAIL</webidl>
50034       </EnumValue>
50035     </Enum>
50036     <Interface name="SystemSettingManager" id="::SystemSetting::SystemSettingManager">
50037       <webidl>  [NoInterfaceObject] interface SystemSettingManager {
50038
50039      void setProperty(<ref>SystemSettingType</ref> type,
50040               DOMString value,
50041               <ref>SuccessCallback</ref> successCallback,
50042               optional <ref>ErrorCallback</ref>? errorCallback) raises (<ref>WebAPIException</ref>);
50043
50044      void getProperty(<ref>SystemSettingType</ref> type,
50045               <ref>SystemSettingSuccessCallback</ref> successCallback,
50046               optional <ref>ErrorCallback</ref>? errorCallback) raises (<ref>WebAPIException</ref>);
50047      
50048   };</webidl>
50049       <descriptive>
50050           <brief>
50051  This is the top-level interface for the SystemSetting API that provides
50052 access to the module functionalities.
50053           </brief>
50054       </descriptive>
50055       <ExtendedAttributeList>
50056         <ExtendedAttribute name="NoInterfaceObject">
50057           <webidl>NoInterfaceObject</webidl>
50058         </ExtendedAttribute>
50059       </ExtendedAttributeList>
50060       <Operation name="setProperty" id="::SystemSetting::SystemSettingManager::setProperty">
50061         <webidl>     void setProperty(<ref>SystemSettingType</ref> type,
50062               DOMString value,
50063               <ref>SuccessCallback</ref> successCallback,
50064               optional <ref>ErrorCallback</ref>? errorCallback) raises (<ref>WebAPIException</ref>);</webidl>
50065         <descriptive>
50066             <brief>
50067  Sets the property of a device.
50068             </brief>
50069            <description>
50070             <p>
50071 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.
50072             </p>
50073            </description>
50074             <version>
50075  2.0
50076             </version>
50077            <description>
50078             <p>
50079 The ErrorCallback is launched with these error types:
50080             </p>
50081             <ul>
50082               <li>
50083 TypeMismatchError - If any input parameter is not compatible with the expected type for that parameter.               </li>
50084               <li>
50085 InvalidValuesError - If any of the input parameters contain an invalid value.              </li>
50086               <li>
50087 UnknownError - If any other error occurs.              </li>
50088             </ul>
50089            </description>
50090             <privilegelevel>
50091  public
50092             </privilegelevel>
50093             <privilege>
50094  http://tizen.org/privilege/setting
50095             </privilege>
50096             <Code> // Define the success callback
50097  function successCallback() {
50098    console.log(&quot;Success to setProperty&quot;);
50099  }
50100
50101  // Define the error callback.
50102  function errorCallback(error) {
50103    console.log(&quot;Fail to setProperty&quot; + error.message);
50104  }
50105
50106  tizen.systemsetting.setProperty(&quot;HOME_SCREEN&quot;, &quot;/opt/usr/media/Images/image1.jpg&quot;, successCallback, errorCallback);
50107
50108  </Code>
50109         </descriptive>
50110         <Type type="void"/>
50111         <ArgumentList>
50112           <Argument name="type">
50113             <descriptive>
50114                 <description><p>
50115  The setting type to set.
50116                 </p></description>
50117             </descriptive>
50118             <Type name="SystemSettingType"/>
50119           </Argument>
50120           <Argument name="value">
50121             <descriptive>
50122                 <description><p>
50123  The location path of a wallpaper or ringtone file.
50124                 </p></description>
50125             </descriptive>
50126             <Type type="DOMString"/>
50127           </Argument>
50128           <Argument name="successCallback">
50129             <descriptive>
50130                 <description><p>
50131  To be invoked if the setting value is successfully set.
50132                 </p></description>
50133             </descriptive>
50134             <Type name="SuccessCallback"/>
50135           </Argument>
50136           <Argument optional="optional" name="errorCallback">
50137             <descriptive>
50138                 <description><p>
50139  To be invoked if the setting value cannot be set.
50140                 </p></description>
50141             </descriptive>
50142             <Type name="ErrorCallback" nullable="nullable"/>
50143           </Argument>
50144         </ArgumentList>
50145         <Raises>
50146           <RaiseException name="WebAPIException">
50147             <descriptive>
50148                 <description><p>
50149  with error type InvalidValuesError, if any of the input parameters contain an invalid value.
50150                 </p></description>
50151                 <description><p>
50152  with error type NotSupportedError, if this feature is not supported.
50153                 </p></description>
50154                 <description><p>
50155  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
50156                 </p></description>
50157                 <description><p>
50158  with error type SecurityError, if this functionality is not allowed.
50159                 </p></description>
50160                 <description><p>
50161  with error type UnknownError in any other error case.
50162                 </p></description>
50163             </descriptive>
50164           </RaiseException>
50165         </Raises>
50166       </Operation>
50167       <Operation name="getProperty" id="::SystemSetting::SystemSettingManager::getProperty">
50168         <webidl>     void getProperty(<ref>SystemSettingType</ref> type,
50169               <ref>SystemSettingSuccessCallback</ref> successCallback,
50170               optional <ref>ErrorCallback</ref>? errorCallback) raises (<ref>WebAPIException</ref>);</webidl>
50171         <descriptive>
50172             <brief>
50173   Gets the value of the property of a device.
50174             </brief>
50175            <description>
50176             <p>
50177 This method allows the user to get the value of the specified system property as wallpaper or ringtone of a device.
50178             </p>
50179            </description>
50180             <version>
50181  2.0
50182             </version>
50183            <description>
50184             <p>
50185 The ErrorCallback is launched with these error types:
50186             </p>
50187             <ul>
50188               <li>
50189 TypeMismatchError - If any input parameter is not compatible with the expected type for that parameter.               </li>
50190               <li>
50191 InvalidValuesError - If any of the input parameters contain an invalid value.              </li>
50192               <li>
50193 UnknownError - If any other error occurs.              </li>
50194             </ul>
50195            </description>
50196             <Code> // Define the success callback
50197  function getPropertySuccessCallback(value) {
50198    console.log(&quot;Success to getProperty : &quot; + value);
50199  }
50200
50201  // Define the error callback.
50202  function errorCallback(error) {
50203    console.log(&quot;Fail to getProperty&quot; + error.message);
50204  }
50205
50206  tizen.systemsetting.getProperty(&quot;HOME_SCREEN&quot;, getPropertySuccessCallback, errorCallback);
50207
50208  </Code>
50209         </descriptive>
50210         <Type type="void"/>
50211         <ArgumentList>
50212           <Argument name="type">
50213             <descriptive>
50214                 <description><p>
50215  The type of the property to get.
50216                 </p></description>
50217             </descriptive>
50218             <Type name="SystemSettingType"/>
50219           </Argument>
50220           <Argument name="successCallback">
50221             <descriptive>
50222                 <description><p>
50223  To be invoked if the setting value is successfully retrieved.
50224                 </p></description>
50225             </descriptive>
50226             <Type name="SystemSettingSuccessCallback"/>
50227           </Argument>
50228           <Argument optional="optional" name="errorCallback">
50229             <descriptive>
50230                 <description><p>
50231  To be invoked if the setting value cannot be retrieved.
50232                 </p></description>
50233             </descriptive>
50234             <Type name="ErrorCallback" nullable="nullable"/>
50235           </Argument>
50236         </ArgumentList>
50237         <Raises>
50238           <RaiseException name="WebAPIException">
50239             <descriptive>
50240                 <description><p>
50241  with error type InvalidValuesError, if any of the input parameters contain an invalid value.
50242                 </p></description>
50243                 <description><p>
50244  with error type NotSupportedError, if this feature is not supported.
50245                 </p></description>
50246                 <description><p>
50247  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
50248                 </p></description>
50249                 <description><p>
50250  with error type UnknownError in any other error case.     
50251                 </p></description>
50252             </descriptive>
50253           </RaiseException>
50254         </Raises>
50255       </Operation>
50256     </Interface>
50257     <Interface name="SystemSettingSuccessCallback" id="::SystemSetting::SystemSettingSuccessCallback">
50258       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface SystemSettingSuccessCallback {
50259     void onsuccess(DOMString value);
50260   };</webidl>
50261       <descriptive>
50262           <brief>
50263  The success callback for getProperty().
50264           </brief>
50265           <version>
50266  2.0
50267           </version>
50268       </descriptive>
50269       <ExtendedAttributeList>
50270         <ExtendedAttribute name="Callback" value="FunctionOnly">
50271           <webidl>Callback</webidl>
50272         </ExtendedAttribute>
50273         <ExtendedAttribute name="NoInterfaceObject">
50274           <webidl> NoInterfaceObject</webidl>
50275         </ExtendedAttribute>
50276       </ExtendedAttributeList>
50277       <Operation name="onsuccess" id="::SystemSetting::SystemSettingSuccessCallback::onsuccess">
50278         <webidl>    void onsuccess(DOMString value);</webidl>
50279         <Type type="void"/>
50280         <ArgumentList>
50281           <Argument name="value">
50282             <Type type="DOMString"/>
50283           </Argument>
50284         </ArgumentList>
50285       </Operation>
50286     </Interface>
50287   </Module>
50288   <Module name="Time" id="::Time">
50289     <webidl>module Time {
50290   
50291   enum TimeDurationUnit { &quot;MSECS&quot;, &quot;SECS&quot;, &quot;MINS&quot;, &quot;HOURS&quot;, &quot;DAYS&quot; };
50292   
50293   [NoInterfaceObject] interface TimeManagerObject {
50294     readonly attribute <ref>TimeUtil</ref> time;
50295   };
50296   <ref>Tizen</ref> implements <ref>TimeManagerObject</ref>;
50297   
50298   [NoInterfaceObject] interface TimeUtil {
50299     <ref>TZDate</ref> getCurrentDateTime() raises(<ref>WebAPIException</ref>);
50300     
50301     DOMString getLocalTimezone() raises(<ref>WebAPIException</ref>);
50302     
50303     DOMString[] getAvailableTimezones() raises(<ref>WebAPIException</ref>);
50304                                            
50305     DOMString getDateFormat(optional boolean? shortformat) raises(<ref>WebAPIException</ref>);
50306     
50307     DOMString getTimeFormat() raises(<ref>WebAPIException</ref>);
50308     
50309     boolean isLeapYear(long year) raises(<ref>WebAPIException</ref>);
50310   };
50311
50312
50313   [Constructor(optional Date? datetime, optional DOMString? timezone),
50314    Constructor(long year, long month, long day, optional long? hours, optional long? minutes, optional long? seconds, optional long? milliseconds, optional DOMString? timezone)]
50315
50316   interface TZDate {
50317     long getDate();
50318     
50319     void setDate(long date);
50320     
50321     long getDay();
50322     
50323     long getFullYear();
50324     
50325     void setFullYear(long year);
50326     
50327     long getHours();
50328     
50329     void setHours(long hours);
50330     
50331     long getMilliseconds();
50332     
50333     void setMilliseconds(long ms);
50334     
50335     long getMinutes();
50336     
50337     void setMinutes(long minutes);
50338     
50339     long getMonth();
50340     
50341     void setMonth(long month);
50342     
50343     long getSeconds();
50344     
50345     void setSeconds(long seconds);
50346     
50347     long getUTCDate();
50348     
50349     void setUTCDate(long date);
50350     
50351     long getUTCDay();
50352     
50353     long getUTCFullYear();
50354     
50355     void setUTCFullYear(long year);
50356     
50357     long getUTCHours();
50358     
50359     void setUTCHours(long hours);
50360     
50361     long getUTCMilliseconds();
50362     
50363     void setUTCMilliseconds(long ms);
50364     
50365     long getUTCMinutes();
50366     
50367     void setUTCMinutes(long minutes);
50368     
50369     long getUTCMonth();
50370     
50371     void setUTCMonth(long month);
50372     
50373     long getUTCSeconds();
50374     
50375     void setUTCSeconds(long seconds);
50376     
50377     DOMString getTimezone();
50378     
50379     <ref>TZDate</ref> toTimezone(DOMString tzid) raises(<ref>WebAPIException</ref>);
50380     
50381     <ref>TZDate</ref> toLocalTimezone() raises(<ref>WebAPIException</ref>);
50382     
50383     <ref>TZDate</ref> toUTC() raises(<ref>WebAPIException</ref>);
50384     
50385     <ref>TimeDuration</ref> difference(<ref>TZDate</ref> other) raises(<ref>WebAPIException</ref>);
50386
50387     boolean equalsTo(<ref>TZDate</ref> other) raises(<ref>WebAPIException</ref>);
50388     
50389     boolean earlierThan(<ref>TZDate</ref> other) raises(<ref>WebAPIException</ref>);
50390     
50391     boolean laterThan(<ref>TZDate</ref> other) raises(<ref>WebAPIException</ref>);
50392     
50393     <ref>TZDate</ref> addDuration(<ref>TimeDuration</ref> duration) raises(<ref>WebAPIException</ref>);
50394     
50395     DOMString toLocaleDateString();
50396     
50397     DOMString toLocaleTimeString();
50398     
50399     DOMString toLocaleString();
50400     
50401     DOMString toDateString();
50402     
50403     DOMString toTimeString();
50404     
50405     DOMString toString();
50406     
50407     DOMString getTimezoneAbbreviation() raises(<ref>WebAPIException</ref>);
50408     
50409     long secondsFromUTC() raises(<ref>WebAPIException</ref>);
50410     
50411     boolean isDST() raises(<ref>WebAPIException</ref>);
50412     
50413     <ref>TZDate</ref>? getPreviousDSTTransition() raises(<ref>WebAPIException</ref>);
50414     
50415     <ref>TZDate</ref>? getNextDSTTransition() raises(<ref>WebAPIException</ref>);
50416   };
50417   
50418   [Constructor(long long length, optional <ref>TimeDurationUnit</ref>? unit)]
50419   interface TimeDuration
50420   {   
50421     attribute long long length;
50422     
50423     attribute <ref>TimeDurationUnit</ref> unit;
50424     
50425     <ref>TimeDuration</ref> difference(<ref>TimeDuration</ref> other) raises(<ref>WebAPIException</ref>);
50426     
50427     boolean equalsTo(<ref>TimeDuration</ref> other) raises(<ref>WebAPIException</ref>);
50428     
50429     boolean lessThan(<ref>TimeDuration</ref> other) raises(<ref>WebAPIException</ref>);
50430     
50431     boolean greaterThan(<ref>TimeDuration</ref> other) raises(<ref>WebAPIException</ref>);
50432   };
50433 };</webidl>
50434     <descriptive>
50435         <brief>
50436   The Time API provides information regarding date / time and time zones.
50437         </brief>
50438         <version>
50439  1.0
50440         </version>
50441        <description>
50442         <p>
50443 The JavaScript Date object does not have full timezone support.
50444 Date objects allow only simple representations to denote a particular location's
50445 offset from Universal Coordinated Time (UTC). This is typically provided as a +/-
50446 offset from UTC-0 (also known as Greenwich Mean Time, or GMT) for example, +05:30 denotes
50447 that a location is 5 hours and 30 minutes ahead of UTC +00:00.
50448 The issue with this method is not getting the correct
50449 local time for a given date. The existing methods are sufficient for this purpose.
50450 The issue is correctly converting to and from local time and UTC for all points in
50451 time - in any of the past, present, and future - based on an initial time provided.
50452 This is important for defining relative dates, where a time in a given location may
50453 observe different UTC offsets, according to any Daylight Savings Rules (DST) in effect
50454 or any other changes that may occur to a location's time zone over time.
50455 Without the communication of the explicit time zone rules governing a given date and
50456 time, the ability to effectively calculate the offset of the local time to UTC or to
50457 any other time zone at any point in the past or future is lost. 
50458         </p>
50459         <p>
50460 This API can be used to get TZDate objects with full time zone support, convert them
50461 between timezones, retrieve available timezones.
50462         </p>
50463         <p>
50464 For more information on the Time features, see <a href="../../org.tizen.web.appprogramming/html/guide/sys_guide/time.htm">Time Guide</a>. 
50465         </p>
50466        </description>
50467     </descriptive>
50468     <Enum name="TimeDurationUnit" id="::Time::TimeDurationUnit">
50469       <webidl>  enum TimeDurationUnit { &quot;MSECS&quot;, &quot;SECS&quot;, &quot;MINS&quot;, &quot;HOURS&quot;, &quot;DAYS&quot; };</webidl>
50470       <descriptive>
50471           <brief>
50472  TimeDuration unit (milliseconds, seconds, minutes, hours or days).
50473           </brief>
50474          <description>
50475           <p>
50476 At least the following values must be supported:
50477           </p>
50478           <ul>
50479             <li>
50480 MSECS - Indicates a duration in milliseconds            </li>
50481             <li>
50482 SECS - Indicates a duration in seconds             </li>
50483             <li>
50484 MINS - Indicates a duration in minutes             </li>
50485             <li>
50486 HOURS - Indicates a duration in hours             </li>
50487             <li>
50488 DAYS - Indicates a duration in days            </li>
50489           </ul>
50490          </description>
50491           <version>
50492  1.0
50493           </version>
50494       </descriptive>
50495       <EnumValue stringvalue="MSECS">
50496         <webidl> &quot;MSECS</webidl>
50497       </EnumValue>
50498       <EnumValue stringvalue="SECS">
50499         <webidl> &quot;SECS</webidl>
50500       </EnumValue>
50501       <EnumValue stringvalue="MINS">
50502         <webidl> &quot;MINS</webidl>
50503       </EnumValue>
50504       <EnumValue stringvalue="HOURS">
50505         <webidl> &quot;HOURS</webidl>
50506       </EnumValue>
50507       <EnumValue stringvalue="DAYS">
50508         <webidl> &quot;DAYS</webidl>
50509       </EnumValue>
50510     </Enum>
50511     <Interface name="TimeManagerObject" id="::Time::TimeManagerObject">
50512       <webidl>  [NoInterfaceObject] interface TimeManagerObject {
50513     readonly attribute <ref>TimeUtil</ref> time;
50514   };</webidl>
50515       <descriptive>
50516           <brief>
50517  Defines what is instantiated in the tizen object by the Tizen Platform.
50518           </brief>
50519          <description>
50520           <p>
50521 There will be a tizen.time object that allows accessing the
50522 functionality of the Time API.
50523           </p>
50524          </description>
50525           <version>
50526  1.0
50527           </version>
50528       </descriptive>
50529       <ExtendedAttributeList>
50530         <ExtendedAttribute name="NoInterfaceObject">
50531           <webidl>NoInterfaceObject</webidl>
50532         </ExtendedAttribute>
50533       </ExtendedAttributeList>
50534       <Attribute readonly="readonly" name="time" id="::Time::TimeManagerObject::time">
50535         <webidl>    readonly attribute <ref>TimeUtil</ref> time;</webidl>
50536         <Type name="TimeUtil"/>
50537       </Attribute>
50538     </Interface>
50539     <Implements name1="Tizen" name2="TimeManagerObject">
50540       <webidl>  <ref>Tizen</ref> implements <ref>TimeManagerObject</ref>;</webidl>
50541     </Implements>
50542     <Interface name="TimeUtil" id="::Time::TimeUtil">
50543       <webidl>  [NoInterfaceObject] interface TimeUtil {
50544     <ref>TZDate</ref> getCurrentDateTime() raises(<ref>WebAPIException</ref>);
50545     
50546     DOMString getLocalTimezone() raises(<ref>WebAPIException</ref>);
50547     
50548     DOMString[] getAvailableTimezones() raises(<ref>WebAPIException</ref>);
50549                                            
50550     DOMString getDateFormat(optional boolean? shortformat) raises(<ref>WebAPIException</ref>);
50551     
50552     DOMString getTimeFormat() raises(<ref>WebAPIException</ref>);
50553     
50554     boolean isLeapYear(long year) raises(<ref>WebAPIException</ref>);
50555   };</webidl>
50556       <descriptive>
50557           <brief>
50558  The TimeUtil class that provides access to the time API.
50559           </brief>
50560          <description>
50561           <p>
50562 This interface offers methods to manage date / time as well as timezones such as:
50563           </p>
50564           <ul>
50565             <li>
50566 Get the current date / time using getCurrentDateTime().            </li>
50567             <li>
50568 Get timezones using getLocalTimezone() and getAvailableTimezones().            </li>
50569           </ul>
50570          </description>
50571           <version>
50572  1.0
50573           </version>
50574       </descriptive>
50575       <ExtendedAttributeList>
50576         <ExtendedAttribute name="NoInterfaceObject">
50577           <webidl>NoInterfaceObject</webidl>
50578         </ExtendedAttribute>
50579       </ExtendedAttributeList>
50580       <Operation name="getCurrentDateTime" id="::Time::TimeUtil::getCurrentDateTime">
50581         <webidl>    <ref>TZDate</ref> getCurrentDateTime() raises(<ref>WebAPIException</ref>);</webidl>
50582         <descriptive>
50583             <brief>
50584  Returns the current date / time.
50585             </brief>
50586             <version>
50587  1.0
50588             </version>
50589             <Code> var current_dt = tizen.time.getCurrentDateTime();
50590  console.log(&quot;current date / time is &quot; + current_dt.toLocaleString());
50591  </Code>
50592         </descriptive>
50593         <Type name="TZDate">
50594           <descriptive>
50595               <description><p>
50596  TZDate Current TZDate object.
50597               </p></description>
50598           </descriptive>
50599         </Type>
50600         <ArgumentList/>
50601         <Raises>
50602           <RaiseException name="WebAPIException">
50603             <descriptive>
50604                 <description><p>
50605  with error type UnknownError, if the call failed due to an unknown error.
50606                 </p></description>
50607             </descriptive>
50608           </RaiseException>
50609         </Raises>
50610       </Operation>
50611       <Operation name="getLocalTimezone" id="::Time::TimeUtil::getLocalTimezone">
50612         <webidl>    DOMString getLocalTimezone() raises(<ref>WebAPIException</ref>);</webidl>
50613         <descriptive>
50614             <brief>
50615  Returns identifier of the local system timezone.
50616             </brief>
50617             <version>
50618  1.0
50619             </version>
50620             <Code> console.log(&quot;The local time zone is &quot; + tizen.time.getLocalTimezone());
50621  </Code>
50622         </descriptive>
50623         <Type type="DOMString">
50624           <descriptive>
50625               <description><p>
50626  Timezone Local timezone.
50627               </p></description>
50628           </descriptive>
50629         </Type>
50630         <ArgumentList/>
50631         <Raises>
50632           <RaiseException name="WebAPIException">
50633             <descriptive>
50634                 <description><p>
50635  with error type UnknownError, if the call failed due to an unknown error.
50636                 </p></description>
50637             </descriptive>
50638           </RaiseException>
50639         </Raises>
50640       </Operation>
50641       <Operation name="getAvailableTimezones" id="::Time::TimeUtil::getAvailableTimezones">
50642         <webidl>    DOMString[] getAvailableTimezones() raises(<ref>WebAPIException</ref>);</webidl>
50643         <descriptive>
50644             <brief>
50645  Returns synchronously the identifiers of the timezones supported by the device.
50646             </brief>
50647            <description>
50648             <p>
50649 Zero or more slashes separate different components of a timezone identifier,
50650 with the most general descriptor first and the most specific one last. For example,
50651 'Europe/Berlin', 'America/Argentina/Buenos_Aires'.
50652             </p>
50653            </description>
50654             <version>
50655  1.0
50656             </version>
50657             <Code> var tzids = tizen.time.getAvailableTimezones();
50658  console.log(&quot;The device supports &quot; + tzids.length + &quot; time zones.&quot;);
50659  </Code>
50660         </descriptive>
50661         <Type type="array">
50662           <descriptive>
50663               <description><p>
50664  Array of time zone identifiers.
50665               </p></description>
50666           </descriptive>
50667           <Type type="DOMString"/>
50668         </Type>
50669         <ArgumentList/>
50670         <Raises>
50671           <RaiseException name="WebAPIException">
50672             <descriptive>
50673                 <description><p>
50674  with error type UnknownError, if the call failed due to an unknown error.
50675                 </p></description>
50676             </descriptive>
50677           </RaiseException>
50678         </Raises>
50679       </Operation>
50680       <Operation name="getDateFormat" id="::Time::TimeUtil::getDateFormat">
50681         <webidl>    DOMString getDateFormat(optional boolean? shortformat) raises(<ref>WebAPIException</ref>);</webidl>
50682         <descriptive>
50683            <description>
50684             <p>
50685 Returns the date format according to the system's locale settings.
50686             </p>
50687             <p>
50688 These expressions may be used in the returned string:
50689             </p>
50690             <ul>
50691               <li>
50692 &quot;d&quot; = day number (1 to 31)              </li>
50693               <li>
50694 &quot;D&quot; = day name              </li>
50695               <li>
50696 &quot;m&quot; = month number (1 to 12)              </li>
50697               <li>
50698 &quot;M&quot; = month name              </li>
50699               <li>
50700 &quot;y&quot; = year              </li>
50701             </ul>
50702             <p>
50703 Examples of string formats include: &quot;d/m/y&quot;, &quot;y-d-m&quot;, &quot;D, M d y&quot;.
50704             </p>
50705            </description>
50706             <version>
50707  1.0
50708             </version>
50709         </descriptive>
50710         <Type type="DOMString">
50711           <descriptive>
50712               <description><p>
50713  DOMString The date format according to the system's locale settings.
50714               </p></description>
50715           </descriptive>
50716         </Type>
50717         <ArgumentList>
50718           <Argument optional="optional" name="shortformat">
50719             <descriptive>
50720                 <description><p>
50721  Flag indicating if the user is interested in the short
50722 date format (23/10/2011) instead of a long date format (&quot;Monday, October 23 2011&quot;).
50723 By default, this attribute is set to false.
50724                 </p></description>
50725             </descriptive>
50726             <Type type="boolean" nullable="nullable"/>
50727           </Argument>
50728         </ArgumentList>
50729         <Raises>
50730           <RaiseException name="WebAPIException">
50731             <descriptive>
50732                 <description><p>
50733  with error type UnknownError, if the call failed due to an unknown error.
50734                 </p></description>
50735             </descriptive>
50736           </RaiseException>
50737         </Raises>
50738       </Operation>
50739       <Operation name="getTimeFormat" id="::Time::TimeUtil::getTimeFormat">
50740         <webidl>    DOMString getTimeFormat() raises(<ref>WebAPIException</ref>);</webidl>
50741         <descriptive>
50742            <description>
50743             <p>
50744 Returns the time format according to the system's locale settings.
50745             </p>
50746             <p>
50747 These expressions may be used in the returned string:
50748             </p>
50749             <ul>
50750               <li>
50751 &quot;h&quot; = hours (0 to 23 or 1 to 12 if AM/PM display)              </li>
50752               <li>
50753 &quot;m&quot; = minutes (0 to 59)              </li>
50754               <li>
50755 &quot;s&quot; = seconds (0 to 59)              </li>
50756               <li>
50757 &quot;ap&quot; = AM/PM display              </li>
50758             </ul>
50759             <p>
50760 Examples of string formats include: &quot;h:m:s ap&quot;, &quot;h:m:s&quot;.
50761             </p>
50762            </description>
50763             <version>
50764  1.0
50765             </version>
50766         </descriptive>
50767         <Type type="DOMString">
50768           <descriptive>
50769               <description><p>
50770  DOMString The time format according to the system's locale settings.
50771               </p></description>
50772           </descriptive>
50773         </Type>
50774         <ArgumentList/>
50775         <Raises>
50776           <RaiseException name="WebAPIException">
50777             <descriptive>
50778                 <description><p>
50779  with error type UnknownError, if the call failed due to an unknown error.
50780                 </p></description>
50781             </descriptive>
50782           </RaiseException>
50783         </Raises>
50784       </Operation>
50785       <Operation name="isLeapYear" id="::Time::TimeUtil::isLeapYear">
50786         <webidl>    boolean isLeapYear(long year) raises(<ref>WebAPIException</ref>);</webidl>
50787         <descriptive>
50788             <brief>
50789  Returns <em>true</em> if the given year is a leap year.
50790             </brief>
50791             <version>
50792  1.0
50793             </version>
50794             <Code> var current_dt = tizen.time.getCurrentDateTime();
50795  var is_leap = tizen.time.isLeapYear(current_dt.getFullYear());
50796  if (is_leap)
50797    console.log(&quot;This year is a leap year.&quot;);
50798  </Code>
50799         </descriptive>
50800         <Type type="boolean">
50801           <descriptive>
50802               <description><p>
50803  boolean <em>true</em>, if the year is a leap year.
50804               </p></description>
50805           </descriptive>
50806         </Type>
50807         <ArgumentList>
50808           <Argument name="year">
50809             <descriptive>
50810                 <description><p>
50811  Year to check.
50812                 </p></description>
50813             </descriptive>
50814             <Type type="long"/>
50815           </Argument>
50816         </ArgumentList>
50817         <Raises>
50818           <RaiseException name="WebAPIException">
50819             <descriptive>
50820                 <description><p>
50821  with error type TypeMismatchError, if the input parameter
50822 is not compatible with the expected type for that parameter.
50823                 </p></description>
50824                 <description><p>
50825  with error type InvalidValuesError, if any of the input 
50826 parameters contain an invalid value.    
50827                 </p></description>
50828                 <description><p>
50829  with error type UnknownError, if the call failed due to an unknown error.
50830                 </p></description>
50831             </descriptive>
50832           </RaiseException>
50833         </Raises>
50834       </Operation>
50835     </Interface>
50836     <Interface name="TZDate" id="::Time::TZDate">
50837       <webidl>  [Constructor(optional Date? datetime, optional DOMString? timezone),
50838    Constructor(long year, long month, long day, optional long? hours, optional long? minutes, optional long? seconds, optional long? milliseconds, optional DOMString? timezone)]
50839
50840   interface TZDate {
50841     long getDate();
50842     
50843     void setDate(long date);
50844     
50845     long getDay();
50846     
50847     long getFullYear();
50848     
50849     void setFullYear(long year);
50850     
50851     long getHours();
50852     
50853     void setHours(long hours);
50854     
50855     long getMilliseconds();
50856     
50857     void setMilliseconds(long ms);
50858     
50859     long getMinutes();
50860     
50861     void setMinutes(long minutes);
50862     
50863     long getMonth();
50864     
50865     void setMonth(long month);
50866     
50867     long getSeconds();
50868     
50869     void setSeconds(long seconds);
50870     
50871     long getUTCDate();
50872     
50873     void setUTCDate(long date);
50874     
50875     long getUTCDay();
50876     
50877     long getUTCFullYear();
50878     
50879     void setUTCFullYear(long year);
50880     
50881     long getUTCHours();
50882     
50883     void setUTCHours(long hours);
50884     
50885     long getUTCMilliseconds();
50886     
50887     void setUTCMilliseconds(long ms);
50888     
50889     long getUTCMinutes();
50890     
50891     void setUTCMinutes(long minutes);
50892     
50893     long getUTCMonth();
50894     
50895     void setUTCMonth(long month);
50896     
50897     long getUTCSeconds();
50898     
50899     void setUTCSeconds(long seconds);
50900     
50901     DOMString getTimezone();
50902     
50903     <ref>TZDate</ref> toTimezone(DOMString tzid) raises(<ref>WebAPIException</ref>);
50904     
50905     <ref>TZDate</ref> toLocalTimezone() raises(<ref>WebAPIException</ref>);
50906     
50907     <ref>TZDate</ref> toUTC() raises(<ref>WebAPIException</ref>);
50908     
50909     <ref>TimeDuration</ref> difference(<ref>TZDate</ref> other) raises(<ref>WebAPIException</ref>);
50910
50911     boolean equalsTo(<ref>TZDate</ref> other) raises(<ref>WebAPIException</ref>);
50912     
50913     boolean earlierThan(<ref>TZDate</ref> other) raises(<ref>WebAPIException</ref>);
50914     
50915     boolean laterThan(<ref>TZDate</ref> other) raises(<ref>WebAPIException</ref>);
50916     
50917     <ref>TZDate</ref> addDuration(<ref>TimeDuration</ref> duration) raises(<ref>WebAPIException</ref>);
50918     
50919     DOMString toLocaleDateString();
50920     
50921     DOMString toLocaleTimeString();
50922     
50923     DOMString toLocaleString();
50924     
50925     DOMString toDateString();
50926     
50927     DOMString toTimeString();
50928     
50929     DOMString toString();
50930     
50931     DOMString getTimezoneAbbreviation() raises(<ref>WebAPIException</ref>);
50932     
50933     long secondsFromUTC() raises(<ref>WebAPIException</ref>);
50934     
50935     boolean isDST() raises(<ref>WebAPIException</ref>);
50936     
50937     <ref>TZDate</ref>? getPreviousDSTTransition() raises(<ref>WebAPIException</ref>);
50938     
50939     <ref>TZDate</ref>? getNextDSTTransition() raises(<ref>WebAPIException</ref>);
50940   };</webidl>
50941       <descriptive>
50942           <brief>
50943  The TZDate object represents information regarding a given
50944 date / time in a predefined timezone.
50945 If its date / time is exceed the platform limit, TZDate will be invalid.
50946           </brief>
50947           <version>
50948  1.0
50949           </version>
50950       </descriptive>
50951       <ExtendedAttributeList>
50952         <ExtendedAttribute name="Constructor">
50953           <webidl>Constructor(optional Date? datetime, optional DOMString? timezone)</webidl>
50954           <ArgumentList>
50955             <Argument optional="optional" name="datetime">
50956               <Type type="Date" nullable="nullable"/>
50957             </Argument>
50958             <Argument optional="optional" name="timezone">
50959               <Type type="DOMString" nullable="nullable"/>
50960             </Argument>
50961           </ArgumentList>
50962         </ExtendedAttribute>
50963         <ExtendedAttribute name="Constructor">
50964           <webidl>   Constructor(long year, long month, long day, optional long? hours, optional long? minutes, optional long? seconds, optional long? milliseconds, optional DOMString? timezone)</webidl>
50965           <descriptive>
50966              <description>
50967               <ul>
50968                 <li>
50969 <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>
50970               </ul>
50971              </description>
50972           </descriptive>
50973           <ArgumentList>
50974             <Argument name="year">
50975               <Type type="long"/>
50976             </Argument>
50977             <Argument name="month">
50978               <Type type="long"/>
50979             </Argument>
50980             <Argument name="day">
50981               <Type type="long"/>
50982             </Argument>
50983             <Argument optional="optional" name="hours">
50984               <Type type="long" nullable="nullable"/>
50985             </Argument>
50986             <Argument optional="optional" name="minutes">
50987               <Type type="long" nullable="nullable"/>
50988             </Argument>
50989             <Argument optional="optional" name="seconds">
50990               <Type type="long" nullable="nullable"/>
50991             </Argument>
50992             <Argument optional="optional" name="milliseconds">
50993               <Type type="long" nullable="nullable"/>
50994             </Argument>
50995             <Argument optional="optional" name="timezone">
50996               <Type type="DOMString" nullable="nullable"/>
50997             </Argument>
50998           </ArgumentList>
50999         </ExtendedAttribute>
51000       </ExtendedAttributeList>
51001       <Operation name="getDate" id="::Time::TZDate::getDate">
51002         <webidl>    long getDate();</webidl>
51003         <descriptive>
51004             <brief>
51005  Returns the day of the month (from 1-31).
51006             </brief>
51007             <version>
51008  1.0
51009             </version>
51010         </descriptive>
51011         <Type type="long">
51012           <descriptive>
51013               <description><p>
51014  long The day of the month.
51015               </p></description>
51016           </descriptive>
51017         </Type>
51018         <ArgumentList/>
51019       </Operation>
51020       <Operation name="setDate" id="::Time::TZDate::setDate">
51021         <webidl>    void setDate(long date);</webidl>
51022         <descriptive>
51023             <brief>
51024  Sets the day of the month (from 1-31).
51025             </brief>
51026            <description>
51027             <p>
51028 If it tries to set the day bigger than the last day of the month or smaller than 1, it will be calculated automatically.
51029 For example, if TZDate's month is May and parameter is 32, it will be June 1.
51030             </p>
51031            </description>
51032             <version>
51033  1.0
51034             </version>
51035         </descriptive>
51036         <Type type="void"/>
51037         <ArgumentList>
51038           <Argument name="date">
51039             <descriptive>
51040                 <description><p>
51041  Date to set.
51042                 </p></description>
51043             </descriptive>
51044             <Type type="long"/>
51045           </Argument>
51046         </ArgumentList>
51047       </Operation>
51048       <Operation name="getDay" id="::Time::TZDate::getDay">
51049         <webidl>    long getDay();</webidl>
51050         <descriptive>
51051             <brief>
51052  Returns the day of the week (from 0-6).
51053             </brief>
51054             <version>
51055  1.0
51056             </version>
51057         </descriptive>
51058         <Type type="long">
51059           <descriptive>
51060               <description><p>
51061  long The day of the week.
51062               </p></description>
51063           </descriptive>
51064         </Type>
51065         <ArgumentList/>
51066       </Operation>
51067       <Operation name="getFullYear" id="::Time::TZDate::getFullYear">
51068         <webidl>    long getFullYear();</webidl>
51069         <descriptive>
51070             <brief>
51071  Returns the year.
51072             </brief>
51073            <description>
51074             <p>
51075 Positive values indicate AD(Anno Domini) years. 0 and negative values indicate BC(Before Christ) years.
51076 For example, 1 = AD 1, 0 = BC 1, -1 = BC 2.
51077             </p>
51078            </description>
51079             <version>
51080  1.0
51081             </version>
51082         </descriptive>
51083         <Type type="long">
51084           <descriptive>
51085               <description><p>
51086  long The year.
51087               </p></description>
51088           </descriptive>
51089         </Type>
51090         <ArgumentList/>
51091       </Operation>
51092       <Operation name="setFullYear" id="::Time::TZDate::setFullYear">
51093         <webidl>    void setFullYear(long year);</webidl>
51094         <descriptive>
51095             <brief>
51096  Sets the year.
51097             </brief>
51098             <version>
51099  1.0
51100             </version>
51101         </descriptive>
51102         <Type type="void"/>
51103         <ArgumentList>
51104           <Argument name="year">
51105             <descriptive>
51106                 <description><p>
51107  Year to set.
51108                 </p></description>
51109             </descriptive>
51110             <Type type="long"/>
51111           </Argument>
51112         </ArgumentList>
51113       </Operation>
51114       <Operation name="getHours" id="::Time::TZDate::getHours">
51115         <webidl>    long getHours();</webidl>
51116         <descriptive>
51117             <brief>
51118  Returns the hour (0-23).
51119             </brief>
51120             <version>
51121  1.0
51122             </version>
51123         </descriptive>
51124         <Type type="long">
51125           <descriptive>
51126               <description><p>
51127  long The hour.
51128               </p></description>
51129           </descriptive>
51130         </Type>
51131         <ArgumentList/>
51132       </Operation>
51133       <Operation name="setHours" id="::Time::TZDate::setHours">
51134         <webidl>    void setHours(long hours);</webidl>
51135         <descriptive>
51136             <brief>
51137  Sets the hour (0-23).
51138             </brief>
51139            <description>
51140             <p>
51141 If it tries to set the hour bigger than 23 or smaller than 0, it will be calculated automatically.
51142 For example, if hours is 24, it will set 0 and add to a date.
51143             </p>
51144            </description>
51145             <version>
51146  1.0
51147             </version>
51148         </descriptive>
51149         <Type type="void"/>
51150         <ArgumentList>
51151           <Argument name="hours">
51152             <descriptive>
51153                 <description><p>
51154  Hours to set.
51155                 </p></description>
51156             </descriptive>
51157             <Type type="long"/>
51158           </Argument>
51159         </ArgumentList>
51160       </Operation>
51161       <Operation name="getMilliseconds" id="::Time::TZDate::getMilliseconds">
51162         <webidl>    long getMilliseconds();</webidl>
51163         <descriptive>
51164             <brief>
51165  Returns the milliseconds (from 0-999).
51166             </brief>
51167             <version>
51168  1.0
51169             </version>
51170         </descriptive>
51171         <Type type="long">
51172           <descriptive>
51173               <description><p>
51174  long The milliseconds.
51175               </p></description>
51176           </descriptive>
51177         </Type>
51178         <ArgumentList/>
51179       </Operation>
51180       <Operation name="setMilliseconds" id="::Time::TZDate::setMilliseconds">
51181         <webidl>    void setMilliseconds(long ms);</webidl>
51182         <descriptive>
51183             <brief>
51184  Sets the milliseconds (from 0-999).
51185             </brief>
51186            <description>
51187             <p>
51188 If it tries to set the millisecond bigger than 999 or smaller than 0, it will be calculated automatically.
51189 For example, if ms is 1000, it will set 0 and add to a second.
51190             </p>
51191            </description>
51192             <version>
51193  1.0
51194             </version>
51195         </descriptive>
51196         <Type type="void"/>
51197         <ArgumentList>
51198           <Argument name="ms">
51199             <descriptive>
51200                 <description><p>
51201  Milliseconds to set.
51202                 </p></description>
51203             </descriptive>
51204             <Type type="long"/>
51205           </Argument>
51206         </ArgumentList>
51207       </Operation>
51208       <Operation name="getMinutes" id="::Time::TZDate::getMinutes">
51209         <webidl>    long getMinutes();</webidl>
51210         <descriptive>
51211             <brief>
51212  Returns the minutes (from 0-59).
51213             </brief>
51214             <version>
51215  1.0
51216             </version>
51217         </descriptive>
51218         <Type type="long">
51219           <descriptive>
51220               <description><p>
51221  long The minutes.
51222               </p></description>
51223           </descriptive>
51224         </Type>
51225         <ArgumentList/>
51226       </Operation>
51227       <Operation name="setMinutes" id="::Time::TZDate::setMinutes">
51228         <webidl>    void setMinutes(long minutes);</webidl>
51229         <descriptive>
51230             <brief>
51231  Sets the minutes.
51232             </brief>
51233            <description>
51234             <p>
51235 If it tries to set the minute bigger than 59 or smaller than 0, it will be calculated automatically.
51236 For example, if minutes is 60, it will set 0 and add to an hour.
51237             </p>
51238            </description>
51239             <version>
51240  1.0
51241             </version>
51242         </descriptive>
51243         <Type type="void"/>
51244         <ArgumentList>
51245           <Argument name="minutes">
51246             <descriptive>
51247                 <description><p>
51248  Minutes to set.
51249                 </p></description>
51250             </descriptive>
51251             <Type type="long"/>
51252           </Argument>
51253         </ArgumentList>
51254       </Operation>
51255       <Operation name="getMonth" id="::Time::TZDate::getMonth">
51256         <webidl>    long getMonth();</webidl>
51257         <descriptive>
51258             <brief>
51259  Returns the month (from 0-11).
51260             </brief>
51261             <version>
51262  1.0
51263             </version>
51264         </descriptive>
51265         <Type type="long">
51266           <descriptive>
51267               <description><p>
51268  long The month.
51269               </p></description>
51270           </descriptive>
51271         </Type>
51272         <ArgumentList/>
51273       </Operation>
51274       <Operation name="setMonth" id="::Time::TZDate::setMonth">
51275         <webidl>    void setMonth(long month);</webidl>
51276         <descriptive>
51277             <brief>
51278  Sets the month (from 0-11).
51279             </brief>
51280            <description>
51281             <p>
51282 If it tries to set the month bigger than 11 or smaller than 0, it will be calculated automatically.
51283 For example, if month is 12, it will set 0 and add to a year.
51284             </p>
51285            </description>
51286             <version>
51287  1.0
51288             </version>
51289         </descriptive>
51290         <Type type="void"/>
51291         <ArgumentList>
51292           <Argument name="month">
51293             <descriptive>
51294                 <description><p>
51295  Month to set.
51296                 </p></description>
51297             </descriptive>
51298             <Type type="long"/>
51299           </Argument>
51300         </ArgumentList>
51301       </Operation>
51302       <Operation name="getSeconds" id="::Time::TZDate::getSeconds">
51303         <webidl>    long getSeconds();</webidl>
51304         <descriptive>
51305             <brief>
51306  Returns the seconds (from 0-59).
51307             </brief>
51308             <version>
51309  1.0
51310             </version>
51311         </descriptive>
51312         <Type type="long">
51313           <descriptive>
51314               <description><p>
51315  long The seconds.
51316               </p></description>
51317           </descriptive>
51318         </Type>
51319         <ArgumentList/>
51320       </Operation>
51321       <Operation name="setSeconds" id="::Time::TZDate::setSeconds">
51322         <webidl>    void setSeconds(long seconds);</webidl>
51323         <descriptive>
51324             <brief>
51325  Sets the seconds (from 0-59).
51326             </brief>
51327            <description>
51328             <p>
51329 If it tries to set the second bigger than 59 or smaller than 0, it will be calculated automatically.
51330 For example, if seconds is 60, it will set 0 and add to a minute.
51331             </p>
51332            </description>
51333             <version>
51334  1.0
51335             </version>
51336         </descriptive>
51337         <Type type="void"/>
51338         <ArgumentList>
51339           <Argument name="seconds">
51340             <descriptive>
51341                 <description><p>
51342  Seconds to set.
51343                 </p></description>
51344             </descriptive>
51345             <Type type="long"/>
51346           </Argument>
51347         </ArgumentList>
51348       </Operation>
51349       <Operation name="getUTCDate" id="::Time::TZDate::getUTCDate">
51350         <webidl>    long getUTCDate();</webidl>
51351         <descriptive>
51352             <brief>
51353  Returns the day of the month, according to universal time (from 1-31).
51354             </brief>
51355             <version>
51356  1.0
51357             </version>
51358         </descriptive>
51359         <Type type="long">
51360           <descriptive>
51361               <description><p>
51362  long The day of the month, according to universal time.
51363               </p></description>
51364           </descriptive>
51365         </Type>
51366         <ArgumentList/>
51367       </Operation>
51368       <Operation name="setUTCDate" id="::Time::TZDate::setUTCDate">
51369         <webidl>    void setUTCDate(long date);</webidl>
51370         <descriptive>
51371             <brief>
51372  Sets the day of the month, according to universal time (from 1-31).
51373             </brief>
51374            <description>
51375             <p>
51376 If it tries to set the day bigger than the last day of the month or smaller than 1, it will be calculated automatically.
51377 For example, if TZDate's month is May and date is 32, it will be June 1.
51378             </p>
51379            </description>
51380             <version>
51381  1.0
51382             </version>
51383         </descriptive>
51384         <Type type="void"/>
51385         <ArgumentList>
51386           <Argument name="date">
51387             <descriptive>
51388                 <description><p>
51389  Date to set.
51390                 </p></description>
51391             </descriptive>
51392             <Type type="long"/>
51393           </Argument>
51394         </ArgumentList>
51395       </Operation>
51396       <Operation name="getUTCDay" id="::Time::TZDate::getUTCDay">
51397         <webidl>    long getUTCDay();</webidl>
51398         <descriptive>
51399             <brief>
51400  Returns the day of the week, according to universal time (from 0-6).
51401             </brief>
51402             <version>
51403  1.0
51404             </version>
51405         </descriptive>
51406         <Type type="long">
51407           <descriptive>
51408               <description><p>
51409  long The day of the week, according to universal time.
51410               </p></description>
51411           </descriptive>
51412         </Type>
51413         <ArgumentList/>
51414       </Operation>
51415       <Operation name="getUTCFullYear" id="::Time::TZDate::getUTCFullYear">
51416         <webidl>    long getUTCFullYear();</webidl>
51417         <descriptive>
51418             <brief>
51419  Returns the year, according to universal time.
51420             </brief>
51421            <description>
51422             <p>
51423 Positive values indicate AD(Anno Domini) years. 0 and negative values indicate BC(Before Christ) years.
51424 For example, 1 = AD 1, 0 = BC 1, -1 = BC 2.
51425             </p>
51426            </description>
51427             <version>
51428  1.0
51429             </version>
51430         </descriptive>
51431         <Type type="long">
51432           <descriptive>
51433               <description><p>
51434  long The year, according to universal time.
51435               </p></description>
51436           </descriptive>
51437         </Type>
51438         <ArgumentList/>
51439       </Operation>
51440       <Operation name="setUTCFullYear" id="::Time::TZDate::setUTCFullYear">
51441         <webidl>    void setUTCFullYear(long year);</webidl>
51442         <descriptive>
51443             <brief>
51444  Sets the year, according to universal time.
51445             </brief>
51446             <version>
51447  1.0
51448             </version>
51449         </descriptive>
51450         <Type type="void"/>
51451         <ArgumentList>
51452           <Argument name="year">
51453             <descriptive>
51454                 <description><p>
51455  Year to set.
51456                 </p></description>
51457             </descriptive>
51458             <Type type="long"/>
51459           </Argument>
51460         </ArgumentList>
51461       </Operation>
51462       <Operation name="getUTCHours" id="::Time::TZDate::getUTCHours">
51463         <webidl>    long getUTCHours();</webidl>
51464         <descriptive>
51465             <brief>
51466  Returns the hour, according to universal time (0-23).
51467             </brief>
51468             <version>
51469  1.0
51470             </version>
51471         </descriptive>
51472         <Type type="long">
51473           <descriptive>
51474               <description><p>
51475  long The hour, according to universal time.
51476               </p></description>
51477           </descriptive>
51478         </Type>
51479         <ArgumentList/>
51480       </Operation>
51481       <Operation name="setUTCHours" id="::Time::TZDate::setUTCHours">
51482         <webidl>    void setUTCHours(long hours);</webidl>
51483         <descriptive>
51484             <brief>
51485  Sets the hour, according to universal time (0-23).
51486             </brief>
51487            <description>
51488             <p>
51489 If it tries to set the hour bigger than 23 or smaller than 0, it will be calculated automatically.
51490 For example, if hours is 24, it will set 0 and add to a date.
51491             </p>
51492            </description>
51493             <version>
51494  1.0
51495             </version>
51496         </descriptive>
51497         <Type type="void"/>
51498         <ArgumentList>
51499           <Argument name="hours">
51500             <descriptive>
51501                 <description><p>
51502  Hours to set.
51503                 </p></description>
51504             </descriptive>
51505             <Type type="long"/>
51506           </Argument>
51507         </ArgumentList>
51508       </Operation>
51509       <Operation name="getUTCMilliseconds" id="::Time::TZDate::getUTCMilliseconds">
51510         <webidl>    long getUTCMilliseconds();</webidl>
51511         <descriptive>
51512             <brief>
51513  Returns the milliseconds, according to universal time (from 0-999).
51514             </brief>
51515             <version>
51516  1.0
51517             </version>
51518         </descriptive>
51519         <Type type="long">
51520           <descriptive>
51521               <description><p>
51522  long The milliseconds, according to universal time.
51523               </p></description>
51524           </descriptive>
51525         </Type>
51526         <ArgumentList/>
51527       </Operation>
51528       <Operation name="setUTCMilliseconds" id="::Time::TZDate::setUTCMilliseconds">
51529         <webidl>    void setUTCMilliseconds(long ms);</webidl>
51530         <descriptive>
51531             <brief>
51532  Sets the milliseconds, according to universal time (from 0-999).
51533             </brief>
51534            <description>
51535             <p>
51536 If it tries to set the millisecond bigger than 999 or smaller than 0, it will be calculated automatically.
51537 For example, if ms is 1000, it will set 0 and add to a second.
51538             </p>
51539            </description>
51540             <version>
51541  1.0
51542             </version>
51543         </descriptive>
51544         <Type type="void"/>
51545         <ArgumentList>
51546           <Argument name="ms">
51547             <descriptive>
51548                 <description><p>
51549  Milliseconds to set.
51550                 </p></description>
51551             </descriptive>
51552             <Type type="long"/>
51553           </Argument>
51554         </ArgumentList>
51555       </Operation>
51556       <Operation name="getUTCMinutes" id="::Time::TZDate::getUTCMinutes">
51557         <webidl>    long getUTCMinutes();</webidl>
51558         <descriptive>
51559             <brief>
51560  Returns the minutes, according to universal time (from 0-59).
51561             </brief>
51562             <version>
51563  1.0
51564             </version>
51565         </descriptive>
51566         <Type type="long">
51567           <descriptive>
51568               <description><p>
51569  long The minutes, according to universal time.
51570               </p></description>
51571           </descriptive>
51572         </Type>
51573         <ArgumentList/>
51574       </Operation>
51575       <Operation name="setUTCMinutes" id="::Time::TZDate::setUTCMinutes">
51576         <webidl>    void setUTCMinutes(long minutes);</webidl>
51577         <descriptive>
51578             <brief>
51579  Sets the minutes, according to universal time (from 0-59).
51580             </brief>
51581            <description>
51582             <p>
51583 If it tries to set the minute bigger than 59 or smaller than 0, it will be calculated automatically.
51584 For example, if minutes is 60, it will set 0 and add to an hour.
51585             </p>
51586            </description>
51587             <version>
51588  1.0
51589             </version>
51590         </descriptive>
51591         <Type type="void"/>
51592         <ArgumentList>
51593           <Argument name="minutes">
51594             <descriptive>
51595                 <description><p>
51596  Minutes to set.
51597                 </p></description>
51598             </descriptive>
51599             <Type type="long"/>
51600           </Argument>
51601         </ArgumentList>
51602       </Operation>
51603       <Operation name="getUTCMonth" id="::Time::TZDate::getUTCMonth">
51604         <webidl>    long getUTCMonth();</webidl>
51605         <descriptive>
51606             <brief>
51607  Returns the month, according to universal time (from 0-11).
51608             </brief>
51609             <version>
51610  1.0
51611             </version>
51612         </descriptive>
51613         <Type type="long">
51614           <descriptive>
51615               <description><p>
51616  long The month, according to universal time.
51617               </p></description>
51618           </descriptive>
51619         </Type>
51620         <ArgumentList/>
51621       </Operation>
51622       <Operation name="setUTCMonth" id="::Time::TZDate::setUTCMonth">
51623         <webidl>    void setUTCMonth(long month);</webidl>
51624         <descriptive>
51625             <brief>
51626  Sets the month, according to universal time (from 0-11).
51627             </brief>
51628            <description>
51629             <p>
51630 If it tries to set the month bigger than 11 or smaller than 0, it will be calculated automatically.
51631 For example, if month is 12, it will set 0 and add to a year.
51632             </p>
51633            </description>
51634             <version>
51635  1.0
51636             </version>
51637         </descriptive>
51638         <Type type="void"/>
51639         <ArgumentList>
51640           <Argument name="month">
51641             <descriptive>
51642                 <description><p>
51643  Month to set.
51644                 </p></description>
51645             </descriptive>
51646             <Type type="long"/>
51647           </Argument>
51648         </ArgumentList>
51649       </Operation>
51650       <Operation name="getUTCSeconds" id="::Time::TZDate::getUTCSeconds">
51651         <webidl>    long getUTCSeconds();</webidl>
51652         <descriptive>
51653             <brief>
51654  Returns the seconds, according to universal time (from 0-59).
51655             </brief>
51656             <version>
51657  1.0
51658             </version>
51659         </descriptive>
51660         <Type type="long">
51661           <descriptive>
51662               <description><p>
51663  long The seconds, according to universal time.
51664               </p></description>
51665           </descriptive>
51666         </Type>
51667         <ArgumentList/>
51668       </Operation>
51669       <Operation name="setUTCSeconds" id="::Time::TZDate::setUTCSeconds">
51670         <webidl>    void setUTCSeconds(long seconds);</webidl>
51671         <descriptive>
51672             <brief>
51673  Sets the seconds, according to universal time (from 0-59).
51674             </brief>
51675            <description>
51676             <p>
51677 If it tries to set the second bigger than 59 or smaller than 0, it will be calculated automatically.
51678 For example, if seconds is 60, it will set 0 and add to a minute.
51679             </p>
51680            </description>
51681             <version>
51682  1.0
51683             </version>
51684         </descriptive>
51685         <Type type="void"/>
51686         <ArgumentList>
51687           <Argument name="seconds">
51688             <descriptive>
51689                 <description><p>
51690  Seconds to set.
51691                 </p></description>
51692             </descriptive>
51693             <Type type="long"/>
51694           </Argument>
51695         </ArgumentList>
51696       </Operation>
51697       <Operation name="getTimezone" id="::Time::TZDate::getTimezone">
51698         <webidl>    DOMString getTimezone();</webidl>
51699         <descriptive>
51700             <brief>
51701  Returns timezone identifier.
51702             </brief>
51703            <description>
51704             <p>
51705 Zero or more slashes separate different components, with the most general
51706 descriptor first and the most specific one last. For example,
51707 'Europe/Berlin', 'America/Argentina/Buenos_Aires'.
51708             </p>
51709             <p>
51710 This attribute uniquely identifies the timezone.
51711             </p>
51712            </description>
51713             <version>
51714  1.0
51715             </version>
51716         </descriptive>
51717         <Type type="DOMString">
51718           <descriptive>
51719               <description><p>
51720  DOMString String timezone identifier. If TZDate is invalid, it will return 'Invalid Date'.
51721               </p></description>
51722           </descriptive>
51723         </Type>
51724         <ArgumentList/>
51725       </Operation>
51726       <Operation name="toTimezone" id="::Time::TZDate::toTimezone">
51727         <webidl>    <ref>TZDate</ref> toTimezone(DOMString tzid) raises(<ref>WebAPIException</ref>);</webidl>
51728         <descriptive>
51729             <brief>
51730  Returns a copy of the TZDate converted to a given time zone.
51731             </brief>
51732             <version>
51733  1.0
51734             </version>
51735         </descriptive>
51736         <Type name="TZDate">
51737           <descriptive>
51738               <description><p>
51739  TZDate New TZDate in given Timezone. 
51740               </p></description>
51741           </descriptive>
51742         </Type>
51743         <ArgumentList>
51744           <Argument name="tzid">
51745             <descriptive>
51746                 <description><p>
51747  Timezone identifier to set.
51748                 </p></description>
51749             </descriptive>
51750             <Type type="DOMString"/>
51751           </Argument>
51752         </ArgumentList>
51753         <Raises>
51754           <RaiseException name="WebAPIException">
51755             <descriptive>
51756                 <description><p>
51757  with error type TypeMismatchError, if the input parameter
51758 is not compatible with the expected type for that parameter.
51759                 </p></description>
51760                 <description><p>
51761  with error type InvalidValuesError, if the provided TZID
51762 is not recognized as a valid timezone identifier.
51763                 </p></description>
51764                 <description><p>
51765  with error type UnknownError, if the call failed due to an unknown error.
51766                 </p></description>
51767             </descriptive>
51768           </RaiseException>
51769         </Raises>
51770       </Operation>
51771       <Operation name="toLocalTimezone" id="::Time::TZDate::toLocalTimezone">
51772         <webidl>    <ref>TZDate</ref> toLocalTimezone() raises(<ref>WebAPIException</ref>);</webidl>
51773         <descriptive>
51774             <brief>
51775  Returns a copy of the TZDate converted to the local time zone.
51776             </brief>
51777             <version>
51778  1.0
51779             </version>
51780         </descriptive>
51781         <Type name="TZDate">
51782           <descriptive>
51783               <description><p>
51784  TZDate The new TZDate in local Timezone. 
51785               </p></description>
51786           </descriptive>
51787         </Type>
51788         <ArgumentList/>
51789         <Raises>
51790           <RaiseException name="WebAPIException">
51791             <descriptive>
51792                 <description><p>
51793  with error type UnknownError, if the call failed due to an unknown error.
51794                 </p></description>
51795             </descriptive>
51796           </RaiseException>
51797         </Raises>
51798       </Operation>
51799       <Operation name="toUTC" id="::Time::TZDate::toUTC">
51800         <webidl>    <ref>TZDate</ref> toUTC() raises(<ref>WebAPIException</ref>);</webidl>
51801         <descriptive>
51802             <brief>
51803  Returns a copy of the TZDate converted to Coordinated Universal Time (UTC).
51804             </brief>
51805             <version>
51806  1.0
51807             </version>
51808         </descriptive>
51809         <Type name="TZDate">
51810           <descriptive>
51811               <description><p>
51812  TZDate Date/Time in UTC.
51813               </p></description>
51814           </descriptive>
51815         </Type>
51816         <ArgumentList/>
51817         <Raises>
51818           <RaiseException name="WebAPIException">
51819             <descriptive>
51820                 <description><p>
51821  with error type UnknownError, if the call failed due to an unknown error.
51822                 </p></description>
51823             </descriptive>
51824           </RaiseException>
51825         </Raises>
51826       </Operation>
51827       <Operation name="difference" id="::Time::TZDate::difference">
51828         <webidl>    <ref>TimeDuration</ref> difference(<ref>TZDate</ref> other) raises(<ref>WebAPIException</ref>);</webidl>
51829         <descriptive>
51830             <brief>
51831  Calculates the difference with another TZDate object.
51832             </brief>
51833            <description>
51834             <p>
51835 Calculates the difference in time between <em>this</em> and other.
51836 This comparison method takes timezones into consideration for the comparison.
51837             </p>
51838             <p>
51839 The TimeDuration that is returned is effectively <em>this</em> - other.
51840 The return value is a duration in milliseconds both TZDate objects have a time component, in days, otherwise.
51841 The result value will be:
51842             </p>
51843             <ul>
51844               <li>
51845 Negative, if other is in the future              </li>
51846               <li>
51847 0 if the two date / times are equal              </li>
51848               <li>
51849 Positive, if other is in the past              </li>
51850             </ul>
51851            </description>
51852             <version>
51853  1.0
51854             </version>
51855         </descriptive>
51856         <Type name="TimeDuration">
51857           <descriptive>
51858               <description><p>
51859  TimeDuration Duration in milliseconds between the two date / time objects
51860 (or in days for comparison between dates with no time component).
51861               </p></description>
51862           </descriptive>
51863         </Type>
51864         <ArgumentList>
51865           <Argument name="other">
51866             <descriptive>
51867                 <description><p>
51868  Other Date/Time to compare to.
51869                 </p></description>
51870             </descriptive>
51871             <Type name="TZDate"/>
51872           </Argument>
51873         </ArgumentList>
51874         <Raises>
51875           <RaiseException name="WebAPIException">
51876             <descriptive>
51877                 <description><p>
51878  with error type TypeMismatchError, if the input parameter
51879 is not compatible with the expected type for that parameter.
51880                 </p></description>
51881                 <description><p>
51882  with error type UnknownError, if the call failed due to an unknown error.
51883                 </p></description>
51884             </descriptive>
51885           </RaiseException>
51886         </Raises>
51887       </Operation>
51888       <Operation name="equalsTo" id="::Time::TZDate::equalsTo">
51889         <webidl>    boolean equalsTo(<ref>TZDate</ref> other) raises(<ref>WebAPIException</ref>);</webidl>
51890         <descriptive>
51891             <brief>
51892  Checks if the TZDate is equal to another.
51893             </brief>
51894            <description>
51895             <p>
51896 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.
51897             </p>
51898            </description>
51899             <version>
51900  1.0
51901             </version>
51902         </descriptive>
51903         <Type type="boolean">
51904           <descriptive>
51905               <description><p>
51906  boolean <em>true</em> if the 2 date/times are the same.
51907               </p></description>
51908           </descriptive>
51909         </Type>
51910         <ArgumentList>
51911           <Argument name="other">
51912             <descriptive>
51913                 <description><p>
51914  Other Date/Time to compare to.
51915                 </p></description>
51916             </descriptive>
51917             <Type name="TZDate"/>
51918           </Argument>
51919         </ArgumentList>
51920         <Raises>
51921           <RaiseException name="WebAPIException">
51922             <descriptive>
51923                 <description><p>
51924  with error type TypeMismatchError, if the input parameter
51925 is not compatible with the expected type for that parameter.
51926                 </p></description>
51927                 <description><p>
51928  with error type UnknownError, if the call failed due to an unknown error.
51929                 </p></description>
51930             </descriptive>
51931           </RaiseException>
51932         </Raises>
51933       </Operation>
51934       <Operation name="earlierThan" id="::Time::TZDate::earlierThan">
51935         <webidl>    boolean earlierThan(<ref>TZDate</ref> other) raises(<ref>WebAPIException</ref>);</webidl>
51936         <descriptive>
51937             <brief>
51938  Checks if the TZDate is earlier than another.
51939             </brief>
51940            <description>
51941             <p>
51942 This method takes the timezones into consideration.
51943             </p>
51944            </description>
51945             <version>
51946  1.0
51947             </version>
51948         </descriptive>
51949         <Type type="boolean">
51950           <descriptive>
51951               <description><p>
51952  boolean <em>true</em>, if the Date/Time is earlier than the one passed in argument.
51953               </p></description>
51954           </descriptive>
51955         </Type>
51956         <ArgumentList>
51957           <Argument name="other">
51958             <descriptive>
51959                 <description><p>
51960  Other Date/Time to compare to.
51961                 </p></description>
51962             </descriptive>
51963             <Type name="TZDate"/>
51964           </Argument>
51965         </ArgumentList>
51966         <Raises>
51967           <RaiseException name="WebAPIException">
51968             <descriptive>
51969                 <description><p>
51970  with error type TypeMismatchError, if the input parameter
51971 is not compatible with the expected type for that parameter.
51972                 </p></description>
51973                 <description><p>
51974  with error type UnknownError, if the call failed due to an unknown error.
51975                 </p></description>
51976             </descriptive>
51977           </RaiseException>
51978         </Raises>
51979       </Operation>
51980       <Operation name="laterThan" id="::Time::TZDate::laterThan">
51981         <webidl>    boolean laterThan(<ref>TZDate</ref> other) raises(<ref>WebAPIException</ref>);</webidl>
51982         <descriptive>
51983             <brief>
51984  Checks if the TZDate is later than another.
51985             </brief>
51986            <description>
51987             <p>
51988 This method takes the timezones into consideration.
51989             </p>
51990            </description>
51991             <version>
51992  1.0
51993             </version>
51994         </descriptive>
51995         <Type type="boolean">
51996           <descriptive>
51997               <description><p>
51998  boolean <em>true</em>, if the Date/Time is later than the one passed in argument.
51999               </p></description>
52000           </descriptive>
52001         </Type>
52002         <ArgumentList>
52003           <Argument name="other">
52004             <descriptive>
52005                 <description><p>
52006  Other Date/Time to compare to.
52007                 </p></description>
52008             </descriptive>
52009             <Type name="TZDate"/>
52010           </Argument>
52011         </ArgumentList>
52012         <Raises>
52013           <RaiseException name="WebAPIException">
52014             <descriptive>
52015                 <description><p>
52016  with error type TypeMismatchError, if the input parameter
52017 is not compatible with the expected type for that parameter.
52018                 </p></description>
52019                 <description><p>
52020  with error type UnknownError, if the call failed due to an unknown error.
52021                 </p></description>
52022             </descriptive>
52023           </RaiseException>
52024         </Raises>
52025       </Operation>
52026       <Operation name="addDuration" id="::Time::TZDate::addDuration">
52027         <webidl>    <ref>TZDate</ref> addDuration(<ref>TimeDuration</ref> duration) raises(<ref>WebAPIException</ref>);</webidl>
52028         <descriptive>
52029             <brief>
52030  Returns a new date by adding a duration to the current TZDate object.
52031             </brief>
52032            <description>
52033             <p>
52034 If the length of duration is negative, the new date / time will be
52035 earlier than it used to.
52036             </p>
52037             <p>
52038 Note that calling this method does not alter the current object.
52039             </p>
52040            </description>
52041             <version>
52042  1.0
52043             </version>
52044             <Code> var now = tizen.time.getCurrentDateTime();
52045  var in_one_week = now.addDuration(new tizen.TimeDuration(7, &quot;DAYS&quot;));
52046  </Code>
52047         </descriptive>
52048         <Type name="TZDate">
52049           <descriptive>
52050               <description><p>
52051  TZDate The new TZDate by adding a duration.
52052               </p></description>
52053           </descriptive>
52054         </Type>
52055         <ArgumentList>
52056           <Argument name="duration">
52057             <descriptive>
52058                 <description><p>
52059  TimeDuration to add.  
52060                 </p></description>
52061             </descriptive>
52062             <Type name="TimeDuration"/>
52063           </Argument>
52064         </ArgumentList>
52065         <Raises>
52066           <RaiseException name="WebAPIException">
52067             <descriptive>
52068                 <description><p>
52069  with error type TypeMismatchError, if the input parameter
52070 is not compatible with the expected type for that parameter. 
52071                 </p></description>
52072                 <description><p>
52073  with error type UnknownError, if the call failed due to an unknown error.
52074                 </p></description>
52075             </descriptive>
52076           </RaiseException>
52077         </Raises>
52078       </Operation>
52079       <Operation name="toLocaleDateString" id="::Time::TZDate::toLocaleDateString">
52080         <webidl>    DOMString toLocaleDateString();</webidl>
52081         <descriptive>
52082             <brief>
52083  Returns the date portion of a TZDate object as a string, using locale conventions.
52084             </brief>
52085             <version>
52086  1.0
52087             </version>
52088         </descriptive>
52089         <Type type="DOMString">
52090           <descriptive>
52091               <description><p>
52092  DOMString Date portion of the TZDate object as a string, using locale conventions. If TZDate is invalid, it will return 'Invalid Date'.
52093               </p></description>
52094           </descriptive>
52095         </Type>
52096         <ArgumentList/>
52097       </Operation>
52098       <Operation name="toLocaleTimeString" id="::Time::TZDate::toLocaleTimeString">
52099         <webidl>    DOMString toLocaleTimeString();</webidl>
52100         <descriptive>
52101             <brief>
52102  Returns the time portion of a TZDate object as a string, using locale conventions.
52103             </brief>
52104             <version>
52105  1.0
52106             </version>
52107         </descriptive>
52108         <Type type="DOMString">
52109           <descriptive>
52110               <description><p>
52111  DOMString Time portion of the TZDate object as a string, using locale conventions. If TZDate is invalid, it will return 'Invalid Date'.
52112               </p></description>
52113           </descriptive>
52114         </Type>
52115         <ArgumentList/>
52116       </Operation>
52117       <Operation name="toLocaleString" id="::Time::TZDate::toLocaleString">
52118         <webidl>    DOMString toLocaleString();</webidl>
52119         <descriptive>
52120             <brief>
52121  Converts a TZDate object to a string, using locale conventions.
52122             </brief>
52123             <version>
52124  1.0
52125             </version>
52126         </descriptive>
52127         <Type type="DOMString">
52128           <descriptive>
52129               <description><p>
52130  DOMString String representation of the TZDate object, using locale conventions. If TZDate is invalid, it will return 'Invalid Date'.
52131               </p></description>
52132           </descriptive>
52133         </Type>
52134         <ArgumentList/>
52135       </Operation>
52136       <Operation name="toDateString" id="::Time::TZDate::toDateString">
52137         <webidl>    DOMString toDateString();</webidl>
52138         <descriptive>
52139             <brief>
52140  Returns the date portion of a TZDate object as a string.
52141             </brief>
52142             <version>
52143  1.0
52144             </version>
52145         </descriptive>
52146         <Type type="DOMString">
52147           <descriptive>
52148               <description><p>
52149  DOMString Date portion of the TZDate object as a string. If TZDate is invalid, it will return 'Invalid Date'.
52150               </p></description>
52151           </descriptive>
52152         </Type>
52153         <ArgumentList/>
52154       </Operation>
52155       <Operation name="toTimeString" id="::Time::TZDate::toTimeString">
52156         <webidl>    DOMString toTimeString();</webidl>
52157         <descriptive>
52158             <brief>
52159  Returns the time portion of a TZDate object as a string.
52160             </brief>
52161             <version>
52162  1.0
52163             </version>
52164         </descriptive>
52165         <Type type="DOMString">
52166           <descriptive>
52167               <description><p>
52168  DOMString Time portion of the TZDate object as a string. If TZDate is invalid, it will return 'Invalid Date'.
52169               </p></description>
52170           </descriptive>
52171         </Type>
52172         <ArgumentList/>
52173       </Operation>
52174       <Operation name="toString" id="::Time::TZDate::toString">
52175         <webidl>    DOMString toString();</webidl>
52176         <descriptive>
52177             <brief>
52178  Converts a TZDate object to a string.
52179             </brief>
52180             <version>
52181  1.0
52182             </version>
52183         </descriptive>
52184         <Type type="DOMString">
52185           <descriptive>
52186               <description><p>
52187  DOMString String representation of the TZDate object. If TZDate is invalid, it will return 'Invalid Date'.
52188               </p></description>
52189           </descriptive>
52190         </Type>
52191         <ArgumentList/>
52192       </Operation>
52193       <Operation name="getTimezoneAbbreviation" id="::Time::TZDate::getTimezoneAbbreviation">
52194         <webidl>    DOMString getTimezoneAbbreviation() raises(<ref>WebAPIException</ref>);</webidl>
52195         <descriptive>
52196             <brief>
52197  Determines the time zone abbreviation to be used at a particular date in the time zone.
52198             </brief>
52199            <description>
52200             <p>
52201 For example, in Toronto this is currently &quot;EST&quot; during the winter months and &quot;EDT&quot; during the
52202 summer months when daylight savings time is in effect.
52203             </p>
52204            </description>
52205             <version>
52206  1.0
52207             </version>
52208             <deprecated>
52209  Some timezones return &quot;GMT[+-]hh:mm&quot;. It is inconsistent.
52210             </deprecated>
52211         </descriptive>
52212         <Type type="DOMString">
52213           <descriptive>
52214               <description><p>
52215  DOMString Abbreviation of the time zone (such as &quot;EST&quot;). If TZDate is invalid, it will return 'Invalid Date'.
52216               </p></description>
52217           </descriptive>
52218         </Type>
52219         <ArgumentList/>
52220         <Raises>
52221           <RaiseException name="WebAPIException">
52222             <descriptive>
52223                 <description><p>
52224  with error type UnknownError, if the call failed due to an unknown error.
52225                 </p></description>
52226             </descriptive>
52227           </RaiseException>
52228         </Raises>
52229       </Operation>
52230       <Operation name="secondsFromUTC" id="::Time::TZDate::secondsFromUTC">
52231         <webidl>    long secondsFromUTC() raises(<ref>WebAPIException</ref>);</webidl>
52232         <descriptive>
52233             <brief>
52234  Gets the number of seconds from Coordinated Universal Time (UTC) offset for the timezone.
52235             </brief>
52236            <description>
52237             <p>
52238 Returns the offset (in seconds) from UTC of the timezone, accounting for daylight
52239 savings if in effect in the timezone. For example, if time zone is GMT+8, it will return -32,400.
52240             </p>
52241            </description>
52242             <version>
52243  1.0
52244             </version>
52245             <Code> var offset = tizen.time.getCurrentDateTime().secondsFromUTC();
52246  var myDate = new Date();
52247  var exp_offset = myDate.getTimezoneOffset()*60;
52248  //offset is equals to exp_offset.
52249  </Code>
52250         </descriptive>
52251         <Type type="long">
52252           <descriptive>
52253               <description><p>
52254  long Offset from UTC in seconds.
52255               </p></description>
52256           </descriptive>
52257         </Type>
52258         <ArgumentList/>
52259         <Raises>
52260           <RaiseException name="WebAPIException">
52261             <descriptive>
52262                 <description><p>
52263  with error type UnknownError, if the call failed due to an unknown error.
52264                 </p></description>
52265             </descriptive>
52266           </RaiseException>
52267         </Raises>
52268       </Operation>
52269       <Operation name="isDST" id="::Time::TZDate::isDST">
52270         <webidl>    boolean isDST() raises(<ref>WebAPIException</ref>);</webidl>
52271         <descriptive>
52272             <brief>
52273  Indicates if Daylight Saving Time(DST) is active for this TZDate.
52274             </brief>
52275            <description>
52276             <p>
52277 Indicates if daylight savings are in effect for the time zone and instant
52278 identified by the TZDate object.
52279             </p>
52280            </description>
52281             <version>
52282  1.0
52283             </version>
52284         </descriptive>
52285         <Type type="boolean">
52286           <descriptive>
52287               <description><p>
52288  boolean Flag indicating if daylight saving are in effect.
52289               </p></description>
52290           </descriptive>
52291         </Type>
52292         <ArgumentList/>
52293         <Raises>
52294           <RaiseException name="WebAPIException">
52295             <descriptive>
52296                 <description><p>
52297  with error type UnknownError, if the call failed due to an unknown error.
52298                 </p></description>
52299             </descriptive>
52300           </RaiseException>
52301         </Raises>
52302       </Operation>
52303       <Operation name="getPreviousDSTTransition" id="::Time::TZDate::getPreviousDSTTransition">
52304         <webidl>    <ref>TZDate</ref>? getPreviousDSTTransition() raises(<ref>WebAPIException</ref>);</webidl>
52305         <descriptive>
52306             <brief>
52307  Returns the date of the previous daylight saving time transition for the timezone.
52308             </brief>
52309             <version>
52310  1.0
52311             </version>
52312         </descriptive>
52313         <Type name="TZDate" nullable="nullable">
52314           <descriptive>
52315               <description><p>
52316  TZDate The date of the previous daylight saving transition (before the instant identified by the TZDate).
52317               </p></description>
52318           </descriptive>
52319         </Type>
52320         <ArgumentList/>
52321         <Raises>
52322           <RaiseException name="WebAPIException">
52323             <descriptive>
52324                 <description><p>
52325  with error type UnknownError, if the call failed due to an unknown error.
52326                 </p></description>
52327             </descriptive>
52328           </RaiseException>
52329         </Raises>
52330       </Operation>
52331       <Operation name="getNextDSTTransition" id="::Time::TZDate::getNextDSTTransition">
52332         <webidl>    <ref>TZDate</ref>? getNextDSTTransition() raises(<ref>WebAPIException</ref>);</webidl>
52333         <descriptive>
52334             <brief>
52335  Returns the date of the next daylight saving time transition for the timezone.
52336             </brief>
52337             <version>
52338  1.0
52339             </version>
52340         </descriptive>
52341         <Type name="TZDate" nullable="nullable">
52342           <descriptive>
52343               <description><p>
52344  TZDate The date of the next daylight saving transition (after the instant identified by the TZDate).
52345               </p></description>
52346           </descriptive>
52347         </Type>
52348         <ArgumentList/>
52349         <Raises>
52350           <RaiseException name="WebAPIException">
52351             <descriptive>
52352                 <description><p>
52353  with error type UnknownError, if the call failed due to an unknown error.
52354                 </p></description>
52355             </descriptive>
52356           </RaiseException>
52357         </Raises>
52358       </Operation>
52359     </Interface>
52360     <Interface name="TimeDuration" id="::Time::TimeDuration">
52361       <webidl>  [Constructor(long long length, optional <ref>TimeDurationUnit</ref>? unit)]
52362   interface TimeDuration
52363   {   
52364     attribute long long length;
52365     
52366     attribute <ref>TimeDurationUnit</ref> unit;
52367     
52368     <ref>TimeDuration</ref> difference(<ref>TimeDuration</ref> other) raises(<ref>WebAPIException</ref>);
52369     
52370     boolean equalsTo(<ref>TimeDuration</ref> other) raises(<ref>WebAPIException</ref>);
52371     
52372     boolean lessThan(<ref>TimeDuration</ref> other) raises(<ref>WebAPIException</ref>);
52373     
52374     boolean greaterThan(<ref>TimeDuration</ref> other) raises(<ref>WebAPIException</ref>);
52375   };</webidl>
52376       <descriptive>
52377           <brief>
52378  The TimeDuration object that contains the length and its associated 
52379 time unit.
52380           </brief>
52381           <version>
52382  1.0
52383           </version>
52384           <Code> var now = tizen.time.getCurrentDateTime();
52385  var tomorrow = now.addDuration(new tizen.TimeDuration(1, &quot;DAYS&quot;)); // Becomes tomorrow, same time.
52386  </Code>
52387       </descriptive>
52388       <ExtendedAttributeList>
52389         <ExtendedAttribute name="Constructor">
52390           <webidl>Constructor(long long length, optional <ref>TimeDurationUnit</ref>? unit)</webidl>
52391           <ArgumentList>
52392             <Argument name="length">
52393               <Type type="long long"/>
52394             </Argument>
52395             <Argument optional="optional" name="unit">
52396               <Type name="TimeDurationUnit" nullable="nullable"/>
52397             </Argument>
52398           </ArgumentList>
52399         </ExtendedAttribute>
52400       </ExtendedAttributeList>
52401       <Attribute name="length" id="::Time::TimeDuration::length">
52402         <webidl>    attribute long long length;</webidl>
52403         <descriptive>
52404             <brief>
52405  Duration length.
52406             </brief>
52407            <description>
52408             <p>
52409 The unit of the duration length (milliseconds, seconds, minutes, hours, or days)
52410 is determined by the duration unit attribute.
52411             </p>
52412            </description>
52413             <version>
52414  1.0
52415             </version>
52416         </descriptive>
52417         <Type type="long long"/>
52418       </Attribute>
52419       <Attribute name="unit" id="::Time::TimeDuration::unit">
52420         <webidl>    attribute <ref>TimeDurationUnit</ref> unit;</webidl>
52421         <descriptive>
52422             <brief>
52423  Duration unit (milliseconds, seconds, minutes, hours, or days).
52424             </brief>
52425            <description>
52426             <p>
52427 The default value is &quot;MSECS&quot; (milliseconds unit).
52428             </p>
52429            </description>
52430             <version>
52431  1.0
52432             </version>
52433         </descriptive>
52434         <Type name="TimeDurationUnit"/>
52435       </Attribute>
52436       <Operation name="difference" id="::Time::TimeDuration::difference">
52437         <webidl>    <ref>TimeDuration</ref> difference(<ref>TimeDuration</ref> other) raises(<ref>WebAPIException</ref>);</webidl>
52438         <descriptive>
52439             <brief>
52440  Calculates the difference between two TimeDuration objects.
52441             </brief>
52442            <description>
52443             <p>
52444 Calculates the difference in time between <em>this</em> and <em>other</em>.
52445 The TimeDuration that is returned is effectively <em>first</em> - <em>other</em> (that is: positive if the first parameter is larger).
52446             </p>
52447             <p>
52448 The returned TimeDuration is the biggest possible unit without losing the precision.
52449             </p>
52450            </description>
52451             <version>
52452  1.0
52453             </version>
52454             <Code> // Compute event1.duration - event2.duration
52455  var diff = event1.duration.difference(event2.duration);
52456  if (diff.length > 0)
52457    console.log(&quot;event 1's duration is longer than event 2's&quot;);
52458  else if (diff.length == 0)
52459    console.log(&quot;event 1's duration is as long as event 2's&quot;);
52460  else
52461    console.log(&quot;event 1's duration is shorter than event 2's&quot;);
52462  </Code>
52463         </descriptive>
52464         <Type name="TimeDuration">
52465           <descriptive>
52466               <description><p>
52467  New TimeDuration object corresponding to the result of <em>this</em> - <em>other</em>.
52468               </p></description>
52469           </descriptive>
52470         </Type>
52471         <ArgumentList>
52472           <Argument name="other">
52473             <descriptive>
52474                 <description><p>
52475  Other TimeDuration object to compare to.
52476                 </p></description>
52477             </descriptive>
52478             <Type name="TimeDuration"/>
52479           </Argument>
52480         </ArgumentList>
52481         <Raises>
52482           <RaiseException name="WebAPIException">
52483             <descriptive>
52484                 <description><p>
52485  with error type TypeMismatchError, if the input parameter
52486 is not compatible with the expected type for that parameter.
52487                 </p></description>
52488                 <description><p>
52489  with error type UnknownError, if the call failed due to an unknown error.
52490                 </p></description>
52491             </descriptive>
52492           </RaiseException>
52493         </Raises>
52494       </Operation>
52495       <Operation name="equalsTo" id="::Time::TimeDuration::equalsTo">
52496         <webidl>    boolean equalsTo(<ref>TimeDuration</ref> other) raises(<ref>WebAPIException</ref>);</webidl>
52497         <descriptive>
52498             <brief>
52499  Checks if the TimeDuration is equal to another.
52500             </brief>
52501            <description>
52502             <p>
52503 This method takes the units into consideration and will return true
52504 if the two TimeDuration objects represent the same duration in different units.
52505             </p>
52506            </description>
52507             <version>
52508  1.0
52509             </version>
52510             <Code> var d1 = new tizen.TimeDuration(60, &quot;MINS&quot;); // 60 minutes
52511  var d2 = new tizen.TimeDuration(1, &quot;HOURS&quot;); // 1 hour
52512  var ret = d1.equalsTo(d2); // Returns true
52513  </Code>
52514         </descriptive>
52515         <Type type="boolean">
52516           <descriptive>
52517               <description><p>
52518  boolean <em>true</em> if the two TimeDuration object represent the same duration.
52519               </p></description>
52520           </descriptive>
52521         </Type>
52522         <ArgumentList>
52523           <Argument name="other">
52524             <descriptive>
52525                 <description><p>
52526  Other TimeDuration object to compare to.
52527                 </p></description>
52528             </descriptive>
52529             <Type name="TimeDuration"/>
52530           </Argument>
52531         </ArgumentList>
52532         <Raises>
52533           <RaiseException name="WebAPIException">
52534             <descriptive>
52535                 <description><p>
52536  with error type TypeMismatchError, if the input parameter
52537 is not compatible with the expected type for that parameter.
52538                 </p></description>
52539                 <description><p>
52540  with error type UnknownError, if the call failed due to an unknown error.
52541                 </p></description>
52542             </descriptive>
52543           </RaiseException>
52544         </Raises>
52545       </Operation>
52546       <Operation name="lessThan" id="::Time::TimeDuration::lessThan">
52547         <webidl>    boolean lessThan(<ref>TimeDuration</ref> other) raises(<ref>WebAPIException</ref>);</webidl>
52548         <descriptive>
52549             <brief>
52550  Checks if the TimeDuration is lower than another.
52551             </brief>
52552            <description>
52553             <p>
52554 This method takes the units into consideration when doing the comparison.
52555             </p>
52556            </description>
52557             <version>
52558  1.0
52559             </version>
52560             <Code> var d1 = new tizen.TimeDuration(1, &quot;HOURS&quot;); // 1 hour
52561  var d2 = new tizen.TimeDuration(120, &quot;MINS&quot;); // 120 minutes
52562  var ret = d1.lessThan(d2); // Returns true
52563  </Code>
52564         </descriptive>
52565         <Type type="boolean">
52566           <descriptive>
52567               <description><p>
52568  boolean <em>true</em> if the TimeDuration is less than <em>other</em>.
52569               </p></description>
52570           </descriptive>
52571         </Type>
52572         <ArgumentList>
52573           <Argument name="other">
52574             <descriptive>
52575                 <description><p>
52576  Other TimeDuration object to compare to.
52577                 </p></description>
52578             </descriptive>
52579             <Type name="TimeDuration"/>
52580           </Argument>
52581         </ArgumentList>
52582         <Raises>
52583           <RaiseException name="WebAPIException">
52584             <descriptive>
52585                 <description><p>
52586  with error type TypeMismatchError, if the input parameter is not compatible with the expected type for that parameter.
52587                 </p></description>
52588                 <description><p>
52589  with error type UnknownError, if the call failed due to an unknown error.
52590                 </p></description>
52591             </descriptive>
52592           </RaiseException>
52593         </Raises>
52594       </Operation>
52595       <Operation name="greaterThan" id="::Time::TimeDuration::greaterThan">
52596         <webidl>    boolean greaterThan(<ref>TimeDuration</ref> other) raises(<ref>WebAPIException</ref>);</webidl>
52597         <descriptive>
52598             <brief>
52599  Checks if the TimeDuration is greater than another.
52600             </brief>
52601            <description>
52602             <p>
52603 This method takes the units into consideration when doing the comparison.
52604             </p>
52605            </description>
52606             <version>
52607  1.0
52608             </version>
52609             <Code> var d1 = new tizen.TimeDuration(120, &quot;MINS&quot;); // 120 minutes
52610  var d2 = new tizen.TimeDuration(1, &quot;HOURS&quot;); // 1 hour
52611  var ret = d1.greaterThan(d2); // Returns true
52612  </Code>
52613         </descriptive>
52614         <Type type="boolean">
52615           <descriptive>
52616               <description><p>
52617  boolean <em>true</em> if the TimeDuration is greater than <em>other</em>.
52618               </p></description>
52619           </descriptive>
52620         </Type>
52621         <ArgumentList>
52622           <Argument name="other">
52623             <descriptive>
52624                 <description><p>
52625  Other TimeDuration object to compare to.
52626                 </p></description>
52627             </descriptive>
52628             <Type name="TimeDuration"/>
52629           </Argument>
52630         </ArgumentList>
52631         <Raises>
52632           <RaiseException name="WebAPIException">
52633             <descriptive>
52634                 <description><p>
52635  with error type TypeMismatchError, if the input parameter
52636 is not compatible with the expected type for that parameter.
52637                 </p></description>
52638                 <description><p>
52639  with error type UnknownError, if the call failed due to an unknown error.
52640                 </p></description>
52641             </descriptive>
52642           </RaiseException>
52643         </Raises>
52644       </Operation>
52645     </Interface>
52646   </Module>
52647   <Module name="Tizen" id="::Tizen">
52648     <webidl>module Tizen {
52649   enum FilterMatchFlag { &quot;EXACTLY&quot;, &quot;FULLSTRING&quot;, &quot;CONTAINS&quot;, &quot;STARTSWITH&quot;, &quot;ENDSWITH&quot;, &quot;EXISTS&quot; };
52650
52651   enum SortModeOrder { &quot;ASC&quot;, &quot;DESC&quot; };
52652
52653   enum CompositeFilterType { &quot;UNION&quot;, &quot;INTERSECTION&quot; };
52654
52655   [NoInterfaceObject] interface TizenObject {
52656     readonly attribute <ref>Tizen</ref> tizen;
52657   };
52658   <ref>Window</ref> implements <ref>TizenObject</ref>;
52659
52660   [NoInterfaceObject] interface Tizen {
52661   };
52662
52663   [NoInterfaceObject] interface AbstractFilter {
52664   };
52665
52666   [Constructor(DOMString attributeName, optional <ref>FilterMatchFlag</ref>? matchFlag, optional any matchValue)]
52667   interface AttributeFilter : <ref>AbstractFilter</ref> {
52668     attribute DOMString attributeName;
52669
52670     attribute <ref>FilterMatchFlag</ref> matchFlag setraises(<ref>WebAPIException</ref>);
52671
52672     attribute any matchValue;
52673   };
52674
52675   [Constructor(DOMString attributeName, optional any initialValue, optional any endValue)]
52676   interface AttributeRangeFilter : <ref>AbstractFilter</ref> {
52677     attribute DOMString attributeName;
52678
52679     attribute any initialValue;
52680
52681     attribute any endValue;
52682   };
52683
52684   [Constructor(<ref>CompositeFilterType</ref> type, optional <ref>AbstractFilter</ref>[]? filters)]
52685   interface CompositeFilter : <ref>AbstractFilter</ref> {
52686
52687     attribute <ref>CompositeFilterType</ref> type;
52688
52689     attribute <ref>AbstractFilter</ref>[] filters;
52690   };
52691
52692   [Constructor(DOMString attributeName, optional <ref>SortModeOrder</ref>? order)]
52693   interface SortMode {
52694     attribute DOMString attributeName;
52695
52696     attribute <ref>SortModeOrder</ref> order setraises(<ref>WebAPIException</ref>);
52697   };
52698
52699   [Constructor(double latitude, double longitude)]
52700   interface SimpleCoordinates {
52701     attribute double latitude setraises(<ref>WebAPIException</ref>);
52702
52703     attribute double longitude setraises(<ref>WebAPIException</ref>);
52704   };
52705
52706   [NoInterfaceObject]
52707   interface WebAPIException {
52708     readonly attribute unsigned short code;
52709
52710     readonly attribute DOMString name;
52711
52712     readonly attribute DOMString message;
52713
52714     const unsigned short INDEX_SIZE_ERR = 1;
52715     const unsigned short DOMSTRING_SIZE_ERR = 2; 
52716     const unsigned short HIERARCHY_REQUEST_ERR = 3;
52717     const unsigned short WRONG_DOCUMENT_ERR = 4;
52718     const unsigned short INVALID_CHARACTER_ERR = 5;
52719     const unsigned short NO_DATA_ALLOWED_ERR = 6; 
52720     const unsigned short NO_MODIFICATION_ALLOWED_ERR = 7;
52721     const unsigned short NOT_FOUND_ERR = 8;
52722     const unsigned short NOT_SUPPORTED_ERR = 9;
52723     const unsigned short INUSE_ATTRIBUTE_ERR = 10; 
52724     const unsigned short INVALID_STATE_ERR = 11;
52725     const unsigned short SYNTAX_ERR = 12;
52726     const unsigned short INVALID_MODIFICATION_ERR = 13;
52727     const unsigned short NAMESPACE_ERR = 14;
52728     const unsigned short INVALID_ACCESS_ERR = 15;
52729     const unsigned short VALIDATION_ERR = 16; 
52730     const unsigned short TYPE_MISMATCH_ERR = 17;
52731     const unsigned short SECURITY_ERR = 18;
52732     const unsigned short NETWORK_ERR = 19;
52733     const unsigned short ABORT_ERR = 20;
52734     const unsigned short URL_MISMATCH_ERR = 21;
52735     const unsigned short QUOTA_EXCEEDED_ERR = 22;
52736     const unsigned short TIMEOUT_ERR = 23;
52737     const unsigned short INVALID_NODE_TYPE_ERR = 24;
52738     const unsigned short DATA_CLONE_ERR = 25;
52739   };
52740
52741   [NoInterfaceObject]
52742   interface WebAPIError {
52743     readonly attribute unsigned short code;
52744
52745     readonly attribute DOMString name;
52746
52747     readonly attribute DOMString message;
52748   };
52749
52750   [Callback=FunctionOnly, NoInterfaceObject]
52751   interface SuccessCallback {
52752     void onsuccess ();
52753   };
52754
52755   [Callback=FunctionOnly, NoInterfaceObject]
52756   interface ErrorCallback {
52757
52758     void onerror (<ref>WebAPIError</ref> error);
52759   };
52760 };</webidl>
52761     <descriptive>
52762         <brief>
52763  This API provides common Tizen functionality.
52764         </brief>
52765        <description>
52766         <p>
52767 The API provides the basic definitions that are used in the Tizen Web Device API.
52768 These include generic callbacks that are invoked when the operations succeed or fail,
52769 WebAPIError and WebAPIException that gives information of the platform's error and
52770 filters interfaces that are used to make query for searching.
52771         </p>
52772         <p>
52773 Additionally, this API specifies the location in the ECMAScript hierarchy in which
52774 the Tizen Web Device API is instantiated (<em>window.tizen</em>).
52775         </p>
52776         <p>
52777 For more information on the Tizen features, see <a href="../../org.tizen.web.appprogramming/html/guide/tizen_guide/tizen.htm">Tizen Guide</a>.  
52778         </p>
52779        </description>
52780         <version>
52781  1.0
52782         </version>
52783     </descriptive>
52784     <Enum name="FilterMatchFlag" id="::Tizen::FilterMatchFlag">
52785       <webidl>  enum FilterMatchFlag { &quot;EXACTLY&quot;, &quot;FULLSTRING&quot;, &quot;CONTAINS&quot;, &quot;STARTSWITH&quot;, &quot;ENDSWITH&quot;, &quot;EXISTS&quot; };</webidl>
52786       <descriptive>
52787           <brief>
52788  Filter match flag.
52789           </brief>
52790          <description>
52791           <p>
52792 These values are supported:
52793           </p>
52794           <ul>
52795             <li>
52796 EXACTLY - Indicates that an attribute value should match exactly with the specified default value. 
52797 For strings, this type of comparison is case-sensitive.            </li>
52798             <li>
52799 FULLSTRING - Indicates String-based comparison and that the attribute value should match the whole string (case insensitive).            </li>
52800             <li>
52801 CONTAINS - Indicates that an attribute value should contain the specified string. This type of comparison works only on strings and is case insensitive.            </li>
52802             <li>
52803 STARTSWITH - Indicates that an attribute value should start with the specified string. 
52804 This type of comparison works only on strings and is case insensitive.            </li>
52805             <li>
52806 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>
52807             <li>
52808 EXISTS - Indicates that a filter comparison should match if the specified attribute exists.            </li>
52809           </ul>
52810          </description>
52811           <version>
52812  1.0
52813           </version>
52814       </descriptive>
52815       <EnumValue stringvalue="EXACTLY">
52816         <webidl> &quot;EXACTLY</webidl>
52817       </EnumValue>
52818       <EnumValue stringvalue="FULLSTRING">
52819         <webidl> &quot;FULLSTRING</webidl>
52820       </EnumValue>
52821       <EnumValue stringvalue="CONTAINS">
52822         <webidl> &quot;CONTAINS</webidl>
52823       </EnumValue>
52824       <EnumValue stringvalue="STARTSWITH">
52825         <webidl> &quot;STARTSWITH</webidl>
52826       </EnumValue>
52827       <EnumValue stringvalue="ENDSWITH">
52828         <webidl> &quot;ENDSWITH</webidl>
52829       </EnumValue>
52830       <EnumValue stringvalue="EXISTS">
52831         <webidl> &quot;EXISTS</webidl>
52832       </EnumValue>
52833     </Enum>
52834     <Enum name="SortModeOrder" id="::Tizen::SortModeOrder">
52835       <webidl>  enum SortModeOrder { &quot;ASC&quot;, &quot;DESC&quot; };</webidl>
52836       <descriptive>
52837           <brief>
52838  An enumerator that indicates the sorting order.
52839           </brief>
52840          <description>
52841           <p>
52842 The following values are supported:
52843           </p>
52844           <ul>
52845             <li>
52846 ASC - Indicates the sorting order is ascending            </li>
52847             <li>
52848 DESC - Indicates the sorting order is descending            </li>
52849           </ul>
52850          </description>
52851           <version>
52852  1.0
52853           </version>
52854       </descriptive>
52855       <EnumValue stringvalue="ASC">
52856         <webidl> &quot;ASC</webidl>
52857       </EnumValue>
52858       <EnumValue stringvalue="DESC">
52859         <webidl> &quot;DESC</webidl>
52860       </EnumValue>
52861     </Enum>
52862     <Enum name="CompositeFilterType" id="::Tizen::CompositeFilterType">
52863       <webidl>  enum CompositeFilterType { &quot;UNION&quot;, &quot;INTERSECTION&quot; };</webidl>
52864       <descriptive>
52865           <brief>
52866  An enumerator that indicates the type of composite filter.
52867           </brief>
52868          <description>
52869           <p>
52870 The following values are supported:
52871           </p>
52872           <ul>
52873             <li>
52874 UNION - Indicates that the composite is a union of filters (&quot;OR&quot; operator)            </li>
52875             <li>
52876 INTERSECTION - Indicates that the composite is an intersection of filters (&quot;AND&quot; operator)            </li>
52877           </ul>
52878          </description>
52879           <version>
52880  1.0
52881           </version>
52882       </descriptive>
52883       <EnumValue stringvalue="UNION">
52884         <webidl> &quot;UNION</webidl>
52885       </EnumValue>
52886       <EnumValue stringvalue="INTERSECTION">
52887         <webidl> &quot;INTERSECTION</webidl>
52888       </EnumValue>
52889     </Enum>
52890     <Interface name="TizenObject" id="::Tizen::TizenObject">
52891       <webidl>  [NoInterfaceObject] interface TizenObject {
52892     readonly attribute <ref>Tizen</ref> tizen;
52893   };</webidl>
52894       <descriptive>
52895           <brief>
52896  Defines the tizen interface as a part of the window global object.
52897           </brief>
52898          <description>
52899           <p>
52900 The <em>Tizen</em> interface is always available within the <em>Window </em>object in the ECMAScript hierarchy.
52901           </p>
52902          </description>
52903           <version>
52904  1.0
52905           </version>
52906       </descriptive>
52907       <ExtendedAttributeList>
52908         <ExtendedAttribute name="NoInterfaceObject">
52909           <webidl>NoInterfaceObject</webidl>
52910         </ExtendedAttribute>
52911       </ExtendedAttributeList>
52912       <Attribute readonly="readonly" name="tizen" id="::Tizen::TizenObject::tizen">
52913         <webidl>    readonly attribute <ref>Tizen</ref> tizen;</webidl>
52914         <Type name="Tizen"/>
52915       </Attribute>
52916     </Interface>
52917     <Implements name1="Window" name2="TizenObject">
52918       <webidl>  <ref>Window</ref> implements <ref>TizenObject</ref>;</webidl>
52919     </Implements>
52920     <Interface name="Tizen" id="::Tizen::Tizen">
52921       <webidl>  [NoInterfaceObject] interface Tizen {
52922   };</webidl>
52923       <descriptive>
52924           <brief>
52925  The root of Tizen Web Device API.
52926           </brief>
52927          <description>
52928           <p>
52929 This is the Tizen root interface.
52930 It is a property of the ECMAScript global object, as specified by the <em>TizenObject</em> interface.
52931           </p>
52932          </description>
52933           <version>
52934  1.0
52935           </version>
52936       </descriptive>
52937       <ExtendedAttributeList>
52938         <ExtendedAttribute name="NoInterfaceObject">
52939           <webidl>NoInterfaceObject</webidl>
52940         </ExtendedAttribute>
52941       </ExtendedAttributeList>
52942     </Interface>
52943     <Interface name="AbstractFilter" id="::Tizen::AbstractFilter">
52944       <webidl>  [NoInterfaceObject] interface AbstractFilter {
52945   };</webidl>
52946       <descriptive>
52947           <brief>
52948  This is a common interface used by different types of
52949 object filters.
52950           </brief>
52951          <description>
52952           <p>
52953 Never use this base interface directly, instead use <em>AbstractFilter</em> subtypes,
52954 such as <em>AttributeFilter</em>, <em>AttributeRangeFilter</em>, and <em>CompositeFilter</em>.
52955           </p>
52956          </description>
52957           <version>
52958  1.0
52959           </version>
52960       </descriptive>
52961       <ExtendedAttributeList>
52962         <ExtendedAttribute name="NoInterfaceObject">
52963           <webidl>NoInterfaceObject</webidl>
52964         </ExtendedAttribute>
52965       </ExtendedAttributeList>
52966     </Interface>
52967     <Interface name="AttributeFilter" id="::Tizen::AttributeFilter">
52968       <webidl>  [Constructor(DOMString attributeName, optional <ref>FilterMatchFlag</ref>? matchFlag, optional any matchValue)]
52969   interface AttributeFilter : <ref>AbstractFilter</ref> {
52970     attribute DOMString attributeName;
52971
52972     attribute <ref>FilterMatchFlag</ref> matchFlag setraises(<ref>WebAPIException</ref>);
52973
52974     attribute any matchValue;
52975   };</webidl>
52976       <descriptive>
52977           <brief>
52978  This interface represents a set of filter.
52979           </brief>
52980          <description>
52981           <p>
52982 It represents the query statement for the specified value of the <em>matchValue</em> by the rule of <em>matchFlag</em>.
52983           </p>
52984           <p>
52985 If no <em>matchValue</em> is defined, the filter will match all objects that have the attribute
52986 defined (same as the &quot;EXISTS&quot; filter works), otherwise, it will only match objects which have an attribute that matches
52987 the specified value.
52988           </p>
52989          </description>
52990           <version>
52991  1.0
52992           </version>
52993           <Code> // Define success callback
52994  function successCallback(contacts) {
52995    console.log(contacts.length + &quot; contacts found.&quot;);
52996  }
52997
52998  // Define error callback
52999  function errorCallback(error) {
53000    console.log(&quot;An error occurred: &quot; + error.message);
53001  }
53002
53003  // Create an attribute filter based on first name: &quot;First name should contain 'Chris' (case insensitive)&quot;
53004  var filter = new tizen.AttributeFilter(&quot;name.firstName&quot;, &quot;CONTAINS&quot;, &quot;Chris&quot;);
53005  // Send request on contact address book.
53006  tizen.contact.getDefaultAddressBook().find(successCallback, errorCallback, filter);
53007  </Code>
53008       </descriptive>
53009       <ExtendedAttributeList>
53010         <ExtendedAttribute name="Constructor">
53011           <webidl>Constructor(DOMString attributeName, optional <ref>FilterMatchFlag</ref>? matchFlag, optional any matchValue)</webidl>
53012           <ArgumentList>
53013             <Argument name="attributeName">
53014               <Type type="DOMString"/>
53015             </Argument>
53016             <Argument optional="optional" name="matchFlag">
53017               <Type name="FilterMatchFlag" nullable="nullable"/>
53018             </Argument>
53019             <Argument optional="optional" name="matchValue">
53020               <Type type="any"/>
53021             </Argument>
53022           </ArgumentList>
53023         </ExtendedAttribute>
53024       </ExtendedAttributeList>
53025       <InterfaceInheritance>
53026         <Name name="AbstractFilter"/>
53027       </InterfaceInheritance>
53028       <Attribute name="attributeName" id="::Tizen::AttributeFilter::attributeName">
53029         <webidl>    attribute DOMString attributeName;</webidl>
53030         <descriptive>
53031             <brief>
53032  The name of the object attribute used for filtering.
53033             </brief>
53034            <description>
53035             <p>
53036 This is the name of the object attribute exactly as it is defined in
53037 the object's interface. For attributes of complex type, use fully-qualified names
53038 (such as 'organizations.role' to filter on a contact's role in an organization).
53039             </p>
53040             <p>
53041 For attributes of an array type, the filter will match if any value in the array
53042 matches.
53043             </p>
53044            </description>
53045             <version>
53046  1.0
53047             </version>
53048         </descriptive>
53049         <Type type="DOMString"/>
53050       </Attribute>
53051       <Attribute name="matchFlag" id="::Tizen::AttributeFilter::matchFlag">
53052         <webidl>    attribute <ref>FilterMatchFlag</ref> matchFlag setraises(<ref>WebAPIException</ref>);</webidl>
53053         <descriptive>
53054             <brief>
53055  The match flag used for attribute-based filtering.
53056             </brief>
53057            <description>
53058             <p>
53059 By default, this attribute is set to &quot;EXACTLY&quot;.
53060             </p>
53061            </description>
53062             <version>
53063  1.0
53064             </version>
53065         </descriptive>
53066         <Type name="FilterMatchFlag"/>
53067         <SetRaises>
53068           <RaiseException name="WebAPIException"/>
53069         </SetRaises>
53070       </Attribute>
53071       <Attribute name="matchValue" id="::Tizen::AttributeFilter::matchValue">
53072         <webidl>    attribute any matchValue;</webidl>
53073         <descriptive>
53074             <brief>
53075  The value used for matching.
53076             </brief>
53077            <description>
53078             <p>
53079 The filter will match if the attribute value matches the given matchValue.
53080             </p>
53081             <p>
53082 This value is not used if the <em>matchFlag</em> is set to &quot;EXISTS&quot;.
53083 By default, this attribute is set to null.
53084             </p>
53085            </description>
53086             <version>
53087  1.0
53088             </version>
53089         </descriptive>
53090         <Type type="any"/>
53091       </Attribute>
53092     </Interface>
53093     <Interface name="AttributeRangeFilter" id="::Tizen::AttributeRangeFilter">
53094       <webidl>  [Constructor(DOMString attributeName, optional any initialValue, optional any endValue)]
53095   interface AttributeRangeFilter : <ref>AbstractFilter</ref> {
53096     attribute DOMString attributeName;
53097
53098     attribute any initialValue;
53099
53100     attribute any endValue;
53101   };</webidl>
53102       <descriptive>
53103           <brief>
53104  <em>AttributeRangeFilter</em> represents a filter based on an object attribute
53105 which has values that are within a particular range.
53106           </brief>
53107          <description>
53108           <p>
53109 Range filters, where only one boundary is set, are available.
53110           </p>
53111          </description>
53112           <version>
53113  1.0
53114           </version>
53115           <Code> // Define success callback
53116  function successCallback(events) {
53117    console.log(events.length + &quot; events today.&quot;);
53118  }
53119
53120  // Define error callback
53121  function errorCallback(error) {
53122    console.log(&quot;An error occurred: &quot; + error.message);
53123  }
53124
53125  // Create an attribute range filter based on event start date: &quot;All events occurring today&quot;.
53126  var now_dt = tizen.time.getCurrentDateTime();
53127  var today_begin = new tizen.TZDate(now_dt.getFullYear(), now_dt.getMonth(), now_dt.getDate());
53128  var today_end = today_begin.addDuration(new tizen.TimeDuration(1, &quot;DAYS&quot;));
53129  var filter = new tizen.AttributeRangeFilter(&quot;startDate&quot;, today_begin, today_end);
53130
53131  // Send a search request to default event calendar.
53132  tizen.calendar.getDefaultCalendar(&quot;EVENT&quot;).find(successCallback, errorCallback, filter);
53133  </Code>
53134       </descriptive>
53135       <ExtendedAttributeList>
53136         <ExtendedAttribute name="Constructor">
53137           <webidl>Constructor(DOMString attributeName, optional any initialValue, optional any endValue)</webidl>
53138           <ArgumentList>
53139             <Argument name="attributeName">
53140               <Type type="DOMString"/>
53141             </Argument>
53142             <Argument optional="optional" name="initialValue">
53143               <Type type="any"/>
53144             </Argument>
53145             <Argument optional="optional" name="endValue">
53146               <Type type="any"/>
53147             </Argument>
53148           </ArgumentList>
53149         </ExtendedAttribute>
53150       </ExtendedAttributeList>
53151       <InterfaceInheritance>
53152         <Name name="AbstractFilter"/>
53153       </InterfaceInheritance>
53154       <Attribute name="attributeName" id="::Tizen::AttributeRangeFilter::attributeName">
53155         <webidl>    attribute DOMString attributeName;</webidl>
53156         <descriptive>
53157             <brief>
53158  The name of the object attribute used for filtering.
53159             </brief>
53160            <description>
53161             <p>
53162 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
53163 (such as 'organizations.role' to filter on a contact's role in an organization).
53164             </p>
53165             <p>
53166 For attributes of array type, the filter will match if any value in the array
53167 matches.
53168             </p>
53169            </description>
53170             <version>
53171  1.0
53172             </version>
53173         </descriptive>
53174         <Type type="DOMString"/>
53175       </Attribute>
53176       <Attribute name="initialValue" id="::Tizen::AttributeRangeFilter::initialValue">
53177         <webidl>    attribute any initialValue;</webidl>
53178         <descriptive>
53179             <brief>
53180  Objects with an attribute that is greater than or equal to <em>initialValue</em> will match.
53181             </brief>
53182            <description>
53183             <p>
53184 By default, this attribute is set to <var>null</var>.
53185             </p>
53186            </description>
53187             <version>
53188  1.0
53189             </version>
53190         </descriptive>
53191         <Type type="any"/>
53192       </Attribute>
53193       <Attribute name="endValue" id="::Tizen::AttributeRangeFilter::endValue">
53194         <webidl>    attribute any endValue;</webidl>
53195         <descriptive>
53196             <brief>
53197  Objects with an attribute that is strictly lower than to <em>endValue</em> will match.
53198             </brief>
53199            <description>
53200             <p>
53201 By default, this attribute is set to <var>null</var>.
53202             </p>
53203            </description>
53204             <version>
53205  1.0
53206             </version>
53207         </descriptive>
53208         <Type type="any"/>
53209       </Attribute>
53210     </Interface>
53211     <Interface name="CompositeFilter" id="::Tizen::CompositeFilter">
53212       <webidl>  [Constructor(<ref>CompositeFilterType</ref> type, optional <ref>AbstractFilter</ref>[]? filters)]
53213   interface CompositeFilter : <ref>AbstractFilter</ref> {
53214
53215     attribute <ref>CompositeFilterType</ref> type;
53216
53217     attribute <ref>AbstractFilter</ref>[] filters;
53218   };</webidl>
53219       <descriptive>
53220           <brief>
53221  <em>CompositeFilter</em> represents a set of filters.
53222           </brief>
53223          <description>
53224           <p>
53225 The composite filters can be one of the 2 types:
53226           </p>
53227           <ul>
53228             <li>
53229 The union - used to filter objects that match any of the filters it includes.            </li>
53230             <li>
53231 The intersection - used to filter objects that match all filters it includes.            </li>
53232           </ul>
53233          </description>
53234           <version>
53235  1.0
53236           </version>
53237           <Code> // Define success callback
53238  function successCallback(contacts) {
53239    console.log(contacts.length + &quot; contacts found.&quot;);
53240  }
53241
53242  // Define error callback
53243  function errorCallback(error) {
53244    console.log(&quot;An error occurred: &quot; + error.message);
53245  }
53246
53247  // Create an attribute filter based on first name: &quot;First name should contain 'Chris' (case insensitive)
53248  var firstNameFilter = new tizen.AttributeFilter(&quot;name.firstName&quot;, &quot;CONTAINS&quot;, &quot;Chris&quot;);
53249
53250  // Create an attribute filter based on last name: &quot;Last name should be exactly 'Smith' (case insensitive)
53251  var lastNameFilter = new tizen.AttributeFilter(&quot;name.lastName&quot;, &quot;EXACTLY&quot;, &quot;Smith&quot;};
53252
53253  // Create a filter based on the intersection of these two filter:
53254  // &quot;First name should contain 'Chris' AND last name should be 'Smith'&quot;.
53255  var filter = new tizen.CompositeFilter(&quot;INTERSECTION&quot;, [firstNameFilter, lastNameFilter]);
53256
53257  // Send request on contact address book.
53258  tizen.contact.getDefaultAddressBook().find(successCallback, errorCallback, filter);
53259  </Code>
53260       </descriptive>
53261       <ExtendedAttributeList>
53262         <ExtendedAttribute name="Constructor">
53263           <webidl>Constructor(<ref>CompositeFilterType</ref> type, optional <ref>AbstractFilter</ref>[]? filters)</webidl>
53264           <ArgumentList>
53265             <Argument name="type">
53266               <Type name="CompositeFilterType"/>
53267             </Argument>
53268             <Argument optional="optional" name="filters">
53269               <Type type="array" nullable="nullable">
53270                 <Type name="AbstractFilter"/>
53271               </Type>
53272             </Argument>
53273           </ArgumentList>
53274         </ExtendedAttribute>
53275       </ExtendedAttributeList>
53276       <InterfaceInheritance>
53277         <Name name="AbstractFilter"/>
53278       </InterfaceInheritance>
53279       <Attribute name="type" id="::Tizen::CompositeFilter::type">
53280         <webidl>    attribute <ref>CompositeFilterType</ref> type;</webidl>
53281         <descriptive>
53282             <brief>
53283  The composite filter type.
53284             </brief>
53285             <version>
53286  1.0
53287             </version>
53288         </descriptive>
53289         <Type name="CompositeFilterType"/>
53290       </Attribute>
53291       <Attribute name="filters" id="::Tizen::CompositeFilter::filters">
53292         <webidl>    attribute <ref>AbstractFilter</ref>[] filters;</webidl>
53293         <descriptive>
53294             <brief>
53295  The list of filters in the composite filter.
53296             </brief>
53297             <version>
53298  1.0
53299             </version>
53300         </descriptive>
53301         <Type type="array">
53302           <Type name="AbstractFilter"/>
53303         </Type>
53304       </Attribute>
53305     </Interface>
53306     <Interface name="SortMode" id="::Tizen::SortMode">
53307       <webidl>  [Constructor(DOMString attributeName, optional <ref>SortModeOrder</ref>? order)]
53308   interface SortMode {
53309     attribute DOMString attributeName;
53310
53311     attribute <ref>SortModeOrder</ref> order setraises(<ref>WebAPIException</ref>);
53312   };</webidl>
53313       <descriptive>
53314           <brief>
53315  <em>SortMode</em> is a common interface used for sorting of queried data.
53316           </brief>
53317          <description>
53318           <p>
53319 Note that the sorting result of list type attributes is not determined.
53320           </p>
53321          </description>
53322           <version>
53323  1.0
53324           </version>
53325           <Code> // Define a success callback
53326  function successCallback(contacts) {
53327    // The returned contacts are sorted by first name (ascending)
53328    console.log(contacts.length + &quot; contacts found.&quot;);
53329  }
53330
53331  // Define an error callback
53332  function errorCallback(error) {
53333    console.log(&quot;An error occurred: &quot; + error.message);
53334  }
53335
53336  // Create an attribute filter based on first name: &quot;First name should contain 'Chris' (case insensitive)&quot;
53337  var filter = new tizen.AttributeFilter(&quot;name.firstName&quot;, &quot;CONTAINS&quot;, &quot;Chris&quot;);
53338  // Sort by first name, ascending
53339  var sortMode = new tizen.SortMode(&quot;name.firstName&quot;, &quot;ASC&quot;);
53340  // Send request on contact address book.
53341  tizen.contact.getDefaultAddressBook().find(successCallback, errorCallback, filter, sortMode);
53342  </Code>
53343       </descriptive>
53344       <ExtendedAttributeList>
53345         <ExtendedAttribute name="Constructor">
53346           <webidl>Constructor(DOMString attributeName, optional <ref>SortModeOrder</ref>? order)</webidl>
53347           <ArgumentList>
53348             <Argument name="attributeName">
53349               <Type type="DOMString"/>
53350             </Argument>
53351             <Argument optional="optional" name="order">
53352               <Type name="SortModeOrder" nullable="nullable"/>
53353             </Argument>
53354           </ArgumentList>
53355         </ExtendedAttribute>
53356       </ExtendedAttributeList>
53357       <Attribute name="attributeName" id="::Tizen::SortMode::attributeName">
53358         <webidl>    attribute DOMString attributeName;</webidl>
53359         <descriptive>
53360             <brief>
53361  The name of the object attribute used for sorting.
53362             </brief>
53363             <version>
53364  1.0
53365             </version>
53366         </descriptive>
53367         <Type type="DOMString"/>
53368       </Attribute>
53369       <Attribute name="order" id="::Tizen::SortMode::order">
53370         <webidl>    attribute <ref>SortModeOrder</ref> order setraises(<ref>WebAPIException</ref>);</webidl>
53371         <descriptive>
53372             <brief>
53373  The type of the sorting.
53374             </brief>
53375            <description>
53376             <p>
53377 By default, this attribute is set to <var>ASC</var>.
53378             </p>
53379            </description>
53380             <version>
53381  1.0
53382             </version>
53383         </descriptive>
53384         <Type name="SortModeOrder"/>
53385         <SetRaises>
53386           <RaiseException name="WebAPIException"/>
53387         </SetRaises>
53388       </Attribute>
53389     </Interface>
53390     <Interface name="SimpleCoordinates" id="::Tizen::SimpleCoordinates">
53391       <webidl>  [Constructor(double latitude, double longitude)]
53392   interface SimpleCoordinates {
53393     attribute double latitude setraises(<ref>WebAPIException</ref>);
53394
53395     attribute double longitude setraises(<ref>WebAPIException</ref>);
53396   };</webidl>
53397       <descriptive>
53398           <brief>
53399  <em>SimpleCoordinates</em> represents a point (latitude and longitude) in map coordinate system.
53400           </brief>
53401          <description>
53402           <p>
53403 Latitude and longitude are of the WGS84 datum.
53404           </p>
53405          </description>
53406           <version>
53407  1.0
53408           </version>
53409       </descriptive>
53410       <ExtendedAttributeList>
53411         <ExtendedAttribute name="Constructor">
53412           <webidl>Constructor(double latitude, double longitude)</webidl>
53413           <ArgumentList>
53414             <Argument name="latitude">
53415               <Type type="double"/>
53416             </Argument>
53417             <Argument name="longitude">
53418               <Type type="double"/>
53419             </Argument>
53420           </ArgumentList>
53421         </ExtendedAttribute>
53422       </ExtendedAttributeList>
53423       <Attribute name="latitude" id="::Tizen::SimpleCoordinates::latitude">
53424         <webidl>    attribute double latitude setraises(<ref>WebAPIException</ref>);</webidl>
53425         <descriptive>
53426             <brief>
53427  Latitude.
53428             </brief>
53429             <version>
53430  1.0
53431             </version>
53432         </descriptive>
53433         <Type type="double"/>
53434         <SetRaises>
53435           <RaiseException name="WebAPIException"/>
53436         </SetRaises>
53437       </Attribute>
53438       <Attribute name="longitude" id="::Tizen::SimpleCoordinates::longitude">
53439         <webidl>    attribute double longitude setraises(<ref>WebAPIException</ref>);</webidl>
53440         <descriptive>
53441             <brief>
53442  Longitude.
53443             </brief>
53444             <version>
53445  1.0
53446             </version>
53447         </descriptive>
53448         <Type type="double"/>
53449         <SetRaises>
53450           <RaiseException name="WebAPIException"/>
53451         </SetRaises>
53452       </Attribute>
53453     </Interface>
53454     <Interface name="WebAPIException" id="::Tizen::WebAPIException">
53455       <webidl>  [NoInterfaceObject]
53456   interface WebAPIException {
53457     readonly attribute unsigned short code;
53458
53459     readonly attribute DOMString name;
53460
53461     readonly attribute DOMString message;
53462
53463     const unsigned short INDEX_SIZE_ERR = 1;
53464     const unsigned short DOMSTRING_SIZE_ERR = 2; 
53465     const unsigned short HIERARCHY_REQUEST_ERR = 3;
53466     const unsigned short WRONG_DOCUMENT_ERR = 4;
53467     const unsigned short INVALID_CHARACTER_ERR = 5;
53468     const unsigned short NO_DATA_ALLOWED_ERR = 6; 
53469     const unsigned short NO_MODIFICATION_ALLOWED_ERR = 7;
53470     const unsigned short NOT_FOUND_ERR = 8;
53471     const unsigned short NOT_SUPPORTED_ERR = 9;
53472     const unsigned short INUSE_ATTRIBUTE_ERR = 10; 
53473     const unsigned short INVALID_STATE_ERR = 11;
53474     const unsigned short SYNTAX_ERR = 12;
53475     const unsigned short INVALID_MODIFICATION_ERR = 13;
53476     const unsigned short NAMESPACE_ERR = 14;
53477     const unsigned short INVALID_ACCESS_ERR = 15;
53478     const unsigned short VALIDATION_ERR = 16; 
53479     const unsigned short TYPE_MISMATCH_ERR = 17;
53480     const unsigned short SECURITY_ERR = 18;
53481     const unsigned short NETWORK_ERR = 19;
53482     const unsigned short ABORT_ERR = 20;
53483     const unsigned short URL_MISMATCH_ERR = 21;
53484     const unsigned short QUOTA_EXCEEDED_ERR = 22;
53485     const unsigned short TIMEOUT_ERR = 23;
53486     const unsigned short INVALID_NODE_TYPE_ERR = 24;
53487     const unsigned short DATA_CLONE_ERR = 25;
53488   };</webidl>
53489       <descriptive>
53490           <brief>
53491  Generic exception interface.
53492           </brief>
53493          <description>
53494           <p>
53495 This interface will be used by the APIs to throw errors synchronously.
53496           </p>
53497           <p>
53498 The attempt to set an attribute value may or may not raise WebAPIException synchronously with error type TypeMismatchError or InvalidValuesError.
53499           </p>
53500          </description>
53501           <version>
53502  2.0
53503           </version>
53504       </descriptive>
53505       <ExtendedAttributeList>
53506         <ExtendedAttribute name="NoInterfaceObject">
53507           <webidl>NoInterfaceObject</webidl>
53508         </ExtendedAttribute>
53509       </ExtendedAttributeList>
53510       <Attribute readonly="readonly" name="code" id="::Tizen::WebAPIException::code">
53511         <webidl>    readonly attribute unsigned short code;</webidl>
53512         <descriptive>
53513             <brief>
53514  16-bit error code.
53515 For the possible values for this attribute, see <a href="http://www.w3.org/TR/dom/#domexception">DOMException</a>.
53516             </brief>
53517             <version>
53518  2.0
53519             </version>
53520         </descriptive>
53521         <Type type="unsigned short"/>
53522       </Attribute>
53523       <Attribute readonly="readonly" name="name" id="::Tizen::WebAPIException::name">
53524         <webidl>    readonly attribute DOMString name;</webidl>
53525         <descriptive>
53526             <brief>
53527  An error type. The name attribute must return the value it was initialized with.
53528 This attribute can have one of the following values: 
53529             </brief>
53530            <description>
53531             <ul>
53532               <li>
53533 UnknownError - An unknown error has occurred.              </li>
53534               <li>
53535 InvalidValuesError - The content of an object does not contain valid values.              </li>
53536               <li>
53537 IOError - An error occurred in communication with the underlying implementation and so the requested method cannot be completed.              </li>
53538               <li>
53539 ServiceNotAvailableError - The requested service is not available.              </li>
53540             </ul>
53541             <p>
53542 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> 
53543             </p>
53544            </description>
53545             <version>
53546  2.0
53547             </version>
53548         </descriptive>
53549         <Type type="DOMString"/>
53550       </Attribute>
53551       <Attribute readonly="readonly" name="message" id="::Tizen::WebAPIException::message">
53552         <webidl>    readonly attribute DOMString message;</webidl>
53553         <descriptive>
53554             <brief>
53555  An error message that describes the details of an encountered error. 
53556 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.
53557             </brief>
53558             <version>
53559  2.0
53560             </version>
53561         </descriptive>
53562         <Type type="DOMString"/>
53563       </Attribute>
53564       <Const name="INDEX_SIZE_ERR" value="1" id="::Tizen::WebAPIException::INDEX_SIZE_ERR">
53565         <webidl>    const unsigned short INDEX_SIZE_ERR = 1;</webidl>
53566         <descriptive>
53567             <brief>
53568  The index is not in the allowed range.
53569             </brief>
53570             <version>
53571  2.0
53572             </version>
53573         </descriptive>
53574         <Type type="unsigned short"/>
53575       </Const>
53576       <Const name="DOMSTRING_SIZE_ERR" value="2" id="::Tizen::WebAPIException::DOMSTRING_SIZE_ERR">
53577         <webidl>    const unsigned short DOMSTRING_SIZE_ERR = 2;</webidl>
53578         <descriptive>
53579             <brief>
53580  The specified range of text is too large.
53581             </brief>
53582             <version>
53583  2.0
53584             </version>
53585         </descriptive>
53586         <Type type="unsigned short"/>
53587       </Const>
53588       <Const name="HIERARCHY_REQUEST_ERR" value="3" id="::Tizen::WebAPIException::HIERARCHY_REQUEST_ERR">
53589         <webidl>    const unsigned short HIERARCHY_REQUEST_ERR = 3;</webidl>
53590         <descriptive>
53591             <brief>
53592  The operation would yield an incorrect node tree.
53593             </brief>
53594             <version>
53595  2.0
53596             </version>
53597         </descriptive>
53598         <Type type="unsigned short"/>
53599       </Const>
53600       <Const name="WRONG_DOCUMENT_ERR" value="4" id="::Tizen::WebAPIException::WRONG_DOCUMENT_ERR">
53601         <webidl>    const unsigned short WRONG_DOCUMENT_ERR = 4;</webidl>
53602         <descriptive>
53603             <brief>
53604  The object is in the wrong document.
53605             </brief>
53606             <version>
53607  2.0
53608             </version>
53609         </descriptive>
53610         <Type type="unsigned short"/>
53611       </Const>
53612       <Const name="INVALID_CHARACTER_ERR" value="5" id="::Tizen::WebAPIException::INVALID_CHARACTER_ERR">
53613         <webidl>    const unsigned short INVALID_CHARACTER_ERR = 5;</webidl>
53614         <descriptive>
53615             <brief>
53616  The string contains invalid characters.
53617             </brief>
53618             <version>
53619  2.0
53620             </version>
53621         </descriptive>
53622         <Type type="unsigned short"/>
53623       </Const>
53624       <Const name="NO_DATA_ALLOWED_ERR" value="6" id="::Tizen::WebAPIException::NO_DATA_ALLOWED_ERR">
53625         <webidl>    const unsigned short NO_DATA_ALLOWED_ERR = 6;</webidl>
53626         <descriptive>
53627             <brief>
53628  Data is specified for a node that does not support data.
53629             </brief>
53630             <version>
53631  2.0
53632             </version>
53633         </descriptive>
53634         <Type type="unsigned short"/>
53635       </Const>
53636       <Const name="NO_MODIFICATION_ALLOWED_ERR" value="7" id="::Tizen::WebAPIException::NO_MODIFICATION_ALLOWED_ERR">
53637         <webidl>    const unsigned short NO_MODIFICATION_ALLOWED_ERR = 7;</webidl>
53638         <descriptive>
53639             <brief>
53640  The object cannot be modified.
53641             </brief>
53642             <version>
53643  2.0
53644             </version>
53645         </descriptive>
53646         <Type type="unsigned short"/>
53647       </Const>
53648       <Const name="NOT_FOUND_ERR" value="8" id="::Tizen::WebAPIException::NOT_FOUND_ERR">
53649         <webidl>    const unsigned short NOT_FOUND_ERR = 8;</webidl>
53650         <descriptive>
53651             <brief>
53652  The object cannot be found here.
53653             </brief>
53654             <version>
53655  2.0
53656             </version>
53657         </descriptive>
53658         <Type type="unsigned short"/>
53659       </Const>
53660       <Const name="NOT_SUPPORTED_ERR" value="9" id="::Tizen::WebAPIException::NOT_SUPPORTED_ERR">
53661         <webidl>    const unsigned short NOT_SUPPORTED_ERR = 9;</webidl>
53662         <descriptive>
53663             <brief>
53664  The operation is not supported.
53665             </brief>
53666             <version>
53667  2.0
53668             </version>
53669         </descriptive>
53670         <Type type="unsigned short"/>
53671       </Const>
53672       <Const name="INUSE_ATTRIBUTE_ERR" value="10" id="::Tizen::WebAPIException::INUSE_ATTRIBUTE_ERR">
53673         <webidl>    const unsigned short INUSE_ATTRIBUTE_ERR = 10;</webidl>
53674         <descriptive>
53675             <brief>
53676  The specified attribute is already in use elsewhere.
53677             </brief>
53678             <version>
53679  2.0
53680             </version>
53681         </descriptive>
53682         <Type type="unsigned short"/>
53683       </Const>
53684       <Const name="INVALID_STATE_ERR" value="11" id="::Tizen::WebAPIException::INVALID_STATE_ERR">
53685         <webidl>    const unsigned short INVALID_STATE_ERR = 11;</webidl>
53686         <descriptive>
53687             <brief>
53688  The object is in an invalid state.
53689             </brief>
53690             <version>
53691  2.0
53692             </version>
53693         </descriptive>
53694         <Type type="unsigned short"/>
53695       </Const>
53696       <Const name="SYNTAX_ERR" value="12" id="::Tizen::WebAPIException::SYNTAX_ERR">
53697         <webidl>    const unsigned short SYNTAX_ERR = 12;</webidl>
53698         <descriptive>
53699             <brief>
53700  The string did not match the expected pattern.
53701             </brief>
53702             <version>
53703  2.0
53704             </version>
53705         </descriptive>
53706         <Type type="unsigned short"/>
53707       </Const>
53708       <Const name="INVALID_MODIFICATION_ERR" value="13" id="::Tizen::WebAPIException::INVALID_MODIFICATION_ERR">
53709         <webidl>    const unsigned short INVALID_MODIFICATION_ERR = 13;</webidl>
53710         <descriptive>
53711             <brief>
53712  The object cannot be modified in this way.
53713             </brief>
53714             <version>
53715  2.0
53716             </version>
53717         </descriptive>
53718         <Type type="unsigned short"/>
53719       </Const>
53720       <Const name="NAMESPACE_ERR" value="14" id="::Tizen::WebAPIException::NAMESPACE_ERR">
53721         <webidl>    const unsigned short NAMESPACE_ERR = 14;</webidl>
53722         <descriptive>
53723             <brief>
53724  The operation is not allowed by Namespaces in XML.
53725             </brief>
53726             <version>
53727  2.0
53728             </version>
53729         </descriptive>
53730         <Type type="unsigned short"/>
53731       </Const>
53732       <Const name="INVALID_ACCESS_ERR" value="15" id="::Tizen::WebAPIException::INVALID_ACCESS_ERR">
53733         <webidl>    const unsigned short INVALID_ACCESS_ERR = 15;</webidl>
53734         <descriptive>
53735             <brief>
53736  The object does not support the operation or argument.
53737             </brief>
53738             <version>
53739  2.0
53740             </version>
53741         </descriptive>
53742         <Type type="unsigned short"/>
53743       </Const>
53744       <Const name="VALIDATION_ERR" value="16" id="::Tizen::WebAPIException::VALIDATION_ERR">
53745         <webidl>    const unsigned short VALIDATION_ERR = 16;</webidl>
53746         <descriptive>
53747             <brief>
53748  The operation would cause the node to fail validation.
53749             </brief>
53750             <version>
53751  2.0
53752             </version>
53753         </descriptive>
53754         <Type type="unsigned short"/>
53755       </Const>
53756       <Const name="TYPE_MISMATCH_ERR" value="17" id="::Tizen::WebAPIException::TYPE_MISMATCH_ERR">
53757         <webidl>    const unsigned short TYPE_MISMATCH_ERR = 17;</webidl>
53758         <descriptive>
53759             <brief>
53760  The type of the object does not match the expected type.
53761             </brief>
53762             <version>
53763  2.0
53764             </version>
53765         </descriptive>
53766         <Type type="unsigned short"/>
53767       </Const>
53768       <Const name="SECURITY_ERR" value="18" id="::Tizen::WebAPIException::SECURITY_ERR">
53769         <webidl>    const unsigned short SECURITY_ERR = 18;</webidl>
53770         <descriptive>
53771             <brief>
53772  The operation is insecure.
53773             </brief>
53774             <version>
53775  2.0
53776             </version>
53777         </descriptive>
53778         <Type type="unsigned short"/>
53779       </Const>
53780       <Const name="NETWORK_ERR" value="19" id="::Tizen::WebAPIException::NETWORK_ERR">
53781         <webidl>    const unsigned short NETWORK_ERR = 19;</webidl>
53782         <descriptive>
53783             <brief>
53784  A network error occurred.
53785             </brief>
53786             <version>
53787  2.0
53788             </version>
53789         </descriptive>
53790         <Type type="unsigned short"/>
53791       </Const>
53792       <Const name="ABORT_ERR" value="20" id="::Tizen::WebAPIException::ABORT_ERR">
53793         <webidl>    const unsigned short ABORT_ERR = 20;</webidl>
53794         <descriptive>
53795             <brief>
53796  The operation was aborted.
53797             </brief>
53798             <version>
53799  2.0
53800             </version>
53801         </descriptive>
53802         <Type type="unsigned short"/>
53803       </Const>
53804       <Const name="URL_MISMATCH_ERR" value="21" id="::Tizen::WebAPIException::URL_MISMATCH_ERR">
53805         <webidl>    const unsigned short URL_MISMATCH_ERR = 21;</webidl>
53806         <descriptive>
53807             <brief>
53808  The given URL does not match another URL.
53809             </brief>
53810             <version>
53811  2.0
53812             </version>
53813         </descriptive>
53814         <Type type="unsigned short"/>
53815       </Const>
53816       <Const name="QUOTA_EXCEEDED_ERR" value="22" id="::Tizen::WebAPIException::QUOTA_EXCEEDED_ERR">
53817         <webidl>    const unsigned short QUOTA_EXCEEDED_ERR = 22;</webidl>
53818         <descriptive>
53819             <brief>
53820  The quota has been exceeded.
53821             </brief>
53822             <version>
53823  2.0
53824             </version>
53825         </descriptive>
53826         <Type type="unsigned short"/>
53827       </Const>
53828       <Const name="TIMEOUT_ERR" value="23" id="::Tizen::WebAPIException::TIMEOUT_ERR">
53829         <webidl>    const unsigned short TIMEOUT_ERR = 23;</webidl>
53830         <descriptive>
53831             <brief>
53832  The operation timed out.
53833             </brief>
53834             <version>
53835  2.0
53836             </version>
53837         </descriptive>
53838         <Type type="unsigned short"/>
53839       </Const>
53840       <Const name="INVALID_NODE_TYPE_ERR" value="24" id="::Tizen::WebAPIException::INVALID_NODE_TYPE_ERR">
53841         <webidl>    const unsigned short INVALID_NODE_TYPE_ERR = 24;</webidl>
53842         <descriptive>
53843             <brief>
53844  The supplied node is incorrect or has an incorrect ancestor for this operation.
53845             </brief>
53846             <version>
53847  2.0
53848             </version>
53849         </descriptive>
53850         <Type type="unsigned short"/>
53851       </Const>
53852       <Const name="DATA_CLONE_ERR" value="25" id="::Tizen::WebAPIException::DATA_CLONE_ERR">
53853         <webidl>    const unsigned short DATA_CLONE_ERR = 25;</webidl>
53854         <descriptive>
53855             <brief>
53856  The object cannot be cloned.
53857             </brief>
53858             <version>
53859  2.0
53860             </version>
53861         </descriptive>
53862         <Type type="unsigned short"/>
53863       </Const>
53864     </Interface>
53865     <Interface name="WebAPIError" id="::Tizen::WebAPIError">
53866       <webidl>  [NoInterfaceObject]
53867   interface WebAPIError {
53868     readonly attribute unsigned short code;
53869
53870     readonly attribute DOMString name;
53871
53872     readonly attribute DOMString message;
53873   };</webidl>
53874       <descriptive>
53875           <brief>
53876  Generic error interface.
53877           </brief>
53878          <description>
53879           <p>
53880 This interface will be used by the APIs in order to return them in the error callback of asynchronous methods.
53881           </p>
53882          </description>
53883           <version>
53884  2.0
53885           </version>
53886       </descriptive>
53887       <ExtendedAttributeList>
53888         <ExtendedAttribute name="NoInterfaceObject">
53889           <webidl>NoInterfaceObject</webidl>
53890         </ExtendedAttribute>
53891       </ExtendedAttributeList>
53892       <Attribute readonly="readonly" name="code" id="::Tizen::WebAPIError::code">
53893         <webidl>    readonly attribute unsigned short code;</webidl>
53894         <descriptive>
53895             <brief>
53896  16-bit error code.
53897 Possible values are defined in <a href="http://www.w3.org/TR/dom/#domexception">DOMException</a>.
53898             </brief>
53899             <version>
53900  2.0
53901             </version>
53902         </descriptive>
53903         <Type type="unsigned short"/>
53904       </Attribute>
53905       <Attribute readonly="readonly" name="name" id="::Tizen::WebAPIError::name">
53906         <webidl>    readonly attribute DOMString name;</webidl>
53907         <descriptive>
53908             <brief>
53909  An error type. The name attribute must return the value it was initialized with.
53910 This attribute can have one of the following values: 
53911             </brief>
53912            <description>
53913             <ul>
53914               <li>
53915 UnknownError - An unknown error has occurred.              </li>
53916               <li>
53917 InvalidValuesError - The content of an object does not contain valid values.              </li>
53918               <li>
53919 IOError - An error occurred in communication with the underlying implementation and so the requested method cannot be completed.              </li>
53920               <li>
53921 ServiceNotAvailableError - The requested service is not available.              </li>
53922             </ul>
53923             <p>
53924 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> 
53925             </p>
53926            </description>
53927             <version>
53928  2.0
53929             </version>
53930         </descriptive>
53931         <Type type="DOMString"/>
53932       </Attribute>
53933       <Attribute readonly="readonly" name="message" id="::Tizen::WebAPIError::message">
53934         <webidl>    readonly attribute DOMString message;</webidl>
53935         <descriptive>
53936             <brief>
53937  An error message that describes the details of the error encountered. This attribute is not intended
53938 to be used directly in the user interfaces as it is mainly intended to be useful for developers rather than end users.
53939             </brief>
53940             <version>
53941  2.0
53942             </version>
53943         </descriptive>
53944         <Type type="DOMString"/>
53945       </Attribute>
53946     </Interface>
53947     <Interface name="SuccessCallback" id="::Tizen::SuccessCallback">
53948       <webidl>  [Callback=FunctionOnly, NoInterfaceObject]
53949   interface SuccessCallback {
53950     void onsuccess ();
53951   };</webidl>
53952       <descriptive>
53953           <brief>
53954  This interface is used in methods that do not require any return value in the success callback.
53955 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.
53956           </brief>
53957           <version>
53958  1.0
53959           </version>
53960           <Code>     function onSuccess() {
53961          console.log(&quot;Application launched successfully&quot;);
53962      }
53963      tizen.application.launch('0pnxz8hbsr.MyFiles', onSuccess);
53964  </Code>
53965       </descriptive>
53966       <ExtendedAttributeList>
53967         <ExtendedAttribute name="Callback" value="FunctionOnly">
53968           <webidl>Callback</webidl>
53969         </ExtendedAttribute>
53970         <ExtendedAttribute name="NoInterfaceObject">
53971           <webidl> NoInterfaceObject</webidl>
53972         </ExtendedAttribute>
53973       </ExtendedAttributeList>
53974       <Operation name="onsuccess" id="::Tizen::SuccessCallback::onsuccess">
53975         <webidl>    void onsuccess ();</webidl>
53976         <descriptive>
53977             <brief>
53978  Method invoked when the asynchronous call completes successfully.
53979             </brief>
53980             <version>
53981  1.0
53982             </version>
53983         </descriptive>
53984         <Type type="void"/>
53985         <ArgumentList/>
53986       </Operation>
53987     </Interface>
53988     <Interface name="ErrorCallback" id="::Tizen::ErrorCallback">
53989       <webidl>  [Callback=FunctionOnly, NoInterfaceObject]
53990   interface ErrorCallback {
53991
53992     void onerror (<ref>WebAPIError</ref> error);
53993   };</webidl>
53994       <descriptive>
53995           <brief>
53996  This interface is used in methods that require only an error as input parameter in the error callback.
53997 If an invalid function (such as null) is passed to the API that accepts ErrorCallback,
53998 it silently fails and there is no further action.
53999           </brief>
54000           <version>
54001  1.0
54002           </version>
54003           <Code>  // Define the error callback.
54004   function onError(error) {
54005     console.log(error.message);
54006   }
54007
54008   // Define the success callback.
54009   function onSuccess(services) {
54010      //send a message using the found service
54011   }
54012   tizen.messaging.getMessageServices(&quot;messaging.sms&quot;, onSuccess, onError);
54013  </Code>
54014       </descriptive>
54015       <ExtendedAttributeList>
54016         <ExtendedAttribute name="Callback" value="FunctionOnly">
54017           <webidl>Callback</webidl>
54018         </ExtendedAttribute>
54019         <ExtendedAttribute name="NoInterfaceObject">
54020           <webidl> NoInterfaceObject</webidl>
54021         </ExtendedAttribute>
54022       </ExtendedAttributeList>
54023       <Operation name="onerror" id="::Tizen::ErrorCallback::onerror">
54024         <webidl>    void onerror (<ref>WebAPIError</ref> error);</webidl>
54025         <descriptive>
54026             <brief>
54027  Method that is invoked when the error occurs.
54028             </brief>
54029             <version>
54030  1.0
54031             </version>
54032         </descriptive>
54033         <Type type="void"/>
54034         <ArgumentList>
54035           <Argument name="error">
54036             <descriptive>
54037                 <description><p>
54038  Generic error.
54039                 </p></description>
54040             </descriptive>
54041             <Type name="WebAPIError"/>
54042           </Argument>
54043         </ArgumentList>
54044       </Operation>
54045     </Interface>
54046   </Module>
54047   <Module name="WebSetting" id="::WebSetting">
54048     <webidl>module WebSetting {
54049
54050   [NoInterfaceObject] interface WebSettingObject {
54051     readonly attribute <ref>WebSettingManager</ref> websetting;
54052   };
54053     <ref>Tizen</ref> implements <ref>WebSettingObject</ref>;
54054
54055   [NoInterfaceObject] interface WebSettingManager {
54056
54057    void setUserAgentString(DOMString userAgent, 
54058               optional <ref>SuccessCallback</ref>? successCallback, 
54059               optional <ref>ErrorCallback</ref>? errorCallback) raises (<ref>WebAPIException</ref>);     
54060
54061    void removeAllCookies(optional <ref>SuccessCallback</ref>? successCallback, 
54062               optional <ref>ErrorCallback</ref>? errorCallback) raises (<ref>WebAPIException</ref>);     
54063               
54064    };
54065 };</webidl>
54066     <descriptive>
54067         <brief>
54068  This Web setting API defines a set of APIs that manages the setting states of the Web view in your Web application.
54069         </brief>
54070        <description>
54071         <p>
54072 A Tizen Web application includes a web view and the properties below of the web view can be managed via the Web setting API:
54073         </p>
54074         <ul>
54075           <li>
54076  Delete all the cookies saved for the web view in the Web application.           </li>
54077           <li>
54078  Set a custom user agent string of the web view in the Web application.          </li>
54079         </ul>
54080         <p>
54081 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.  
54082         </p>
54083        </description>
54084         <version>
54085  2.2
54086         </version>
54087     </descriptive>
54088     <Interface name="WebSettingObject" id="::WebSetting::WebSettingObject">
54089       <webidl>  [NoInterfaceObject] interface WebSettingObject {
54090     readonly attribute <ref>WebSettingManager</ref> websetting;
54091   };</webidl>
54092       <descriptive>
54093           <brief>
54094  This interface defines what is instantiated for the Web setting API by the <em>Tizen</em> object from the Tizen Platform.
54095           </brief>
54096          <description>
54097           <p>
54098 <em>tizen.websetting</em> object is available to manage the settings of the Web view in your Web application. 
54099           </p>
54100          </description>
54101           <version>
54102  2.2
54103           </version>
54104       </descriptive>
54105       <ExtendedAttributeList>
54106         <ExtendedAttribute name="NoInterfaceObject">
54107           <webidl>NoInterfaceObject</webidl>
54108         </ExtendedAttribute>
54109       </ExtendedAttributeList>
54110       <Attribute readonly="readonly" name="websetting" id="::WebSetting::WebSettingObject::websetting">
54111         <webidl>    readonly attribute <ref>WebSettingManager</ref> websetting;</webidl>
54112         <Type name="WebSettingManager"/>
54113       </Attribute>
54114     </Interface>
54115     <Implements name1="Tizen" name2="WebSettingObject">
54116       <webidl>    <ref>Tizen</ref> implements <ref>WebSettingObject</ref>;</webidl>
54117     </Implements>
54118     <Interface name="WebSettingManager" id="::WebSetting::WebSettingManager">
54119       <webidl>  [NoInterfaceObject] interface WebSettingManager {
54120
54121    void setUserAgentString(DOMString userAgent, 
54122               optional <ref>SuccessCallback</ref>? successCallback, 
54123               optional <ref>ErrorCallback</ref>? errorCallback) raises (<ref>WebAPIException</ref>);     
54124
54125    void removeAllCookies(optional <ref>SuccessCallback</ref>? successCallback, 
54126               optional <ref>ErrorCallback</ref>? errorCallback) raises (<ref>WebAPIException</ref>);     
54127               
54128    };</webidl>
54129       <descriptive>
54130           <brief>
54131  This is the top-level interface for the WebSetting API that managed the settings of the Web view in your Web application.
54132           </brief>
54133       </descriptive>
54134       <ExtendedAttributeList>
54135         <ExtendedAttribute name="NoInterfaceObject">
54136           <webidl>NoInterfaceObject</webidl>
54137         </ExtendedAttribute>
54138       </ExtendedAttributeList>
54139       <Operation name="setUserAgentString" id="::WebSetting::WebSettingManager::setUserAgentString">
54140         <webidl>   void setUserAgentString(DOMString userAgent, 
54141               optional <ref>SuccessCallback</ref>? successCallback, 
54142               optional <ref>ErrorCallback</ref>? errorCallback) raises (<ref>WebAPIException</ref>);</webidl>
54143         <descriptive>
54144             <brief>
54145  Sets the custom user agent string for your Web application.
54146             </brief>
54147            <description>
54148             <p>
54149 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
54150 has the same user agent string as the Tizen browser on the device. 
54151             </p>
54152             <p>
54153 The <em>ErrorCallback</em> is launched with these error types:
54154             </p>
54155             <ul>
54156               <li>
54157 UnknownError - If any error occurs while setting the user agent string.              </li>
54158               <li>
54159 InvalidValuesError - If any of the input parameters contain an invalid value.              </li>
54160             </ul>
54161            </description>
54162             <version>
54163  2.2
54164             </version>
54165             <Code> function successCallback() {
54166      console.log(&quot;The requested user agent string has just been set successfully.&quot;);
54167  }
54168
54169  tizen.websetting.setUserAgentString(&quot;the new user agent string to set&quot;, successCallback);
54170       
54171 </Code>
54172         </descriptive>
54173         <Type type="void"/>
54174         <ArgumentList>
54175           <Argument name="userAgent">
54176             <descriptive>
54177                 <description><p>
54178  User agent to set for the Web view in your Web application. 
54179                 </p></description>
54180             </descriptive>
54181             <Type type="DOMString"/>
54182           </Argument>
54183           <Argument optional="optional" name="successCallback">
54184             <descriptive>
54185                 <description><p>
54186  To be invoked if the requested setting operation succeeds.
54187                 </p></description>
54188             </descriptive>
54189             <Type name="SuccessCallback" nullable="nullable"/>
54190           </Argument>
54191           <Argument optional="optional" name="errorCallback">
54192             <descriptive>
54193                 <description><p>
54194  To be invoked if the requested setting operation fails.
54195                 </p></description>
54196             </descriptive>
54197             <Type name="ErrorCallback" nullable="nullable"/>
54198           </Argument>
54199         </ArgumentList>
54200         <Raises>
54201           <RaiseException name="WebAPIException">
54202             <descriptive>
54203                 <description><p>
54204  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
54205                 </p></description>
54206             </descriptive>
54207           </RaiseException>
54208         </Raises>
54209       </Operation>
54210       <Operation name="removeAllCookies" id="::WebSetting::WebSettingManager::removeAllCookies">
54211         <webidl>   void removeAllCookies(optional <ref>SuccessCallback</ref>? successCallback, 
54212               optional <ref>ErrorCallback</ref>? errorCallback) raises (<ref>WebAPIException</ref>);</webidl>
54213         <descriptive>
54214             <brief>
54215  Removes all the cookies saved for the Web view in your Web application.
54216             </brief>
54217            <description>
54218             <p>
54219 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.  
54220             </p>
54221             <p>
54222 The <em>ErrorCallback</em> is launched with these error types:
54223             </p>
54224             <ul>
54225               <li>
54226 UnknownError - If any error occurs while deleting the cookies.              </li>
54227             </ul>
54228            </description>
54229             <version>
54230  2.2
54231             </version>
54232             <privilegelevel>
54233  public
54234             </privilegelevel>
54235             <privilege>
54236  http://tizen.org/privilege/websetting
54237             </privilege>
54238             <Code> function successCallback() {
54239      console.log(&quot;The cookies saved for your application have just been removed.&quot;);
54240  }
54241
54242  tizen.websetting.removeAllCookies(successCallback);
54243       
54244 </Code>
54245         </descriptive>
54246         <Type type="void"/>
54247         <ArgumentList>
54248           <Argument optional="optional" name="successCallback">
54249             <descriptive>
54250                 <description><p>
54251  To be invoked if the requested delete operation succeeds.  
54252                 </p></description>
54253             </descriptive>
54254             <Type name="SuccessCallback" nullable="nullable"/>
54255           </Argument>
54256           <Argument optional="optional" name="errorCallback">
54257             <descriptive>
54258                 <description><p>
54259  To be invoked if the requested delete operation fails.
54260                 </p></description>
54261             </descriptive>
54262             <Type name="ErrorCallback" nullable="nullable"/>
54263           </Argument>
54264         </ArgumentList>
54265         <Raises>
54266           <RaiseException name="WebAPIException">
54267             <descriptive>
54268                 <description><p>
54269  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
54270                 </p></description>
54271                 <description><p>
54272  with error type SecurityError, if the application does not have the privilege to call this method.
54273                 </p></description>
54274             </descriptive>
54275           </RaiseException>
54276         </Raises>
54277       </Operation>
54278     </Interface>
54279   </Module>
54280 </Definitions>