Updated Vehicle API doc and auto completion
[profile/ivi/sdk/web-ide-resources.git] / widlprocxmls / tizen.widlprocxml
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!DOCTYPE Definitions SYSTEM "widlprocxml.dtd">
3 <Definitions>
4 <Module name="Vehicle" id="::Vehicle">
5 <webidl>  module Vehicle {
6 [NoInterfaceObject]
7  interface VehicleManagerObject {
8         readonly attribute <ref>Vehicle</ref> vehicle;
9  };
10   
11 <ref>Tizen</ref> implements <ref>VehicleManagerObject</ref>;
12
13 [NoInterfaceObject]
14 interface Vehicle {
15         readonly attribute <ref>VehicleConfigurationInterface</ref> identification;
16         readonly attribute <ref>VehicleConfigurationInterface</ref> sizeConfiguration;
17         readonly attribute <ref>VehicleConfigurationInterface</ref> fuelConfiguration;
18         readonly attribute <ref>VehicleConfigurationInterface</ref> transmissionConfiguration;
19         readonly attribute <ref>VehicleConfigurationInterface</ref> wheelConfiguration;
20         readonly attribute <ref>VehicleConfigurationInterface</ref> steeringWheelConfiguration;
21
22         readonly attribute <ref>VehicleSignalInterface</ref> vehicleSpeed;
23         readonly attribute <ref>VehicleSignalInterface</ref> wheelSpeed;
24         readonly attribute <ref>VehicleSignalInterface</ref> engineSpeed;
25         readonly attribute <ref>VehicleSignalInterface</ref> powerTrainTorque;
26         readonly attribute <ref>VehicleSignalInterface</ref> acceleratorPedalPosition;
27         readonly attribute <ref>VehicleSignalInterface</ref> throttlePosition;
28         readonly attribute <ref>VehicleSignalInterface</ref> tripMeters;
29         readonly attribute <ref>VehicleSignalInterface</ref> diagnostic;
30         readonly attribute <ref>VehicleSignalInterface</ref> transmission;
31         readonly attribute <ref>VehicleSignalInterface</ref> cruiseControlStatus;
32         readonly attribute <ref>VehicleSignalInterface</ref> lightStatus;
33         readonly attribute <ref>VehicleSignalInterface</ref> interiorLightStatus;
34         readonly attribute <ref>VehicleSignalInterface</ref> chime;
35         readonly attribute <ref>VehicleSignalInterface</ref> fuel;
36         readonly attribute <ref>VehicleSignalInterface</ref> engineOil;
37         readonly attribute <ref>VehicleSignalInterface</ref> acceleration;
38         readonly attribute <ref>VehicleSignalInterface</ref> engineCoolant;
39         readonly attribute <ref>VehicleSignalInterface</ref> steeringWheel;
40         readonly attribute <ref>VehicleSignalInterface</ref> ignitionTime;
41         readonly attribute <ref>VehicleSignalInterface</ref> yawRate;
42         readonly attribute <ref>VehicleSignalInterface</ref> brakeOperation;
43         readonly attribute <ref>VehicleSignalInterface</ref> wheelTick;
44         readonly attribute <ref>VehicleSignalInterface</ref> buttonEvent;
45         readonly attribute <ref>VehicleSignalInterface</ref> drivingMode;
46         readonly attribute <ref>VehicleSignalInterface</ref> nightMode;
47
48         readonly attribute <ref>VehicleSignalInterface</ref> odometer;
49         readonly attribute <ref>VehicleSignalInterface</ref> transmissionOil;
50         readonly attribute <ref>VehicleSignalInterface</ref> transmissionClutch;
51         readonly attribute <ref>VehicleSignalInterface</ref> brakeMaintenance;
52         readonly attribute <ref>VehicleSignalInterface</ref> washerFluid;
53         readonly attribute <ref>VehicleSignalInterface</ref> malfunctionIndicator;
54         readonly attribute <ref>VehicleSignalInterface</ref> batteryStatus;
55         readonly attribute <ref>VehicleSignalInterface</ref> tire;
56         readonly attribute <ref>VehicleInterface</ref>       diagnostic;
57
58         readonly attribute <ref>VehicleSignalInterface</ref>  driverIdentification;
59         readonly attribute <ref>VehicleSignalInterface</ref>? languageConfiguration;
60         readonly attribute <ref>VehicleSignalInterface</ref>  unitsOfMeasure;
61         readonly attribute <ref>VehicleSignalInterface</ref>  mirror;
62         readonly attribute <ref>VehicleSignalInterface</ref>  steeringWheel;
63         readonly attribute <ref>VehicleSignalInterface</ref>  driveMode;
64         readonly attribute <ref>VehicleSignalInterface</ref>  seatAdjustment;
65         readonly attribute <ref>VehicleSignalInterface</ref>  dashboardIllumination;
66         readonly attribute <ref>VehicleSignalInterface</ref>  vehicleSound;
67
68         readonly attribute <ref>VehicleSignalInterface</ref> antilockBrakingSystem;
69         readonly attribute <ref>VehicleSignalInterface</ref> tractionControlSystem;
70         readonly attribute <ref>VehicleSignalInterface</ref> electronicStabilityControl;
71         readonly attribute <ref>VehicleSignalInterface</ref> topSpeedLimit;
72         readonly attribute <ref>VehicleSignalInterface</ref> airbagStatus;
73         readonly attribute <ref>VehicleSignalInterface</ref> door;
74         readonly attribute <ref>VehicleSignalInterface</ref> childSafetyLock;
75         readonly attribute <ref>VehicleSignalInterface</ref> seat;
76
77         readonly attribute <ref>VehicleSignalInterface</ref> temperature;
78         readonly attribute <ref>VehicleSignalInterface</ref> rainSensor;
79         readonly attribute <ref>VehicleSignalInterface</ref> wiperStatus;
80         readonly attribute <ref>VehicleSignalInterface</ref> wiperSetting;
81         readonly attribute <ref>VehicleSignalInterface</ref> defrost;
82         readonly attribute <ref>VehicleSignalInterface</ref> sunroof;
83         readonly attribute <ref>VehicleSignalInterface</ref> convertibleRoof;
84         readonly attribute <ref>VehicleSignalInterface</ref> sideWindow;
85         readonly attribute <ref>VehicleSignalInterface</ref> climateControl;
86         readonly attribute <ref>VehicleSignalInterface</ref> atmosphericPressure;
87
88         readonly attribute <ref>VehicleSignalInterface</ref> laneDepartureStatus;
89         readonly attribute <ref>VehicleSignalInterface</ref> alarm;
90         readonly attribute <ref>VehicleSignalInterface</ref> parkingBrake;
91         readonly attribute <ref>VehicleSignalInterface</ref> parkingLights;
92 };
93
94 [Callback=FunctionOnly, NoInterfaceObject]
95 interface VehicleInterfaceCallback {
96         void onsuccess(object value);
97 };
98
99 [Callback=FunctionOnly, NoInterfaceObject]
100 interface AvailableCallback {
101         void onsuccess(<ref>Availability</ref> available);
102 };
103
104 enum Availability {
105         &quot;available&quot;, &quot;not_supported&quot;, &quot;not_supported_yet&quot;, &quot;not_supported_security_policy&quot;,
106         &quot;not_supported_business_policy&quot;, &quot;not_supported_other&quot;
107 };
108
109 [NoInterfaceObject]
110 interface VehicleInterface {
111         <ref>Availability</ref> availableForRetrieval (DOMString attributeName);
112         short            availabilityChangedListener (<ref>AvailableCallback</ref> callback);
113         void         removeAvailabilityChangedListener (short handle);
114         <ref>Promise</ref>      get (optional <ref>Zone</ref> zone);
115         <ref>Promise</ref>      getHistory (Date begin, Date end, optional <ref>Zone</ref> zone);
116         readonly attribute boolean isLogged;
117         readonly attribute Date ?  from;
118         readonly attribute Date ?  to;
119         readonly attribute boolean supported;
120         readonly attribute <ref>Zone</ref>[] zones;
121 };
122
123 [NoInterfaceObject]
124 interface VehicleConfigurationInterface : <ref>VehicleInterface</ref> {};
125
126 [NoInterfaceObject]
127 interface VehicleSignalInterface : <ref>VehicleInterface</ref> {
128     <ref>Availability</ref>   availableForSubscription (DOMString attributeName);
129     <ref>Availability</ref>   availableForSetting (DOMString attributeName);
130         <ref>Promise</ref>        set (object value, optional <ref>Zone</ref> zone);
131         unsigned short subscribe (<ref>VehicleInterfaceCallback</ref> callback, optional <ref>Zone</ref> zone);
132         void           unsubscribe (unsigned short handle);
133 };
134
135 enum ZonePosition {&quot;Front&quot;, &quot;Middle&quot;, &quot;Right&quot;, &quot;Left&quot;, &quot;Rear&quot;, &quot;Center&quot;};
136
137 [NoInterfaceObject]
138 interface Zone {
139                          attribute DOMString[]  value;
140         readonly attribute <ref>Zone</ref> driver;
141         boolean equals (<ref>Zone</ref> zone);
142         boolean contains (<ref>Zone</ref> zone);
143 };
144
145 enum VehicleError {&quot;permission_denied&quot;, &quot;invalid_operation&quot;, &quot;timeout&quot;, &quot;invalid_zone&quot;, &quot;unknown&quot;};
146
147 [NoInterfaceObject]
148 interface VehicleInterfaceError {
149         readonly attribute <ref>VehicleError</ref> error;
150         readonly attribute DOMString    message;
151 };
152
153 [NoInterfaceObject]
154 interface VehicleCommonDataType {
155         readonly attribute <ref>DOMTimeStamp</ref>? timeStamp;
156 };
157
158
159 enum VehicleTypeEnum {
160         &quot;passengerCarMini&quot;, &quot;passengerCarLight&quot;, &quot;passengerCarCompact&quot;, &quot;passengerCarMedium&quot;,
161         &quot;passengerCarHeavy&quot;, &quot;sportUtilityVehicle&quot;, &quot;pickupTruck&quot;, &quot;van&quot;
162 };
163
164 [NoInterfaceObject]
165 interface Identification : <ref>VehicleCommonDataType</ref> {
166         readonly attribute DOMString?       VIN;
167         readonly attribute DOMString?       WMI;
168         readonly attribute <ref>VehicleTypeEnum</ref>? vehicleType;
169         readonly attribute DOMString?       brand;
170         readonly attribute DOMString?       model;
171         readonly attribute unsigned short?  year;
172 };
173
174 [NoInterfaceObject]
175 interface SizeConfiguration : <ref>VehicleCommonDataType</ref> {
176         readonly attribute unsigned short?   width;
177         readonly attribute unsigned short?   height;
178         readonly attribute unsigned short?   length;
179         readonly attribute unsigned short[]? doorsCount;
180         readonly attribute unsigned short?   totalDoors;
181 };
182
183 enum FuelTypeEnum {
184         &quot;gasoline&quot;, &quot;methanol&quot;, &quot;ethanol&quot;, &quot;diesel&quot;, &quot;lpg&quot;, &quot;cng&quot;, &quot;electric&quot;
185 };
186
187 [NoInterfaceObject]
188 interface FuelConfiguration : <ref>VehicleCommonDataType</ref> {
189         readonly attribute <ref>FuelTypeEnum</ref>[]? fuelType;
190         readonly attribute <ref>Zone</ref>?           refuelPosition;
191 };
192
193 enum TransmissionGearTypeEnum {&quot;auto&quot;, &quot;manual&quot;};
194
195 [NoInterfaceObject]
196 interface TransmissionConfiguration : <ref>VehicleCommonDataType</ref> {
197         readonly attribute <ref>TransmissionGearTypeEnum</ref>? transmissionGearType;
198 };
199
200 [NoInterfaceObject]
201 interface WheelConfiguration : <ref>VehicleCommonDataType</ref> {
202         readonly attribute unsigned short? wheelRadius;
203                      attribute <ref>Zone</ref>?           zone;
204 };
205
206 [NoInterfaceObject]
207 interface SteeringWheelConfiguration : <ref>VehicleCommonDataType</ref> {
208         readonly attribute boolean? steeringWheelLeft;
209 };
210
211 [NoInterfaceObject]
212 interface VehicleSpeed : <ref>VehicleCommonDataType</ref> {
213         readonly attribute unsigned short speed;
214 };
215
216 [NoInterfaceObject]
217 interface WheelSpeed : <ref>VehicleCommonDataType</ref> {
218         readonly attribute unsigned short speed;
219                      attribute <ref>Zone</ref>?          zone;
220 };
221
222 [NoInterfaceObject]
223 interface EngineSpeed : <ref>VehicleCommonDataType</ref> {
224         readonly attribute unsigned long speed;
225 };
226
227 [NoInterfaceObject]
228 interface PowerTrainTorque : <ref>VehicleCommonDataType</ref> {
229         readonly attribute short value;
230 };
231
232 [NoInterfaceObject]
233 interface AcceleratorPedalPosition : <ref>VehicleCommonDataType</ref> {
234         readonly attribute unsigned short value;
235 };
236
237 [NoInterfaceObject]
238 interface ThrottlePosition : <ref>VehicleCommonDataType</ref> {
239         readonly attribute unsigned short value;
240 };
241
242 [NoInterfaceObject]
243 interface Trip {
244         readonly attribute unsigned long   distance;
245         readonly attribute unsigned short? averageSpeed;
246         readonly attribute unsigned short? fuelConsumption;
247 };
248
249 [NoInterfaceObject]
250 interface TripMeters : <ref>VehicleCommonDataType</ref> {
251         readonly attribute <ref>Trip</ref>[] meters;
252 };
253
254 [NoInterfaceObject]
255 interface Diagnostic : <ref>VehicleCommonDataType</ref> {
256         readonly attribute unsigned long accumulatedEngineRuntime;
257         readonly attribute unsigned long distanceWithMILOn;
258         readonly attribute unsigned long distanceSinceCodeCleared;
259         readonly attribute unsigned long timeRunMILOn;
260         readonly attribute unsigned long timeTroubleCodeClear;
261 };
262
263 enum TransmissionMode {&quot;park&quot;, &quot;reverse&quot;, &quot;neutral&quot;, &quot;low&quot;, &quot;drive&quot;, &quot;overdrive&quot;};
264
265 [NoInterfaceObject]
266 interface Transmission : <ref>VehicleCommonDataType</ref> {
267         readonly attribute octet?            gear;
268         readonly attribute <ref>TransmissionMode</ref>? mode;
269 };
270
271 [NoInterfaceObject]
272 interface CruiseControlStatus : <ref>VehicleCommonDataType</ref> {
273         readonly attribute boolean        status;
274         readonly attribute unsigned short speed;
275 };
276
277 [NoInterfaceObject]
278 interface LightStatus : <ref>VehicleCommonDataType</ref> {
279         attribute boolean  head;
280         attribute boolean  rightTurn;
281         attribute boolean  leftTurn;
282         attribute boolean  brake;
283         attribute boolean? fog;
284         attribute boolean  hazard;
285         attribute boolean  parking;
286         attribute boolean  highBeam;
287         attribute boolean? automaticHeadlights;
288         attribute boolean? dynamicHighBeam;
289         attribute <ref>Zone</ref>?    zone;
290 };
291
292 [NoInterfaceObject]
293 interface InteriorLightStatus : <ref>VehicleCommonDataType</ref> {
294         attribute boolean status;
295         attribute <ref>Zone</ref>?   zone;
296 };
297
298 [NoInterfaceObject]
299 interface Horn : <ref>VehicleCommonDataType</ref> {
300         attribute boolean status;
301 };
302
303 [NoInterfaceObject]
304 interface Chime : <ref>VehicleCommonDataType</ref> {
305         readonly attribute boolean status;
306 };
307
308 [NoInterfaceObject]
309 interface Fuel : <ref>VehicleCommonDataType</ref> {
310         readonly attribute unsigned short level;
311         readonly attribute unsigned long  range;
312         readonly attribute unsigned long  instantConsumption;
313         readonly attribute unsigned long  averageConsumption;
314         readonly attribute unsigned long  fuelConsumedSinceRestart;
315         readonly attribute unsigned long  vehicleTimeSinceRestart;
316 };
317
318 [NoInterfaceObject]
319 interface EngineOil : <ref>VehicleCommonDataType</ref> {
320         readonly attribute unsigned short level;
321         readonly attribute unsigned short lifeRemaining;
322         readonly attribute long           temperature;
323         readonly attribute unsigned short pressure;
324         readonly attribute boolean        change;
325 };
326
327 [NoInterfaceObject]
328 interface Acceleration : <ref>VehicleCommonDataType</ref> {
329         readonly attribute unsigned long x;
330         readonly attribute unsigned long y;
331         readonly attribute unsigned long z;
332 };
333
334 [NoInterfaceObject]
335 interface EngineCoolant : <ref>VehicleCommonDataType</ref> {
336         readonly attribute unsigned short level;
337         readonly attribute unsigned short temperature;
338 };
339
340 [NoInterfaceObject]
341 interface SteeringWheel : <ref>VehicleCommonDataType</ref> {
342         readonly attribute short angle;
343 };
344
345 [NoInterfaceObject]
346 interface IgnitionTime : <ref>VehicleCommonDataType</ref> {
347         readonly attribute <ref>DOMTimeStamp</ref> ignitionOnTime;
348         readonly attribute <ref>DOMTimeStamp</ref> ignitionOffTime;
349 };
350
351 [NoInterfaceObject]
352 interface YawRate : <ref>VehicleCommonDataType</ref> {
353         readonly attribute short value;
354 };
355
356 [NoInterfaceObject]
357 interface BrakeOperation : <ref>VehicleCommonDataType</ref> {
358         readonly attribute boolean brakePedalDepressed;
359 };
360
361 [NoInterfaceObject]
362 interface WheelTick : <ref>VehicleCommonDataType</ref> {
363         readonly attribute unsigned long value;
364                          attribute <ref>Zone</ref>?         zone;
365 };
366
367 enum VehicleButton {
368         &quot;home&quot;, &quot;back&quot;, &quot;search&quot;, &quot;call&quot;, &quot;end_call&quot;, &quot;media_play&quot;,
369         &quot;media_next&quot;, &quot;media_previous&quot;, &quot;media_pause&quot;, &quot;voice_recognize&quot;,
370         &quot;enter&quot;, &quot;left&quot;, &quot;right&quot;, &quot;up&quot;, &quot;down&quot;
371 };
372
373 enum PressType {&quot;press&quot;, &quot;long_press&quot;, &quot;release&quot;};
374
375 [NoInterfaceObject]
376 interface ButtonEvent : <ref>VehicleCommonDataType</ref> {
377         readonly attribute <ref>VehicleButton</ref>[] button;
378         readonly attribute <ref>PressType</ref>       state;
379 };
380
381 [NoInterfaceObject]
382 interface DrivingMode : <ref>VehicleCommonDataType</ref> {
383         readonly attribute boolean mode;
384 };
385
386 [NoInterfaceObject]
387 interface NightMode : <ref>VehicleCommonDataType</ref> {
388         readonly attribute boolean mode;
389 };
390
391 [NoInterfaceObject]
392 interface Odometer : <ref>VehicleCommonDataType</ref> {
393         readonly attribute unsigned long? distanceSinceStart;
394         readonly attribute unsigned long  distanceTotal;
395 };
396
397 [NoInterfaceObject]
398 interface TransmissionOil : <ref>VehicleCommonDataType</ref> {
399         readonly attribute byte?  wear;
400         readonly attribute short? temperature;
401 };
402
403 [NoInterfaceObject]
404 interface TransmissionClutch : <ref>VehicleCommonDataType</ref> {
405         readonly attribute byte wear;
406 };
407
408 [NoInterfaceObject]
409 interface BrakeMaintenance : <ref>VehicleCommonDataType</ref> {
410         readonly attribute unsigned short? fluidLevel;
411         readonly attribute boolean?        fluidLevelLow;
412         readonly attribute byte?           padWear;
413         readonly attribute boolean?        brakesWorn;
414                          attribute <ref>Zone</ref>?           zone;
415 };
416
417 [NoInterfaceObject]
418 interface WasherFluid : <ref>VehicleCommonDataType</ref> {
419         readonly attribute unsigned short? level;
420         readonly attribute boolean?        levelLow;
421 };
422
423 [NoInterfaceObject]
424 interface MalfunctionIndicator : <ref>VehicleCommonDataType</ref> {
425         readonly attribute boolean on;
426 };
427
428 [NoInterfaceObject]
429 interface BatteryStatus : <ref>VehicleCommonDataType</ref> {
430         readonly attribute unsigned short? chargeLevel;
431         readonly attribute unsigned short? voltage;
432         readonly attribute unsigned short? current;
433                          attribute <ref>Zone</ref>?           zone;
434 };
435
436 [NoInterfaceObject]
437 interface Tire : <ref>VehicleCommonDataType</ref> {
438         readonly attribute boolean?        pressureLow;
439         readonly attribute unsigned short? pressure;
440         readonly attribute short?          temperature;
441                          attribute <ref>Zone</ref>?           zone;
442 };
443
444 [NoInterfaceObject]
445 interface Diagnostic : <ref>VehicleCommonDataType</ref> {
446         readonly attribute unsigned long accumulatedEngineRuntime;
447         readonly attribute unsigned long distanceWithMILOn;
448         readonly attribute unsigned long distanceSinceCodeCleared;
449         readonly attribute unsigned long timeRunMILOn;
450         readonly attribute unsigned long timeTroubleCodeClear;
451 };
452
453 [NoInterfaceObject]
454 interface LanguageConfiguration : <ref>VehicleCommonDataType</ref> {
455         attribute DOMString? language;
456 };
457
458 [NoInterfaceObject]
459 interface UnitsOfMeasure : <ref>VehicleCommonDataType</ref> {
460         attribute boolean?   isMKSSystem;
461         attribute DOMString? unitsFuelVolume;
462         attribute DOMString? unitsDistance;
463         attribute DOMString? unitsSpeed;
464         attribute DOMString? unitsFuelConsumption;
465 };
466
467 [NoInterfaceObject]
468 interface Mirror : <ref>VehicleCommonDataType</ref> {
469         attribute unsigned short? mirrorTilt;
470         attribute unsigned short? mirrorPan;
471         attribute <ref>Zone</ref>?           zone;
472 };
473
474 [NoInterfaceObject]
475 interface SeatAdjustment : <ref>VehicleCommonDataType</ref> {
476         attribute unsigned short? reclineSeatBack;
477         attribute unsigned short? seatSlide;
478         attribute unsigned short? seatCushionHeight;
479         attribute unsigned short? seatHeadrest;
480         attribute unsigned short? seatBackCushion;
481         attribute unsigned short? seatSideCushion;
482         attribute <ref>Zone</ref>?           zone;
483 };
484
485 enum DriveModeEnum {&quot;comfort&quot;, &quot;auto&quot;, &quot;sport&quot;, &quot;eco&quot;, &quot;manual&quot;, &quot;winter&quot;};
486
487 [NoInterfaceObject]
488 interface DriveMode : <ref>VehicleCommonDataType</ref> {
489         attribute <ref>DriveModeEnum</ref>? driveMode;
490 };
491
492 [NoInterfaceObject]
493 interface DashboardIllumination : <ref>VehicleCommonDataType</ref> {
494         attribute DOMString? dashboardIllumination;
495 };
496
497 [NoInterfaceObject]
498 interface VehicleSound : <ref>VehicleCommonDataType</ref> {
499         attribute boolean    activeNoiseControlMode;
500         attribute DOMString? engineSoundEnhancementMode;
501 };
502
503 [NoInterfaceObject]
504 interface AntilockBrakingSystem : <ref>VehicleCommonDataType</ref> {
505         readonly attribute boolean enabled;
506         readonly attribute boolean engaged;
507 };
508
509 [NoInterfaceObject]
510 interface TractionControlSystem : <ref>VehicleCommonDataType</ref> {
511         readonly attribute boolean enabled;
512         readonly attribute boolean engaged;
513 };
514
515 [NoInterfaceObject]
516 interface ElectronicStabilityControl : <ref>VehicleCommonDataType</ref> {
517         readonly attribute boolean enabled;
518         readonly attribute boolean engaged;
519 };
520
521 [NoInterfaceObject]
522 interface TopSpeedLimit : <ref>VehicleCommonDataType</ref> {
523         readonly attribute unsigned short speed;
524 };
525
526 [NoInterfaceObject]
527 interface AirbagStatus : <ref>VehicleCommonDataType</ref> {
528         readonly attribute boolean activated;
529         readonly attribute boolean deployed;
530                          attribute <ref>Zone</ref>?   zone;
531 };
532
533 enum DoorOpenStatus {&quot;open&quot;, &quot;ajar&quot;, &quot;closed&quot;};
534
535 [NoInterfaceObject]
536 interface Door : <ref>VehicleCommonDataType</ref> {
537         readonly attribute <ref>DoorOpenStatus</ref> status;
538                      attribute boolean        lock;
539                          attribute <ref>Zone</ref>?          zone;
540 };
541
542 [NoInterfaceObject]
543 interface ChildSafetyLock : <ref>VehicleCommonDataType</ref> {
544         attribute boolean lock;
545         attribute <ref>Zone</ref>?   zone;
546 };
547
548 enum OccupantStatus {&quot;adult&quot;, &quot;child&quot;, &quot;vacant&quot;};
549
550 enum IdentificationType {&quot;pin&quot;, &quot;keyfob&quot;, &quot;Bluetooth&quot;, &quot;NFC&quot;, &quot;fingerprint&quot;, &quot;camera&quot;, &quot;voice&quot;};
551
552 [NoInterfaceObject]
553 interface Seat : <ref>VehicleCommonDataType</ref> {
554         readonly attribute <ref>OccupantStatus</ref>     occupant;
555         readonly attribute boolean            seatbelt;
556         readonly attribute DOMString?         occupantName;
557         readonly attribute <ref>IdentificationType</ref> identificationType;
558                          attribute <ref>Zone</ref>?              zone;
559 };
560
561 [NoInterfaceObject]
562 interface Temperature : <ref>VehicleCommonDataType</ref> {
563         readonly attribute float interiorTemperature;
564         readonly attribute float exteriorTemperature;
565 };
566
567 [NoInterfaceObject]
568 interface RainSensor : <ref>VehicleCommonDataType</ref> {
569         readonly attribute unsigned short rain;
570                      attribute <ref>Zone</ref>?         zone;
571 };
572
573 [NoInterfaceObject]
574 interface WiperStatus : <ref>VehicleCommonDataType</ref> {
575         readonly attribute unsigned short wiperSpeed;
576                      attribute <ref>Zone</ref>?         zone;
577 };
578
579 enum WiperControl {&quot;off&quot;, &quot;once&quot;, &quot;slowest&quot;, &quot;slow&quot;, &quot;middle&quot;, &quot;fast&quot;, &quot;fastest&quot;, &quot;auto&quot;};
580
581 [NoInterfaceObject]
582 interface WiperSetting : <ref>VehicleCommonDataType</ref> {
583         attribute <ref>WiperControl</ref> wiperControl;
584         attribute <ref>Zone</ref>?        zone;
585 };
586
587 [NoInterfaceObject]
588 interface Defrost : <ref>VehicleCommonDataType</ref> {
589         attribute boolean? defrostWindow;
590         attribute boolean? defrostMirrors;
591         attribute <ref>Zone</ref>?    zone;
592 };
593
594 enum AirflowDirection {&quot;frontpanel&quot;, &quot;floorduct&quot;, &quot;bilevel&quot;, &quot;defrostfloor&quot;};
595
596 [NoInterfaceObject]
597 interface ClimateControl : <ref>VehicleCommonDataType</ref> {
598         attribute <ref>AirflowDirection</ref> airflowDirection;
599         attribute unsigned short    fanSpeedLevel;
600         attribute byte?            targetTemperature;
601         attribute boolean          airConditioning;
602         attribute boolean          heater;
603         attribute unsigned short?   seatHeater;
604         attribute unsigned short?   seatCooler;
605         attribute boolean          airRecirculation;
606         attribute unsigned short?   steeringWheelHeater;
607         attribute <ref>Zone</ref>?            zone;
608 };
609
610 [NoInterfaceObject]
611 interface Sunroof : <ref>VehicleCommonDataType</ref> {
612         attribute unsigned short openness;
613         attribute unsigned short tilt;
614         attribute <ref>Zone</ref>?         zone;
615 };
616
617 enum ConvertibleRoofStatus {&quot;closed&quot;, &quot;closing&quot;, &quot;opening&quot;, &quot;opened&quot;};
618
619 [NoInterfaceObject]
620 interface ConvertibleRoof : <ref>VehicleCommonDataType</ref> {
621         attribute <ref>ConvertibleRoofStatus</ref> status;
622 };
623
624 [NoInterfaceObject]
625 interface SideWindow : <ref>VehicleCommonDataType</ref> {
626         attribute boolean? lock;
627         attribute unsigned short?    openness;
628         attribute <ref>Zone</ref>?             zone;
629 };
630
631 [NoInterfaceObject]
632 interface AtmosphericPressure : <ref>VehicleCommonDataType</ref> {
633         readonly attribute unsigned short pressure;
634 };
635
636 enum LaneDepartureStatus {&quot;off&quot;, &quot;pause&quot;, &quot;running&quot;};
637
638 [NoInterfaceObject]
639 interface LaneDepartureDetection : <ref>VehicleCommonDataType</ref> {
640         readonly attribute <ref>LaneDepartureStatus</ref> status;
641 };
642
643 enum AlarmStatus {&quot;disarmed&quot;, &quot;preArmed&quot;, &quot;armed&quot;, &quot;alarmed&quot;};
644
645 [NoInterfaceObject]
646 interface Alarm : <ref>VehicleCommonDataType</ref> {
647         attribute <ref>AlarmStatus</ref> status;
648 };
649
650 enum ParkingBrakeStatus {&quot;inactive&quot;, &quot;active&quot;, &quot;error&quot;};
651
652 [NoInterfaceObject]
653 interface ParkingBrake : <ref>VehicleCommonDataType</ref> {
654         readonly attribute <ref>ParkingBrakeStatus</ref> status;
655 };
656
657 [NoInterfaceObject]
658 interface ParkingLights : <ref>VehicleCommonDataType</ref> {
659         readonly attribute boolean status;
660                      attribute boolean setting;
661 };};</webidl>
662   <Interface name="VehicleManagerObject" id="::VehicleManagerObject">
663     <webidl> [NoInterfaceObject]
664  interface VehicleManagerObject {
665         readonly attribute <ref>Vehicle</ref> vehicle;
666  };</webidl>
667     <ExtendedAttributeList>
668       <ExtendedAttribute name="NoInterfaceObject">
669         <webidl>NoInterfaceObject</webidl>
670       </ExtendedAttribute>
671     </ExtendedAttributeList>
672     <Attribute readonly="readonly" name="vehicle" id="::VehicleManagerObject::vehicle">
673       <webidl>        readonly attribute <ref>Vehicle</ref> vehicle;</webidl>
674       <Type name="Vehicle"/>
675     </Attribute>
676   </Interface>
677   <Implements name1="Tizen" name2="VehicleManagerObject">
678     <webidl><ref>Tizen</ref> implements <ref>VehicleManagerObject</ref>;</webidl>
679   </Implements>
680   <Interface name="Vehicle" id="::Vehicle">
681     <webidl>[NoInterfaceObject]
682 interface Vehicle {
683         readonly attribute <ref>VehicleConfigurationInterface</ref> identification;
684         readonly attribute <ref>VehicleConfigurationInterface</ref> sizeConfiguration;
685         readonly attribute <ref>VehicleConfigurationInterface</ref> fuelConfiguration;
686         readonly attribute <ref>VehicleConfigurationInterface</ref> transmissionConfiguration;
687         readonly attribute <ref>VehicleConfigurationInterface</ref> wheelConfiguration;
688         readonly attribute <ref>VehicleConfigurationInterface</ref> steeringWheelConfiguration;
689
690         readonly attribute <ref>VehicleSignalInterface</ref> vehicleSpeed;
691         readonly attribute <ref>VehicleSignalInterface</ref> wheelSpeed;
692         readonly attribute <ref>VehicleSignalInterface</ref> engineSpeed;
693         readonly attribute <ref>VehicleSignalInterface</ref> powerTrainTorque;
694         readonly attribute <ref>VehicleSignalInterface</ref> acceleratorPedalPosition;
695         readonly attribute <ref>VehicleSignalInterface</ref> throttlePosition;
696         readonly attribute <ref>VehicleSignalInterface</ref> tripMeters;
697         readonly attribute <ref>VehicleSignalInterface</ref> diagnostic;
698         readonly attribute <ref>VehicleSignalInterface</ref> transmission;
699         readonly attribute <ref>VehicleSignalInterface</ref> cruiseControlStatus;
700         readonly attribute <ref>VehicleSignalInterface</ref> lightStatus;
701         readonly attribute <ref>VehicleSignalInterface</ref> interiorLightStatus;
702         readonly attribute <ref>VehicleSignalInterface</ref> chime;
703         readonly attribute <ref>VehicleSignalInterface</ref> fuel;
704         readonly attribute <ref>VehicleSignalInterface</ref> engineOil;
705         readonly attribute <ref>VehicleSignalInterface</ref> acceleration;
706         readonly attribute <ref>VehicleSignalInterface</ref> engineCoolant;
707         readonly attribute <ref>VehicleSignalInterface</ref> steeringWheel;
708         readonly attribute <ref>VehicleSignalInterface</ref> ignitionTime;
709         readonly attribute <ref>VehicleSignalInterface</ref> yawRate;
710         readonly attribute <ref>VehicleSignalInterface</ref> brakeOperation;
711         readonly attribute <ref>VehicleSignalInterface</ref> wheelTick;
712         readonly attribute <ref>VehicleSignalInterface</ref> buttonEvent;
713         readonly attribute <ref>VehicleSignalInterface</ref> drivingMode;
714         readonly attribute <ref>VehicleSignalInterface</ref> nightMode;
715
716         readonly attribute <ref>VehicleSignalInterface</ref> odometer;
717         readonly attribute <ref>VehicleSignalInterface</ref> transmissionOil;
718         readonly attribute <ref>VehicleSignalInterface</ref> transmissionClutch;
719         readonly attribute <ref>VehicleSignalInterface</ref> brakeMaintenance;
720         readonly attribute <ref>VehicleSignalInterface</ref> washerFluid;
721         readonly attribute <ref>VehicleSignalInterface</ref> malfunctionIndicator;
722         readonly attribute <ref>VehicleSignalInterface</ref> batteryStatus;
723         readonly attribute <ref>VehicleSignalInterface</ref> tire;
724         readonly attribute <ref>VehicleInterface</ref>       diagnostic;
725
726         readonly attribute <ref>VehicleSignalInterface</ref>  driverIdentification;
727         readonly attribute <ref>VehicleSignalInterface</ref>? languageConfiguration;
728         readonly attribute <ref>VehicleSignalInterface</ref>  unitsOfMeasure;
729         readonly attribute <ref>VehicleSignalInterface</ref>  mirror;
730         readonly attribute <ref>VehicleSignalInterface</ref>  steeringWheel;
731         readonly attribute <ref>VehicleSignalInterface</ref>  driveMode;
732         readonly attribute <ref>VehicleSignalInterface</ref>  seatAdjustment;
733         readonly attribute <ref>VehicleSignalInterface</ref>  dashboardIllumination;
734         readonly attribute <ref>VehicleSignalInterface</ref>  vehicleSound;
735
736         readonly attribute <ref>VehicleSignalInterface</ref> antilockBrakingSystem;
737         readonly attribute <ref>VehicleSignalInterface</ref> tractionControlSystem;
738         readonly attribute <ref>VehicleSignalInterface</ref> electronicStabilityControl;
739         readonly attribute <ref>VehicleSignalInterface</ref> topSpeedLimit;
740         readonly attribute <ref>VehicleSignalInterface</ref> airbagStatus;
741         readonly attribute <ref>VehicleSignalInterface</ref> door;
742         readonly attribute <ref>VehicleSignalInterface</ref> childSafetyLock;
743         readonly attribute <ref>VehicleSignalInterface</ref> seat;
744
745         readonly attribute <ref>VehicleSignalInterface</ref> temperature;
746         readonly attribute <ref>VehicleSignalInterface</ref> rainSensor;
747         readonly attribute <ref>VehicleSignalInterface</ref> wiperStatus;
748         readonly attribute <ref>VehicleSignalInterface</ref> wiperSetting;
749         readonly attribute <ref>VehicleSignalInterface</ref> defrost;
750         readonly attribute <ref>VehicleSignalInterface</ref> sunroof;
751         readonly attribute <ref>VehicleSignalInterface</ref> convertibleRoof;
752         readonly attribute <ref>VehicleSignalInterface</ref> sideWindow;
753         readonly attribute <ref>VehicleSignalInterface</ref> climateControl;
754         readonly attribute <ref>VehicleSignalInterface</ref> atmosphericPressure;
755
756         readonly attribute <ref>VehicleSignalInterface</ref> laneDepartureStatus;
757         readonly attribute <ref>VehicleSignalInterface</ref> alarm;
758         readonly attribute <ref>VehicleSignalInterface</ref> parkingBrake;
759         readonly attribute <ref>VehicleSignalInterface</ref> parkingLights;
760 };</webidl>
761     <ExtendedAttributeList>
762       <ExtendedAttribute name="NoInterfaceObject">
763         <webidl>NoInterfaceObject</webidl>
764       </ExtendedAttribute>
765     </ExtendedAttributeList>
766     <Attribute readonly="readonly" name="identification" id="::Vehicle::identification">
767       <webidl>        readonly attribute <ref>VehicleConfigurationInterface</ref> identification;</webidl>
768       <Type name="VehicleConfigurationInterface"/>
769     </Attribute>
770     <Attribute readonly="readonly" name="sizeConfiguration" id="::Vehicle::sizeConfiguration">
771       <webidl>        readonly attribute <ref>VehicleConfigurationInterface</ref> sizeConfiguration;</webidl>
772       <Type name="VehicleConfigurationInterface"/>
773     </Attribute>
774     <Attribute readonly="readonly" name="fuelConfiguration" id="::Vehicle::fuelConfiguration">
775       <webidl>        readonly attribute <ref>VehicleConfigurationInterface</ref> fuelConfiguration;</webidl>
776       <Type name="VehicleConfigurationInterface"/>
777     </Attribute>
778     <Attribute readonly="readonly" name="transmissionConfiguration" id="::Vehicle::transmissionConfiguration">
779       <webidl>        readonly attribute <ref>VehicleConfigurationInterface</ref> transmissionConfiguration;</webidl>
780       <Type name="VehicleConfigurationInterface"/>
781     </Attribute>
782     <Attribute readonly="readonly" name="wheelConfiguration" id="::Vehicle::wheelConfiguration">
783       <webidl>        readonly attribute <ref>VehicleConfigurationInterface</ref> wheelConfiguration;</webidl>
784       <Type name="VehicleConfigurationInterface"/>
785     </Attribute>
786     <Attribute readonly="readonly" name="steeringWheelConfiguration" id="::Vehicle::steeringWheelConfiguration">
787       <webidl>        readonly attribute <ref>VehicleConfigurationInterface</ref> steeringWheelConfiguration;</webidl>
788       <Type name="VehicleConfigurationInterface"/>
789     </Attribute>
790     <Attribute readonly="readonly" name="vehicleSpeed" id="::Vehicle::vehicleSpeed">
791       <webidl>        readonly attribute <ref>VehicleSignalInterface</ref> vehicleSpeed;</webidl>
792       <Type name="VehicleSignalInterface"/>
793     </Attribute>
794     <Attribute readonly="readonly" name="wheelSpeed" id="::Vehicle::wheelSpeed">
795       <webidl>        readonly attribute <ref>VehicleSignalInterface</ref> wheelSpeed;</webidl>
796       <Type name="VehicleSignalInterface"/>
797     </Attribute>
798     <Attribute readonly="readonly" name="engineSpeed" id="::Vehicle::engineSpeed">
799       <webidl>        readonly attribute <ref>VehicleSignalInterface</ref> engineSpeed;</webidl>
800       <Type name="VehicleSignalInterface"/>
801     </Attribute>
802     <Attribute readonly="readonly" name="powerTrainTorque" id="::Vehicle::powerTrainTorque">
803       <webidl>        readonly attribute <ref>VehicleSignalInterface</ref> powerTrainTorque;</webidl>
804       <Type name="VehicleSignalInterface"/>
805     </Attribute>
806     <Attribute readonly="readonly" name="acceleratorPedalPosition" id="::Vehicle::acceleratorPedalPosition">
807       <webidl>        readonly attribute <ref>VehicleSignalInterface</ref> acceleratorPedalPosition;</webidl>
808       <Type name="VehicleSignalInterface"/>
809     </Attribute>
810     <Attribute readonly="readonly" name="throttlePosition" id="::Vehicle::throttlePosition">
811       <webidl>        readonly attribute <ref>VehicleSignalInterface</ref> throttlePosition;</webidl>
812       <Type name="VehicleSignalInterface"/>
813     </Attribute>
814     <Attribute readonly="readonly" name="tripMeters" id="::Vehicle::tripMeters">
815       <webidl>        readonly attribute <ref>VehicleSignalInterface</ref> tripMeters;</webidl>
816       <Type name="VehicleSignalInterface"/>
817     </Attribute>
818     <Attribute readonly="readonly" name="diagnostic" id="::Vehicle::diagnostic">
819       <webidl>        readonly attribute <ref>VehicleSignalInterface</ref> diagnostic;</webidl>
820       <Type name="VehicleSignalInterface"/>
821     </Attribute>
822     <Attribute readonly="readonly" name="transmission" id="::Vehicle::transmission">
823       <webidl>        readonly attribute <ref>VehicleSignalInterface</ref> transmission;</webidl>
824       <Type name="VehicleSignalInterface"/>
825     </Attribute>
826     <Attribute readonly="readonly" name="cruiseControlStatus" id="::Vehicle::cruiseControlStatus">
827       <webidl>        readonly attribute <ref>VehicleSignalInterface</ref> cruiseControlStatus;</webidl>
828       <Type name="VehicleSignalInterface"/>
829     </Attribute>
830     <Attribute readonly="readonly" name="lightStatus" id="::Vehicle::lightStatus">
831       <webidl>        readonly attribute <ref>VehicleSignalInterface</ref> lightStatus;</webidl>
832       <Type name="VehicleSignalInterface"/>
833     </Attribute>
834     <Attribute readonly="readonly" name="interiorLightStatus" id="::Vehicle::interiorLightStatus">
835       <webidl>        readonly attribute <ref>VehicleSignalInterface</ref> interiorLightStatus;</webidl>
836       <Type name="VehicleSignalInterface"/>
837     </Attribute>
838     <Attribute readonly="readonly" name="chime" id="::Vehicle::chime">
839       <webidl>        readonly attribute <ref>VehicleSignalInterface</ref> chime;</webidl>
840       <Type name="VehicleSignalInterface"/>
841     </Attribute>
842     <Attribute readonly="readonly" name="fuel" id="::Vehicle::fuel">
843       <webidl>        readonly attribute <ref>VehicleSignalInterface</ref> fuel;</webidl>
844       <Type name="VehicleSignalInterface"/>
845     </Attribute>
846     <Attribute readonly="readonly" name="engineOil" id="::Vehicle::engineOil">
847       <webidl>        readonly attribute <ref>VehicleSignalInterface</ref> engineOil;</webidl>
848       <Type name="VehicleSignalInterface"/>
849     </Attribute>
850     <Attribute readonly="readonly" name="acceleration" id="::Vehicle::acceleration">
851       <webidl>        readonly attribute <ref>VehicleSignalInterface</ref> acceleration;</webidl>
852       <Type name="VehicleSignalInterface"/>
853     </Attribute>
854     <Attribute readonly="readonly" name="engineCoolant" id="::Vehicle::engineCoolant">
855       <webidl>        readonly attribute <ref>VehicleSignalInterface</ref> engineCoolant;</webidl>
856       <Type name="VehicleSignalInterface"/>
857     </Attribute>
858     <Attribute readonly="readonly" name="steeringWheel" id="::Vehicle::steeringWheel">
859       <webidl>        readonly attribute <ref>VehicleSignalInterface</ref> steeringWheel;</webidl>
860       <Type name="VehicleSignalInterface"/>
861     </Attribute>
862     <Attribute readonly="readonly" name="ignitionTime" id="::Vehicle::ignitionTime">
863       <webidl>        readonly attribute <ref>VehicleSignalInterface</ref> ignitionTime;</webidl>
864       <Type name="VehicleSignalInterface"/>
865     </Attribute>
866     <Attribute readonly="readonly" name="yawRate" id="::Vehicle::yawRate">
867       <webidl>        readonly attribute <ref>VehicleSignalInterface</ref> yawRate;</webidl>
868       <Type name="VehicleSignalInterface"/>
869     </Attribute>
870     <Attribute readonly="readonly" name="brakeOperation" id="::Vehicle::brakeOperation">
871       <webidl>        readonly attribute <ref>VehicleSignalInterface</ref> brakeOperation;</webidl>
872       <Type name="VehicleSignalInterface"/>
873     </Attribute>
874     <Attribute readonly="readonly" name="wheelTick" id="::Vehicle::wheelTick">
875       <webidl>        readonly attribute <ref>VehicleSignalInterface</ref> wheelTick;</webidl>
876       <Type name="VehicleSignalInterface"/>
877     </Attribute>
878     <Attribute readonly="readonly" name="buttonEvent" id="::Vehicle::buttonEvent">
879       <webidl>        readonly attribute <ref>VehicleSignalInterface</ref> buttonEvent;</webidl>
880       <Type name="VehicleSignalInterface"/>
881     </Attribute>
882     <Attribute readonly="readonly" name="drivingMode" id="::Vehicle::drivingMode">
883       <webidl>        readonly attribute <ref>VehicleSignalInterface</ref> drivingMode;</webidl>
884       <Type name="VehicleSignalInterface"/>
885     </Attribute>
886     <Attribute readonly="readonly" name="nightMode" id="::Vehicle::nightMode">
887       <webidl>        readonly attribute <ref>VehicleSignalInterface</ref> nightMode;</webidl>
888       <Type name="VehicleSignalInterface"/>
889     </Attribute>
890     <Attribute readonly="readonly" name="odometer" id="::Vehicle::odometer">
891       <webidl>        readonly attribute <ref>VehicleSignalInterface</ref> odometer;</webidl>
892       <Type name="VehicleSignalInterface"/>
893     </Attribute>
894     <Attribute readonly="readonly" name="transmissionOil" id="::Vehicle::transmissionOil">
895       <webidl>        readonly attribute <ref>VehicleSignalInterface</ref> transmissionOil;</webidl>
896       <Type name="VehicleSignalInterface"/>
897     </Attribute>
898     <Attribute readonly="readonly" name="transmissionClutch" id="::Vehicle::transmissionClutch">
899       <webidl>        readonly attribute <ref>VehicleSignalInterface</ref> transmissionClutch;</webidl>
900       <Type name="VehicleSignalInterface"/>
901     </Attribute>
902     <Attribute readonly="readonly" name="brakeMaintenance" id="::Vehicle::brakeMaintenance">
903       <webidl>        readonly attribute <ref>VehicleSignalInterface</ref> brakeMaintenance;</webidl>
904       <Type name="VehicleSignalInterface"/>
905     </Attribute>
906     <Attribute readonly="readonly" name="washerFluid" id="::Vehicle::washerFluid">
907       <webidl>        readonly attribute <ref>VehicleSignalInterface</ref> washerFluid;</webidl>
908       <Type name="VehicleSignalInterface"/>
909     </Attribute>
910     <Attribute readonly="readonly" name="malfunctionIndicator" id="::Vehicle::malfunctionIndicator">
911       <webidl>        readonly attribute <ref>VehicleSignalInterface</ref> malfunctionIndicator;</webidl>
912       <Type name="VehicleSignalInterface"/>
913     </Attribute>
914     <Attribute readonly="readonly" name="batteryStatus" id="::Vehicle::batteryStatus">
915       <webidl>        readonly attribute <ref>VehicleSignalInterface</ref> batteryStatus;</webidl>
916       <Type name="VehicleSignalInterface"/>
917     </Attribute>
918     <Attribute readonly="readonly" name="tire" id="::Vehicle::tire">
919       <webidl>        readonly attribute <ref>VehicleSignalInterface</ref> tire;</webidl>
920       <Type name="VehicleSignalInterface"/>
921     </Attribute>
922     <Attribute readonly="readonly" name="diagnostic" id="::Vehicle::diagnostic">
923       <webidl>        readonly attribute <ref>VehicleInterface</ref>       diagnostic;</webidl>
924       <Type name="VehicleInterface"/>
925     </Attribute>
926     <Attribute readonly="readonly" name="driverIdentification" id="::Vehicle::driverIdentification">
927       <webidl>        readonly attribute <ref>VehicleSignalInterface</ref>  driverIdentification;</webidl>
928       <Type name="VehicleSignalInterface"/>
929     </Attribute>
930     <Attribute readonly="readonly" name="languageConfiguration" id="::Vehicle::languageConfiguration">
931       <webidl>        readonly attribute <ref>VehicleSignalInterface</ref>? languageConfiguration;</webidl>
932       <Type name="VehicleSignalInterface" nullable="nullable"/>
933     </Attribute>
934     <Attribute readonly="readonly" name="unitsOfMeasure" id="::Vehicle::unitsOfMeasure">
935       <webidl>        readonly attribute <ref>VehicleSignalInterface</ref>  unitsOfMeasure;</webidl>
936       <Type name="VehicleSignalInterface"/>
937     </Attribute>
938     <Attribute readonly="readonly" name="mirror" id="::Vehicle::mirror">
939       <webidl>        readonly attribute <ref>VehicleSignalInterface</ref>  mirror;</webidl>
940       <Type name="VehicleSignalInterface"/>
941     </Attribute>
942     <Attribute readonly="readonly" name="steeringWheel" id="::Vehicle::steeringWheel">
943       <webidl>        readonly attribute <ref>VehicleSignalInterface</ref>  steeringWheel;</webidl>
944       <Type name="VehicleSignalInterface"/>
945     </Attribute>
946     <Attribute readonly="readonly" name="driveMode" id="::Vehicle::driveMode">
947       <webidl>        readonly attribute <ref>VehicleSignalInterface</ref>  driveMode;</webidl>
948       <Type name="VehicleSignalInterface"/>
949     </Attribute>
950     <Attribute readonly="readonly" name="seatAdjustment" id="::Vehicle::seatAdjustment">
951       <webidl>        readonly attribute <ref>VehicleSignalInterface</ref>  seatAdjustment;</webidl>
952       <Type name="VehicleSignalInterface"/>
953     </Attribute>
954     <Attribute readonly="readonly" name="dashboardIllumination" id="::Vehicle::dashboardIllumination">
955       <webidl>        readonly attribute <ref>VehicleSignalInterface</ref>  dashboardIllumination;</webidl>
956       <Type name="VehicleSignalInterface"/>
957     </Attribute>
958     <Attribute readonly="readonly" name="vehicleSound" id="::Vehicle::vehicleSound">
959       <webidl>        readonly attribute <ref>VehicleSignalInterface</ref>  vehicleSound;</webidl>
960       <Type name="VehicleSignalInterface"/>
961     </Attribute>
962     <Attribute readonly="readonly" name="antilockBrakingSystem" id="::Vehicle::antilockBrakingSystem">
963       <webidl>        readonly attribute <ref>VehicleSignalInterface</ref> antilockBrakingSystem;</webidl>
964       <Type name="VehicleSignalInterface"/>
965     </Attribute>
966     <Attribute readonly="readonly" name="tractionControlSystem" id="::Vehicle::tractionControlSystem">
967       <webidl>        readonly attribute <ref>VehicleSignalInterface</ref> tractionControlSystem;</webidl>
968       <Type name="VehicleSignalInterface"/>
969     </Attribute>
970     <Attribute readonly="readonly" name="electronicStabilityControl" id="::Vehicle::electronicStabilityControl">
971       <webidl>        readonly attribute <ref>VehicleSignalInterface</ref> electronicStabilityControl;</webidl>
972       <Type name="VehicleSignalInterface"/>
973     </Attribute>
974     <Attribute readonly="readonly" name="topSpeedLimit" id="::Vehicle::topSpeedLimit">
975       <webidl>        readonly attribute <ref>VehicleSignalInterface</ref> topSpeedLimit;</webidl>
976       <Type name="VehicleSignalInterface"/>
977     </Attribute>
978     <Attribute readonly="readonly" name="airbagStatus" id="::Vehicle::airbagStatus">
979       <webidl>        readonly attribute <ref>VehicleSignalInterface</ref> airbagStatus;</webidl>
980       <Type name="VehicleSignalInterface"/>
981     </Attribute>
982     <Attribute readonly="readonly" name="door" id="::Vehicle::door">
983       <webidl>        readonly attribute <ref>VehicleSignalInterface</ref> door;</webidl>
984       <Type name="VehicleSignalInterface"/>
985     </Attribute>
986     <Attribute readonly="readonly" name="childSafetyLock" id="::Vehicle::childSafetyLock">
987       <webidl>        readonly attribute <ref>VehicleSignalInterface</ref> childSafetyLock;</webidl>
988       <Type name="VehicleSignalInterface"/>
989     </Attribute>
990     <Attribute readonly="readonly" name="seat" id="::Vehicle::seat">
991       <webidl>        readonly attribute <ref>VehicleSignalInterface</ref> seat;</webidl>
992       <Type name="VehicleSignalInterface"/>
993     </Attribute>
994     <Attribute readonly="readonly" name="temperature" id="::Vehicle::temperature">
995       <webidl>        readonly attribute <ref>VehicleSignalInterface</ref> temperature;</webidl>
996       <Type name="VehicleSignalInterface"/>
997     </Attribute>
998     <Attribute readonly="readonly" name="rainSensor" id="::Vehicle::rainSensor">
999       <webidl>        readonly attribute <ref>VehicleSignalInterface</ref> rainSensor;</webidl>
1000       <Type name="VehicleSignalInterface"/>
1001     </Attribute>
1002     <Attribute readonly="readonly" name="wiperStatus" id="::Vehicle::wiperStatus">
1003       <webidl>        readonly attribute <ref>VehicleSignalInterface</ref> wiperStatus;</webidl>
1004       <Type name="VehicleSignalInterface"/>
1005     </Attribute>
1006     <Attribute readonly="readonly" name="wiperSetting" id="::Vehicle::wiperSetting">
1007       <webidl>        readonly attribute <ref>VehicleSignalInterface</ref> wiperSetting;</webidl>
1008       <Type name="VehicleSignalInterface"/>
1009     </Attribute>
1010     <Attribute readonly="readonly" name="defrost" id="::Vehicle::defrost">
1011       <webidl>        readonly attribute <ref>VehicleSignalInterface</ref> defrost;</webidl>
1012       <Type name="VehicleSignalInterface"/>
1013     </Attribute>
1014     <Attribute readonly="readonly" name="sunroof" id="::Vehicle::sunroof">
1015       <webidl>        readonly attribute <ref>VehicleSignalInterface</ref> sunroof;</webidl>
1016       <Type name="VehicleSignalInterface"/>
1017     </Attribute>
1018     <Attribute readonly="readonly" name="convertibleRoof" id="::Vehicle::convertibleRoof">
1019       <webidl>        readonly attribute <ref>VehicleSignalInterface</ref> convertibleRoof;</webidl>
1020       <Type name="VehicleSignalInterface"/>
1021     </Attribute>
1022     <Attribute readonly="readonly" name="sideWindow" id="::Vehicle::sideWindow">
1023       <webidl>        readonly attribute <ref>VehicleSignalInterface</ref> sideWindow;</webidl>
1024       <Type name="VehicleSignalInterface"/>
1025     </Attribute>
1026     <Attribute readonly="readonly" name="climateControl" id="::Vehicle::climateControl">
1027       <webidl>        readonly attribute <ref>VehicleSignalInterface</ref> climateControl;</webidl>
1028       <Type name="VehicleSignalInterface"/>
1029     </Attribute>
1030     <Attribute readonly="readonly" name="atmosphericPressure" id="::Vehicle::atmosphericPressure">
1031       <webidl>        readonly attribute <ref>VehicleSignalInterface</ref> atmosphericPressure;</webidl>
1032       <Type name="VehicleSignalInterface"/>
1033     </Attribute>
1034     <Attribute readonly="readonly" name="laneDepartureStatus" id="::Vehicle::laneDepartureStatus">
1035       <webidl>        readonly attribute <ref>VehicleSignalInterface</ref> laneDepartureStatus;</webidl>
1036       <Type name="VehicleSignalInterface"/>
1037     </Attribute>
1038     <Attribute readonly="readonly" name="alarm" id="::Vehicle::alarm">
1039       <webidl>        readonly attribute <ref>VehicleSignalInterface</ref> alarm;</webidl>
1040       <Type name="VehicleSignalInterface"/>
1041     </Attribute>
1042     <Attribute readonly="readonly" name="parkingBrake" id="::Vehicle::parkingBrake">
1043       <webidl>        readonly attribute <ref>VehicleSignalInterface</ref> parkingBrake;</webidl>
1044       <Type name="VehicleSignalInterface"/>
1045     </Attribute>
1046     <Attribute readonly="readonly" name="parkingLights" id="::Vehicle::parkingLights">
1047       <webidl>        readonly attribute <ref>VehicleSignalInterface</ref> parkingLights;</webidl>
1048       <Type name="VehicleSignalInterface"/>
1049     </Attribute>
1050   </Interface>
1051   <Interface name="VehicleInterfaceCallback" id="::VehicleInterfaceCallback">
1052     <webidl>[Callback=FunctionOnly, NoInterfaceObject]
1053 interface VehicleInterfaceCallback {
1054         void onsuccess(object value);
1055 };</webidl>
1056     <ExtendedAttributeList>
1057       <ExtendedAttribute name="Callback" value="FunctionOnly">
1058         <webidl>Callback</webidl>
1059       </ExtendedAttribute>
1060       <ExtendedAttribute name="NoInterfaceObject">
1061         <webidl> NoInterfaceObject</webidl>
1062       </ExtendedAttribute>
1063     </ExtendedAttributeList>
1064     <Operation name="onsuccess" id="::VehicleInterfaceCallback::onsuccess">
1065       <webidl>        void onsuccess(object value);</webidl>
1066       <Type type="void"/>
1067       <ArgumentList>
1068         <Argument name="value">
1069           <Type type="object"/>
1070         </Argument>
1071       </ArgumentList>
1072     </Operation>
1073   </Interface>
1074   <Interface name="AvailableCallback" id="::AvailableCallback">
1075     <webidl>[Callback=FunctionOnly, NoInterfaceObject]
1076 interface AvailableCallback {
1077         void onsuccess(<ref>Availability</ref> available);
1078 };</webidl>
1079     <ExtendedAttributeList>
1080       <ExtendedAttribute name="Callback" value="FunctionOnly">
1081         <webidl>Callback</webidl>
1082       </ExtendedAttribute>
1083       <ExtendedAttribute name="NoInterfaceObject">
1084         <webidl> NoInterfaceObject</webidl>
1085       </ExtendedAttribute>
1086     </ExtendedAttributeList>
1087     <Operation name="onsuccess" id="::AvailableCallback::onsuccess">
1088       <webidl>        void onsuccess(<ref>Availability</ref> available);</webidl>
1089       <Type type="void"/>
1090       <ArgumentList>
1091         <Argument name="available">
1092           <Type name="Availability"/>
1093         </Argument>
1094       </ArgumentList>
1095     </Operation>
1096   </Interface>
1097   <Enum name="Availability" id="::Availability">
1098     <webidl>enum Availability {
1099         &quot;available&quot;, &quot;not_supported&quot;, &quot;not_supported_yet&quot;, &quot;not_supported_security_policy&quot;,
1100         &quot;not_supported_business_policy&quot;, &quot;not_supported_other&quot;
1101 };</webidl>
1102     <EnumValue stringvalue="available">
1103       <webidl>        &quot;available</webidl>
1104     </EnumValue>
1105     <EnumValue stringvalue="not_supported">
1106       <webidl> &quot;not_supported</webidl>
1107     </EnumValue>
1108     <EnumValue stringvalue="not_supported_yet">
1109       <webidl> &quot;not_supported_yet</webidl>
1110     </EnumValue>
1111     <EnumValue stringvalue="not_supported_security_policy">
1112       <webidl> &quot;not_supported_security_policy</webidl>
1113     </EnumValue>
1114     <EnumValue stringvalue="not_supported_business_policy">
1115       <webidl>        &quot;not_supported_business_policy</webidl>
1116     </EnumValue>
1117     <EnumValue stringvalue="not_supported_other">
1118       <webidl> &quot;not_supported_other</webidl>
1119     </EnumValue>
1120   </Enum>
1121   <Interface name="VehicleInterface" id="::VehicleInterface">
1122     <webidl>[NoInterfaceObject]
1123 interface VehicleInterface {
1124         <ref>Availability</ref> availableForRetrieval (DOMString attributeName);
1125         short            availabilityChangedListener (<ref>AvailableCallback</ref> callback);
1126         void         removeAvailabilityChangedListener (short handle);
1127         <ref>Promise</ref>      get (optional <ref>Zone</ref> zone);
1128         <ref>Promise</ref>      getHistory (Date begin, Date end, optional <ref>Zone</ref> zone);
1129         readonly attribute boolean isLogged;
1130         readonly attribute Date ?  from;
1131         readonly attribute Date ?  to;
1132         readonly attribute boolean supported;
1133         readonly attribute <ref>Zone</ref>[] zones;
1134 };</webidl>
1135     <ExtendedAttributeList>
1136       <ExtendedAttribute name="NoInterfaceObject">
1137         <webidl>NoInterfaceObject</webidl>
1138       </ExtendedAttribute>
1139     </ExtendedAttributeList>
1140     <Operation name="availableForRetrieval" id="::VehicleInterface::availableForRetrieval">
1141       <webidl>        <ref>Availability</ref> availableForRetrieval (DOMString attributeName);</webidl>
1142       <Type name="Availability"/>
1143       <ArgumentList>
1144         <Argument name="attributeName">
1145           <Type type="DOMString"/>
1146         </Argument>
1147       </ArgumentList>
1148     </Operation>
1149     <Operation name="availabilityChangedListener" id="::VehicleInterface::availabilityChangedListener">
1150       <webidl>        short            availabilityChangedListener (<ref>AvailableCallback</ref> callback);</webidl>
1151       <Type type="short"/>
1152       <ArgumentList>
1153         <Argument name="callback">
1154           <Type name="AvailableCallback"/>
1155         </Argument>
1156       </ArgumentList>
1157     </Operation>
1158     <Operation name="removeAvailabilityChangedListener" id="::VehicleInterface::removeAvailabilityChangedListener">
1159       <webidl>        void         removeAvailabilityChangedListener (short handle);</webidl>
1160       <Type type="void"/>
1161       <ArgumentList>
1162         <Argument name="handle">
1163           <Type type="short"/>
1164         </Argument>
1165       </ArgumentList>
1166     </Operation>
1167     <Operation name="get" id="::VehicleInterface::get">
1168       <webidl>        <ref>Promise</ref>      get (optional <ref>Zone</ref> zone);</webidl>
1169       <Type name="Promise"/>
1170       <ArgumentList>
1171         <Argument optional="optional" name="zone">
1172           <Type name="Zone"/>
1173         </Argument>
1174       </ArgumentList>
1175     </Operation>
1176     <Operation name="getHistory" id="::VehicleInterface::getHistory">
1177       <webidl>        <ref>Promise</ref>      getHistory (Date begin, Date end, optional <ref>Zone</ref> zone);</webidl>
1178       <Type name="Promise"/>
1179       <ArgumentList>
1180         <Argument name="begin">
1181           <Type type="Date"/>
1182         </Argument>
1183         <Argument name="end">
1184           <Type type="Date"/>
1185         </Argument>
1186         <Argument optional="optional" name="zone">
1187           <Type name="Zone"/>
1188         </Argument>
1189       </ArgumentList>
1190     </Operation>
1191     <Attribute readonly="readonly" name="isLogged" id="::VehicleInterface::isLogged">
1192       <webidl>        readonly attribute boolean isLogged;</webidl>
1193       <Type type="boolean"/>
1194     </Attribute>
1195     <Attribute readonly="readonly" name="from" id="::VehicleInterface::from">
1196       <webidl>        readonly attribute Date ?  from;</webidl>
1197       <Type type="Date" nullable="nullable"/>
1198     </Attribute>
1199     <Attribute readonly="readonly" name="to" id="::VehicleInterface::to">
1200       <webidl>        readonly attribute Date ?  to;</webidl>
1201       <Type type="Date" nullable="nullable"/>
1202     </Attribute>
1203     <Attribute readonly="readonly" name="supported" id="::VehicleInterface::supported">
1204       <webidl>        readonly attribute boolean supported;</webidl>
1205       <Type type="boolean"/>
1206     </Attribute>
1207     <Attribute readonly="readonly" name="zones" id="::VehicleInterface::zones">
1208       <webidl>        readonly attribute <ref>Zone</ref>[] zones;</webidl>
1209       <Type type="array">
1210         <Type name="Zone"/>
1211       </Type>
1212     </Attribute>
1213   </Interface>
1214   <Interface name="VehicleConfigurationInterface" id="::VehicleConfigurationInterface">
1215     <webidl>[NoInterfaceObject]
1216 interface VehicleConfigurationInterface : <ref>VehicleInterface</ref> {};</webidl>
1217     <ExtendedAttributeList>
1218       <ExtendedAttribute name="NoInterfaceObject">
1219         <webidl>NoInterfaceObject</webidl>
1220       </ExtendedAttribute>
1221     </ExtendedAttributeList>
1222     <InterfaceInheritance>
1223       <Name name="VehicleInterface"/>
1224     </InterfaceInheritance>
1225   </Interface>
1226   <Interface name="VehicleSignalInterface" id="::VehicleSignalInterface">
1227     <webidl>[NoInterfaceObject]
1228 interface VehicleSignalInterface : <ref>VehicleInterface</ref> {
1229     <ref>Availability</ref>   availableForSubscription (DOMString attributeName);
1230     <ref>Availability</ref>   availableForSetting (DOMString attributeName);
1231         <ref>Promise</ref>        set (object value, optional <ref>Zone</ref> zone);
1232         unsigned short subscribe (<ref>VehicleInterfaceCallback</ref> callback, optional <ref>Zone</ref> zone);
1233         void           unsubscribe (unsigned short handle);
1234 };</webidl>
1235     <ExtendedAttributeList>
1236       <ExtendedAttribute name="NoInterfaceObject">
1237         <webidl>NoInterfaceObject</webidl>
1238       </ExtendedAttribute>
1239     </ExtendedAttributeList>
1240     <InterfaceInheritance>
1241       <Name name="VehicleInterface"/>
1242     </InterfaceInheritance>
1243     <Operation name="availableForSubscription" id="::VehicleSignalInterface::availableForSubscription">
1244       <webidl>    <ref>Availability</ref>   availableForSubscription (DOMString attributeName);</webidl>
1245       <Type name="Availability"/>
1246       <ArgumentList>
1247         <Argument name="attributeName">
1248           <Type type="DOMString"/>
1249         </Argument>
1250       </ArgumentList>
1251     </Operation>
1252     <Operation name="availableForSetting" id="::VehicleSignalInterface::availableForSetting">
1253       <webidl>    <ref>Availability</ref>   availableForSetting (DOMString attributeName);</webidl>
1254       <Type name="Availability"/>
1255       <ArgumentList>
1256         <Argument name="attributeName">
1257           <Type type="DOMString"/>
1258         </Argument>
1259       </ArgumentList>
1260     </Operation>
1261     <Operation name="set" id="::VehicleSignalInterface::set">
1262       <webidl>        <ref>Promise</ref>        set (object value, optional <ref>Zone</ref> zone);</webidl>
1263       <Type name="Promise"/>
1264       <ArgumentList>
1265         <Argument name="value">
1266           <Type type="object"/>
1267         </Argument>
1268         <Argument optional="optional" name="zone">
1269           <Type name="Zone"/>
1270         </Argument>
1271       </ArgumentList>
1272     </Operation>
1273     <Operation name="subscribe" id="::VehicleSignalInterface::subscribe">
1274       <webidl>        unsigned short subscribe (<ref>VehicleInterfaceCallback</ref> callback, optional <ref>Zone</ref> zone);</webidl>
1275       <Type type="unsigned short"/>
1276       <ArgumentList>
1277         <Argument name="callback">
1278           <Type name="VehicleInterfaceCallback"/>
1279         </Argument>
1280         <Argument optional="optional" name="zone">
1281           <Type name="Zone"/>
1282         </Argument>
1283       </ArgumentList>
1284     </Operation>
1285     <Operation name="unsubscribe" id="::VehicleSignalInterface::unsubscribe">
1286       <webidl>        void           unsubscribe (unsigned short handle);</webidl>
1287       <Type type="void"/>
1288       <ArgumentList>
1289         <Argument name="handle">
1290           <Type type="unsigned short"/>
1291         </Argument>
1292       </ArgumentList>
1293     </Operation>
1294   </Interface>
1295   <Enum name="ZonePosition" id="::ZonePosition">
1296     <webidl>enum ZonePosition {&quot;Front&quot;, &quot;Middle&quot;, &quot;Right&quot;, &quot;Left&quot;, &quot;Rear&quot;, &quot;Center&quot;};</webidl>
1297     <EnumValue stringvalue="Front">
1298       <webidl>&quot;Front</webidl>
1299     </EnumValue>
1300     <EnumValue stringvalue="Middle">
1301       <webidl> &quot;Middle</webidl>
1302     </EnumValue>
1303     <EnumValue stringvalue="Right">
1304       <webidl> &quot;Right</webidl>
1305     </EnumValue>
1306     <EnumValue stringvalue="Left">
1307       <webidl> &quot;Left</webidl>
1308     </EnumValue>
1309     <EnumValue stringvalue="Rear">
1310       <webidl> &quot;Rear</webidl>
1311     </EnumValue>
1312     <EnumValue stringvalue="Center">
1313       <webidl> &quot;Center</webidl>
1314     </EnumValue>
1315   </Enum>
1316   <Interface name="Zone" id="::Zone">
1317     <webidl>[NoInterfaceObject]
1318 interface Zone {
1319                          attribute DOMString[]  value;
1320         readonly attribute <ref>Zone</ref> driver;
1321         boolean equals (<ref>Zone</ref> zone);
1322         boolean contains (<ref>Zone</ref> zone);
1323 };</webidl>
1324     <ExtendedAttributeList>
1325       <ExtendedAttribute name="NoInterfaceObject">
1326         <webidl>NoInterfaceObject</webidl>
1327       </ExtendedAttribute>
1328     </ExtendedAttributeList>
1329     <Attribute name="value" id="::Zone::value">
1330       <webidl>                         attribute DOMString[]  value;</webidl>
1331       <Type type="array">
1332         <Type type="DOMString"/>
1333       </Type>
1334     </Attribute>
1335     <Attribute readonly="readonly" name="driver" id="::Zone::driver">
1336       <webidl>        readonly attribute <ref>Zone</ref> driver;</webidl>
1337       <Type name="Zone"/>
1338     </Attribute>
1339     <Operation name="equals" id="::Zone::equals">
1340       <webidl>        boolean equals (<ref>Zone</ref> zone);</webidl>
1341       <Type type="boolean"/>
1342       <ArgumentList>
1343         <Argument name="zone">
1344           <Type name="Zone"/>
1345         </Argument>
1346       </ArgumentList>
1347     </Operation>
1348     <Operation name="contains" id="::Zone::contains">
1349       <webidl>        boolean contains (<ref>Zone</ref> zone);</webidl>
1350       <Type type="boolean"/>
1351       <ArgumentList>
1352         <Argument name="zone">
1353           <Type name="Zone"/>
1354         </Argument>
1355       </ArgumentList>
1356     </Operation>
1357   </Interface>
1358   <Enum name="VehicleError" id="::VehicleError">
1359     <webidl>enum VehicleError {&quot;permission_denied&quot;, &quot;invalid_operation&quot;, &quot;timeout&quot;, &quot;invalid_zone&quot;, &quot;unknown&quot;};</webidl>
1360     <EnumValue stringvalue="permission_denied">
1361       <webidl>&quot;permission_denied</webidl>
1362     </EnumValue>
1363     <EnumValue stringvalue="invalid_operation">
1364       <webidl> &quot;invalid_operation</webidl>
1365     </EnumValue>
1366     <EnumValue stringvalue="timeout">
1367       <webidl> &quot;timeout</webidl>
1368     </EnumValue>
1369     <EnumValue stringvalue="invalid_zone">
1370       <webidl> &quot;invalid_zone</webidl>
1371     </EnumValue>
1372     <EnumValue stringvalue="unknown">
1373       <webidl> &quot;unknown</webidl>
1374     </EnumValue>
1375   </Enum>
1376   <Interface name="VehicleInterfaceError" id="::VehicleInterfaceError">
1377     <webidl>[NoInterfaceObject]
1378 interface VehicleInterfaceError {
1379         readonly attribute <ref>VehicleError</ref> error;
1380         readonly attribute DOMString    message;
1381 };</webidl>
1382     <ExtendedAttributeList>
1383       <ExtendedAttribute name="NoInterfaceObject">
1384         <webidl>NoInterfaceObject</webidl>
1385       </ExtendedAttribute>
1386     </ExtendedAttributeList>
1387     <Attribute readonly="readonly" name="error" id="::VehicleInterfaceError::error">
1388       <webidl>        readonly attribute <ref>VehicleError</ref> error;</webidl>
1389       <Type name="VehicleError"/>
1390     </Attribute>
1391     <Attribute readonly="readonly" name="message" id="::VehicleInterfaceError::message">
1392       <webidl>        readonly attribute DOMString    message;</webidl>
1393       <Type type="DOMString"/>
1394     </Attribute>
1395   </Interface>
1396   <Interface name="VehicleCommonDataType" id="::VehicleCommonDataType">
1397     <webidl>[NoInterfaceObject]
1398 interface VehicleCommonDataType {
1399         readonly attribute <ref>DOMTimeStamp</ref>? timeStamp;
1400 };</webidl>
1401     <ExtendedAttributeList>
1402       <ExtendedAttribute name="NoInterfaceObject">
1403         <webidl>NoInterfaceObject</webidl>
1404       </ExtendedAttribute>
1405     </ExtendedAttributeList>
1406     <Attribute readonly="readonly" name="timeStamp" id="::VehicleCommonDataType::timeStamp">
1407       <webidl>        readonly attribute <ref>DOMTimeStamp</ref>? timeStamp;</webidl>
1408       <Type name="DOMTimeStamp" nullable="nullable"/>
1409     </Attribute>
1410   </Interface>
1411   <Enum name="VehicleTypeEnum" id="::VehicleTypeEnum">
1412     <webidl>enum VehicleTypeEnum {
1413         &quot;passengerCarMini&quot;, &quot;passengerCarLight&quot;, &quot;passengerCarCompact&quot;, &quot;passengerCarMedium&quot;,
1414         &quot;passengerCarHeavy&quot;, &quot;sportUtilityVehicle&quot;, &quot;pickupTruck&quot;, &quot;van&quot;
1415 };</webidl>
1416     <EnumValue stringvalue="passengerCarMini">
1417       <webidl>        &quot;passengerCarMini</webidl>
1418     </EnumValue>
1419     <EnumValue stringvalue="passengerCarLight">
1420       <webidl> &quot;passengerCarLight</webidl>
1421     </EnumValue>
1422     <EnumValue stringvalue="passengerCarCompact">
1423       <webidl> &quot;passengerCarCompact</webidl>
1424     </EnumValue>
1425     <EnumValue stringvalue="passengerCarMedium">
1426       <webidl> &quot;passengerCarMedium</webidl>
1427     </EnumValue>
1428     <EnumValue stringvalue="passengerCarHeavy">
1429       <webidl>        &quot;passengerCarHeavy</webidl>
1430     </EnumValue>
1431     <EnumValue stringvalue="sportUtilityVehicle">
1432       <webidl> &quot;sportUtilityVehicle</webidl>
1433     </EnumValue>
1434     <EnumValue stringvalue="pickupTruck">
1435       <webidl> &quot;pickupTruck</webidl>
1436     </EnumValue>
1437     <EnumValue stringvalue="van">
1438       <webidl> &quot;van</webidl>
1439     </EnumValue>
1440   </Enum>
1441   <Interface name="Identification" id="::Identification">
1442     <webidl>[NoInterfaceObject]
1443 interface Identification : <ref>VehicleCommonDataType</ref> {
1444         readonly attribute DOMString?       VIN;
1445         readonly attribute DOMString?       WMI;
1446         readonly attribute <ref>VehicleTypeEnum</ref>? vehicleType;
1447         readonly attribute DOMString?       brand;
1448         readonly attribute DOMString?       model;
1449         readonly attribute unsigned short?  year;
1450 };</webidl>
1451     <ExtendedAttributeList>
1452       <ExtendedAttribute name="NoInterfaceObject">
1453         <webidl>NoInterfaceObject</webidl>
1454       </ExtendedAttribute>
1455     </ExtendedAttributeList>
1456     <InterfaceInheritance>
1457       <Name name="VehicleCommonDataType"/>
1458     </InterfaceInheritance>
1459     <Attribute readonly="readonly" name="VIN" id="::Identification::VIN">
1460       <webidl>        readonly attribute DOMString?       VIN;</webidl>
1461       <Type type="DOMString" nullable="nullable"/>
1462     </Attribute>
1463     <Attribute readonly="readonly" name="WMI" id="::Identification::WMI">
1464       <webidl>        readonly attribute DOMString?       WMI;</webidl>
1465       <Type type="DOMString" nullable="nullable"/>
1466     </Attribute>
1467     <Attribute readonly="readonly" name="vehicleType" id="::Identification::vehicleType">
1468       <webidl>        readonly attribute <ref>VehicleTypeEnum</ref>? vehicleType;</webidl>
1469       <Type name="VehicleTypeEnum" nullable="nullable"/>
1470     </Attribute>
1471     <Attribute readonly="readonly" name="brand" id="::Identification::brand">
1472       <webidl>        readonly attribute DOMString?       brand;</webidl>
1473       <Type type="DOMString" nullable="nullable"/>
1474     </Attribute>
1475     <Attribute readonly="readonly" name="model" id="::Identification::model">
1476       <webidl>        readonly attribute DOMString?       model;</webidl>
1477       <Type type="DOMString" nullable="nullable"/>
1478     </Attribute>
1479     <Attribute readonly="readonly" name="year" id="::Identification::year">
1480       <webidl>        readonly attribute unsigned short?  year;</webidl>
1481       <Type type="unsigned short" nullable="nullable"/>
1482     </Attribute>
1483   </Interface>
1484   <Interface name="SizeConfiguration" id="::SizeConfiguration">
1485     <webidl>[NoInterfaceObject]
1486 interface SizeConfiguration : <ref>VehicleCommonDataType</ref> {
1487         readonly attribute unsigned short?   width;
1488         readonly attribute unsigned short?   height;
1489         readonly attribute unsigned short?   length;
1490         readonly attribute unsigned short[]? doorsCount;
1491         readonly attribute unsigned short?   totalDoors;
1492 };</webidl>
1493     <ExtendedAttributeList>
1494       <ExtendedAttribute name="NoInterfaceObject">
1495         <webidl>NoInterfaceObject</webidl>
1496       </ExtendedAttribute>
1497     </ExtendedAttributeList>
1498     <InterfaceInheritance>
1499       <Name name="VehicleCommonDataType"/>
1500     </InterfaceInheritance>
1501     <Attribute readonly="readonly" name="width" id="::SizeConfiguration::width">
1502       <webidl>        readonly attribute unsigned short?   width;</webidl>
1503       <Type type="unsigned short" nullable="nullable"/>
1504     </Attribute>
1505     <Attribute readonly="readonly" name="height" id="::SizeConfiguration::height">
1506       <webidl>        readonly attribute unsigned short?   height;</webidl>
1507       <Type type="unsigned short" nullable="nullable"/>
1508     </Attribute>
1509     <Attribute readonly="readonly" name="length" id="::SizeConfiguration::length">
1510       <webidl>        readonly attribute unsigned short?   length;</webidl>
1511       <Type type="unsigned short" nullable="nullable"/>
1512     </Attribute>
1513     <Attribute readonly="readonly" name="doorsCount" id="::SizeConfiguration::doorsCount">
1514       <webidl>        readonly attribute unsigned short[]? doorsCount;</webidl>
1515       <Type type="array" nullable="nullable">
1516         <Type type="unsigned short"/>
1517       </Type>
1518     </Attribute>
1519     <Attribute readonly="readonly" name="totalDoors" id="::SizeConfiguration::totalDoors">
1520       <webidl>        readonly attribute unsigned short?   totalDoors;</webidl>
1521       <Type type="unsigned short" nullable="nullable"/>
1522     </Attribute>
1523   </Interface>
1524   <Enum name="FuelTypeEnum" id="::FuelTypeEnum">
1525     <webidl>enum FuelTypeEnum {
1526         &quot;gasoline&quot;, &quot;methanol&quot;, &quot;ethanol&quot;, &quot;diesel&quot;, &quot;lpg&quot;, &quot;cng&quot;, &quot;electric&quot;
1527 };</webidl>
1528     <EnumValue stringvalue="gasoline">
1529       <webidl>        &quot;gasoline</webidl>
1530     </EnumValue>
1531     <EnumValue stringvalue="methanol">
1532       <webidl> &quot;methanol</webidl>
1533     </EnumValue>
1534     <EnumValue stringvalue="ethanol">
1535       <webidl> &quot;ethanol</webidl>
1536     </EnumValue>
1537     <EnumValue stringvalue="diesel">
1538       <webidl> &quot;diesel</webidl>
1539     </EnumValue>
1540     <EnumValue stringvalue="lpg">
1541       <webidl> &quot;lpg</webidl>
1542     </EnumValue>
1543     <EnumValue stringvalue="cng">
1544       <webidl> &quot;cng</webidl>
1545     </EnumValue>
1546     <EnumValue stringvalue="electric">
1547       <webidl> &quot;electric</webidl>
1548     </EnumValue>
1549   </Enum>
1550   <Interface name="FuelConfiguration" id="::FuelConfiguration">
1551     <webidl>[NoInterfaceObject]
1552 interface FuelConfiguration : <ref>VehicleCommonDataType</ref> {
1553         readonly attribute <ref>FuelTypeEnum</ref>[]? fuelType;
1554         readonly attribute <ref>Zone</ref>?           refuelPosition;
1555 };</webidl>
1556     <ExtendedAttributeList>
1557       <ExtendedAttribute name="NoInterfaceObject">
1558         <webidl>NoInterfaceObject</webidl>
1559       </ExtendedAttribute>
1560     </ExtendedAttributeList>
1561     <InterfaceInheritance>
1562       <Name name="VehicleCommonDataType"/>
1563     </InterfaceInheritance>
1564     <Attribute readonly="readonly" name="fuelType" id="::FuelConfiguration::fuelType">
1565       <webidl>        readonly attribute <ref>FuelTypeEnum</ref>[]? fuelType;</webidl>
1566       <Type type="array" nullable="nullable">
1567         <Type name="FuelTypeEnum"/>
1568       </Type>
1569     </Attribute>
1570     <Attribute readonly="readonly" name="refuelPosition" id="::FuelConfiguration::refuelPosition">
1571       <webidl>        readonly attribute <ref>Zone</ref>?           refuelPosition;</webidl>
1572       <Type name="Zone" nullable="nullable"/>
1573     </Attribute>
1574   </Interface>
1575   <Enum name="TransmissionGearTypeEnum" id="::TransmissionGearTypeEnum">
1576     <webidl>enum TransmissionGearTypeEnum {&quot;auto&quot;, &quot;manual&quot;};</webidl>
1577     <EnumValue stringvalue="auto">
1578       <webidl>&quot;auto</webidl>
1579     </EnumValue>
1580     <EnumValue stringvalue="manual">
1581       <webidl> &quot;manual</webidl>
1582     </EnumValue>
1583   </Enum>
1584   <Interface name="TransmissionConfiguration" id="::TransmissionConfiguration">
1585     <webidl>[NoInterfaceObject]
1586 interface TransmissionConfiguration : <ref>VehicleCommonDataType</ref> {
1587         readonly attribute <ref>TransmissionGearTypeEnum</ref>? transmissionGearType;
1588 };</webidl>
1589     <ExtendedAttributeList>
1590       <ExtendedAttribute name="NoInterfaceObject">
1591         <webidl>NoInterfaceObject</webidl>
1592       </ExtendedAttribute>
1593     </ExtendedAttributeList>
1594     <InterfaceInheritance>
1595       <Name name="VehicleCommonDataType"/>
1596     </InterfaceInheritance>
1597     <Attribute readonly="readonly" name="transmissionGearType" id="::TransmissionConfiguration::transmissionGearType">
1598       <webidl>        readonly attribute <ref>TransmissionGearTypeEnum</ref>? transmissionGearType;</webidl>
1599       <Type name="TransmissionGearTypeEnum" nullable="nullable"/>
1600     </Attribute>
1601   </Interface>
1602   <Interface name="WheelConfiguration" id="::WheelConfiguration">
1603     <webidl>[NoInterfaceObject]
1604 interface WheelConfiguration : <ref>VehicleCommonDataType</ref> {
1605         readonly attribute unsigned short? wheelRadius;
1606                      attribute <ref>Zone</ref>?           zone;
1607 };</webidl>
1608     <ExtendedAttributeList>
1609       <ExtendedAttribute name="NoInterfaceObject">
1610         <webidl>NoInterfaceObject</webidl>
1611       </ExtendedAttribute>
1612     </ExtendedAttributeList>
1613     <InterfaceInheritance>
1614       <Name name="VehicleCommonDataType"/>
1615     </InterfaceInheritance>
1616     <Attribute readonly="readonly" name="wheelRadius" id="::WheelConfiguration::wheelRadius">
1617       <webidl>        readonly attribute unsigned short? wheelRadius;</webidl>
1618       <Type type="unsigned short" nullable="nullable"/>
1619     </Attribute>
1620     <Attribute name="zone" id="::WheelConfiguration::zone">
1621       <webidl>                     attribute <ref>Zone</ref>?           zone;</webidl>
1622       <Type name="Zone" nullable="nullable"/>
1623     </Attribute>
1624   </Interface>
1625   <Interface name="SteeringWheelConfiguration" id="::SteeringWheelConfiguration">
1626     <webidl>[NoInterfaceObject]
1627 interface SteeringWheelConfiguration : <ref>VehicleCommonDataType</ref> {
1628         readonly attribute boolean? steeringWheelLeft;
1629 };</webidl>
1630     <ExtendedAttributeList>
1631       <ExtendedAttribute name="NoInterfaceObject">
1632         <webidl>NoInterfaceObject</webidl>
1633       </ExtendedAttribute>
1634     </ExtendedAttributeList>
1635     <InterfaceInheritance>
1636       <Name name="VehicleCommonDataType"/>
1637     </InterfaceInheritance>
1638     <Attribute readonly="readonly" name="steeringWheelLeft" id="::SteeringWheelConfiguration::steeringWheelLeft">
1639       <webidl>        readonly attribute boolean? steeringWheelLeft;</webidl>
1640       <Type type="boolean" nullable="nullable"/>
1641     </Attribute>
1642   </Interface>
1643   <Interface name="VehicleSpeed" id="::VehicleSpeed">
1644     <webidl>[NoInterfaceObject]
1645 interface VehicleSpeed : <ref>VehicleCommonDataType</ref> {
1646         readonly attribute unsigned short speed;
1647 };</webidl>
1648     <ExtendedAttributeList>
1649       <ExtendedAttribute name="NoInterfaceObject">
1650         <webidl>NoInterfaceObject</webidl>
1651       </ExtendedAttribute>
1652     </ExtendedAttributeList>
1653     <InterfaceInheritance>
1654       <Name name="VehicleCommonDataType"/>
1655     </InterfaceInheritance>
1656     <Attribute readonly="readonly" name="speed" id="::VehicleSpeed::speed">
1657       <webidl>        readonly attribute unsigned short speed;</webidl>
1658       <Type type="unsigned short"/>
1659     </Attribute>
1660   </Interface>
1661   <Interface name="WheelSpeed" id="::WheelSpeed">
1662     <webidl>[NoInterfaceObject]
1663 interface WheelSpeed : <ref>VehicleCommonDataType</ref> {
1664         readonly attribute unsigned short speed;
1665                      attribute <ref>Zone</ref>?          zone;
1666 };</webidl>
1667     <ExtendedAttributeList>
1668       <ExtendedAttribute name="NoInterfaceObject">
1669         <webidl>NoInterfaceObject</webidl>
1670       </ExtendedAttribute>
1671     </ExtendedAttributeList>
1672     <InterfaceInheritance>
1673       <Name name="VehicleCommonDataType"/>
1674     </InterfaceInheritance>
1675     <Attribute readonly="readonly" name="speed" id="::WheelSpeed::speed">
1676       <webidl>        readonly attribute unsigned short speed;</webidl>
1677       <Type type="unsigned short"/>
1678     </Attribute>
1679     <Attribute name="zone" id="::WheelSpeed::zone">
1680       <webidl>                     attribute <ref>Zone</ref>?          zone;</webidl>
1681       <Type name="Zone" nullable="nullable"/>
1682     </Attribute>
1683   </Interface>
1684   <Interface name="EngineSpeed" id="::EngineSpeed">
1685     <webidl>[NoInterfaceObject]
1686 interface EngineSpeed : <ref>VehicleCommonDataType</ref> {
1687         readonly attribute unsigned long speed;
1688 };</webidl>
1689     <ExtendedAttributeList>
1690       <ExtendedAttribute name="NoInterfaceObject">
1691         <webidl>NoInterfaceObject</webidl>
1692       </ExtendedAttribute>
1693     </ExtendedAttributeList>
1694     <InterfaceInheritance>
1695       <Name name="VehicleCommonDataType"/>
1696     </InterfaceInheritance>
1697     <Attribute readonly="readonly" name="speed" id="::EngineSpeed::speed">
1698       <webidl>        readonly attribute unsigned long speed;</webidl>
1699       <Type type="unsigned long"/>
1700     </Attribute>
1701   </Interface>
1702   <Interface name="PowerTrainTorque" id="::PowerTrainTorque">
1703     <webidl>[NoInterfaceObject]
1704 interface PowerTrainTorque : <ref>VehicleCommonDataType</ref> {
1705         readonly attribute short value;
1706 };</webidl>
1707     <ExtendedAttributeList>
1708       <ExtendedAttribute name="NoInterfaceObject">
1709         <webidl>NoInterfaceObject</webidl>
1710       </ExtendedAttribute>
1711     </ExtendedAttributeList>
1712     <InterfaceInheritance>
1713       <Name name="VehicleCommonDataType"/>
1714     </InterfaceInheritance>
1715     <Attribute readonly="readonly" name="value" id="::PowerTrainTorque::value">
1716       <webidl>        readonly attribute short value;</webidl>
1717       <Type type="short"/>
1718     </Attribute>
1719   </Interface>
1720   <Interface name="AcceleratorPedalPosition" id="::AcceleratorPedalPosition">
1721     <webidl>[NoInterfaceObject]
1722 interface AcceleratorPedalPosition : <ref>VehicleCommonDataType</ref> {
1723         readonly attribute unsigned short value;
1724 };</webidl>
1725     <ExtendedAttributeList>
1726       <ExtendedAttribute name="NoInterfaceObject">
1727         <webidl>NoInterfaceObject</webidl>
1728       </ExtendedAttribute>
1729     </ExtendedAttributeList>
1730     <InterfaceInheritance>
1731       <Name name="VehicleCommonDataType"/>
1732     </InterfaceInheritance>
1733     <Attribute readonly="readonly" name="value" id="::AcceleratorPedalPosition::value">
1734       <webidl>        readonly attribute unsigned short value;</webidl>
1735       <Type type="unsigned short"/>
1736     </Attribute>
1737   </Interface>
1738   <Interface name="ThrottlePosition" id="::ThrottlePosition">
1739     <webidl>[NoInterfaceObject]
1740 interface ThrottlePosition : <ref>VehicleCommonDataType</ref> {
1741         readonly attribute unsigned short value;
1742 };</webidl>
1743     <ExtendedAttributeList>
1744       <ExtendedAttribute name="NoInterfaceObject">
1745         <webidl>NoInterfaceObject</webidl>
1746       </ExtendedAttribute>
1747     </ExtendedAttributeList>
1748     <InterfaceInheritance>
1749       <Name name="VehicleCommonDataType"/>
1750     </InterfaceInheritance>
1751     <Attribute readonly="readonly" name="value" id="::ThrottlePosition::value">
1752       <webidl>        readonly attribute unsigned short value;</webidl>
1753       <Type type="unsigned short"/>
1754     </Attribute>
1755   </Interface>
1756   <Interface name="Trip" id="::Trip">
1757     <webidl>[NoInterfaceObject]
1758 interface Trip {
1759         readonly attribute unsigned long   distance;
1760         readonly attribute unsigned short? averageSpeed;
1761         readonly attribute unsigned short? fuelConsumption;
1762 };</webidl>
1763     <ExtendedAttributeList>
1764       <ExtendedAttribute name="NoInterfaceObject">
1765         <webidl>NoInterfaceObject</webidl>
1766       </ExtendedAttribute>
1767     </ExtendedAttributeList>
1768     <Attribute readonly="readonly" name="distance" id="::Trip::distance">
1769       <webidl>        readonly attribute unsigned long   distance;</webidl>
1770       <Type type="unsigned long"/>
1771     </Attribute>
1772     <Attribute readonly="readonly" name="averageSpeed" id="::Trip::averageSpeed">
1773       <webidl>        readonly attribute unsigned short? averageSpeed;</webidl>
1774       <Type type="unsigned short" nullable="nullable"/>
1775     </Attribute>
1776     <Attribute readonly="readonly" name="fuelConsumption" id="::Trip::fuelConsumption">
1777       <webidl>        readonly attribute unsigned short? fuelConsumption;</webidl>
1778       <Type type="unsigned short" nullable="nullable"/>
1779     </Attribute>
1780   </Interface>
1781   <Interface name="TripMeters" id="::TripMeters">
1782     <webidl>[NoInterfaceObject]
1783 interface TripMeters : <ref>VehicleCommonDataType</ref> {
1784         readonly attribute <ref>Trip</ref>[] meters;
1785 };</webidl>
1786     <ExtendedAttributeList>
1787       <ExtendedAttribute name="NoInterfaceObject">
1788         <webidl>NoInterfaceObject</webidl>
1789       </ExtendedAttribute>
1790     </ExtendedAttributeList>
1791     <InterfaceInheritance>
1792       <Name name="VehicleCommonDataType"/>
1793     </InterfaceInheritance>
1794     <Attribute readonly="readonly" name="meters" id="::TripMeters::meters">
1795       <webidl>        readonly attribute <ref>Trip</ref>[] meters;</webidl>
1796       <Type type="array">
1797         <Type name="Trip"/>
1798       </Type>
1799     </Attribute>
1800   </Interface>
1801   <Interface name="Diagnostic" id="::Diagnostic">
1802     <webidl>[NoInterfaceObject]
1803 interface Diagnostic : <ref>VehicleCommonDataType</ref> {
1804         readonly attribute unsigned long accumulatedEngineRuntime;
1805         readonly attribute unsigned long distanceWithMILOn;
1806         readonly attribute unsigned long distanceSinceCodeCleared;
1807         readonly attribute unsigned long timeRunMILOn;
1808         readonly attribute unsigned long timeTroubleCodeClear;
1809 };</webidl>
1810     <ExtendedAttributeList>
1811       <ExtendedAttribute name="NoInterfaceObject">
1812         <webidl>NoInterfaceObject</webidl>
1813       </ExtendedAttribute>
1814     </ExtendedAttributeList>
1815     <InterfaceInheritance>
1816       <Name name="VehicleCommonDataType"/>
1817     </InterfaceInheritance>
1818     <Attribute readonly="readonly" name="accumulatedEngineRuntime" id="::Diagnostic::accumulatedEngineRuntime">
1819       <webidl>        readonly attribute unsigned long accumulatedEngineRuntime;</webidl>
1820       <Type type="unsigned long"/>
1821     </Attribute>
1822     <Attribute readonly="readonly" name="distanceWithMILOn" id="::Diagnostic::distanceWithMILOn">
1823       <webidl>        readonly attribute unsigned long distanceWithMILOn;</webidl>
1824       <Type type="unsigned long"/>
1825     </Attribute>
1826     <Attribute readonly="readonly" name="distanceSinceCodeCleared" id="::Diagnostic::distanceSinceCodeCleared">
1827       <webidl>        readonly attribute unsigned long distanceSinceCodeCleared;</webidl>
1828       <Type type="unsigned long"/>
1829     </Attribute>
1830     <Attribute readonly="readonly" name="timeRunMILOn" id="::Diagnostic::timeRunMILOn">
1831       <webidl>        readonly attribute unsigned long timeRunMILOn;</webidl>
1832       <Type type="unsigned long"/>
1833     </Attribute>
1834     <Attribute readonly="readonly" name="timeTroubleCodeClear" id="::Diagnostic::timeTroubleCodeClear">
1835       <webidl>        readonly attribute unsigned long timeTroubleCodeClear;</webidl>
1836       <Type type="unsigned long"/>
1837     </Attribute>
1838   </Interface>
1839   <Enum name="TransmissionMode" id="::TransmissionMode">
1840     <webidl>enum TransmissionMode {&quot;park&quot;, &quot;reverse&quot;, &quot;neutral&quot;, &quot;low&quot;, &quot;drive&quot;, &quot;overdrive&quot;};</webidl>
1841     <EnumValue stringvalue="park">
1842       <webidl>&quot;park</webidl>
1843     </EnumValue>
1844     <EnumValue stringvalue="reverse">
1845       <webidl> &quot;reverse</webidl>
1846     </EnumValue>
1847     <EnumValue stringvalue="neutral">
1848       <webidl> &quot;neutral</webidl>
1849     </EnumValue>
1850     <EnumValue stringvalue="low">
1851       <webidl> &quot;low</webidl>
1852     </EnumValue>
1853     <EnumValue stringvalue="drive">
1854       <webidl> &quot;drive</webidl>
1855     </EnumValue>
1856     <EnumValue stringvalue="overdrive">
1857       <webidl> &quot;overdrive</webidl>
1858     </EnumValue>
1859   </Enum>
1860   <Interface name="Transmission" id="::Transmission">
1861     <webidl>[NoInterfaceObject]
1862 interface Transmission : <ref>VehicleCommonDataType</ref> {
1863         readonly attribute octet?            gear;
1864         readonly attribute <ref>TransmissionMode</ref>? mode;
1865 };</webidl>
1866     <ExtendedAttributeList>
1867       <ExtendedAttribute name="NoInterfaceObject">
1868         <webidl>NoInterfaceObject</webidl>
1869       </ExtendedAttribute>
1870     </ExtendedAttributeList>
1871     <InterfaceInheritance>
1872       <Name name="VehicleCommonDataType"/>
1873     </InterfaceInheritance>
1874     <Attribute readonly="readonly" name="gear" id="::Transmission::gear">
1875       <webidl>        readonly attribute octet?            gear;</webidl>
1876       <Type type="octet" nullable="nullable"/>
1877     </Attribute>
1878     <Attribute readonly="readonly" name="mode" id="::Transmission::mode">
1879       <webidl>        readonly attribute <ref>TransmissionMode</ref>? mode;</webidl>
1880       <Type name="TransmissionMode" nullable="nullable"/>
1881     </Attribute>
1882   </Interface>
1883   <Interface name="CruiseControlStatus" id="::CruiseControlStatus">
1884     <webidl>[NoInterfaceObject]
1885 interface CruiseControlStatus : <ref>VehicleCommonDataType</ref> {
1886         readonly attribute boolean        status;
1887         readonly attribute unsigned short speed;
1888 };</webidl>
1889     <ExtendedAttributeList>
1890       <ExtendedAttribute name="NoInterfaceObject">
1891         <webidl>NoInterfaceObject</webidl>
1892       </ExtendedAttribute>
1893     </ExtendedAttributeList>
1894     <InterfaceInheritance>
1895       <Name name="VehicleCommonDataType"/>
1896     </InterfaceInheritance>
1897     <Attribute readonly="readonly" name="status" id="::CruiseControlStatus::status">
1898       <webidl>        readonly attribute boolean        status;</webidl>
1899       <Type type="boolean"/>
1900     </Attribute>
1901     <Attribute readonly="readonly" name="speed" id="::CruiseControlStatus::speed">
1902       <webidl>        readonly attribute unsigned short speed;</webidl>
1903       <Type type="unsigned short"/>
1904     </Attribute>
1905   </Interface>
1906   <Interface name="LightStatus" id="::LightStatus">
1907     <webidl>[NoInterfaceObject]
1908 interface LightStatus : <ref>VehicleCommonDataType</ref> {
1909         attribute boolean  head;
1910         attribute boolean  rightTurn;
1911         attribute boolean  leftTurn;
1912         attribute boolean  brake;
1913         attribute boolean? fog;
1914         attribute boolean  hazard;
1915         attribute boolean  parking;
1916         attribute boolean  highBeam;
1917         attribute boolean? automaticHeadlights;
1918         attribute boolean? dynamicHighBeam;
1919         attribute <ref>Zone</ref>?    zone;
1920 };</webidl>
1921     <ExtendedAttributeList>
1922       <ExtendedAttribute name="NoInterfaceObject">
1923         <webidl>NoInterfaceObject</webidl>
1924       </ExtendedAttribute>
1925     </ExtendedAttributeList>
1926     <InterfaceInheritance>
1927       <Name name="VehicleCommonDataType"/>
1928     </InterfaceInheritance>
1929     <Attribute name="head" id="::LightStatus::head">
1930       <webidl>        attribute boolean  head;</webidl>
1931       <Type type="boolean"/>
1932     </Attribute>
1933     <Attribute name="rightTurn" id="::LightStatus::rightTurn">
1934       <webidl>        attribute boolean  rightTurn;</webidl>
1935       <Type type="boolean"/>
1936     </Attribute>
1937     <Attribute name="leftTurn" id="::LightStatus::leftTurn">
1938       <webidl>        attribute boolean  leftTurn;</webidl>
1939       <Type type="boolean"/>
1940     </Attribute>
1941     <Attribute name="brake" id="::LightStatus::brake">
1942       <webidl>        attribute boolean  brake;</webidl>
1943       <Type type="boolean"/>
1944     </Attribute>
1945     <Attribute name="fog" id="::LightStatus::fog">
1946       <webidl>        attribute boolean? fog;</webidl>
1947       <Type type="boolean" nullable="nullable"/>
1948     </Attribute>
1949     <Attribute name="hazard" id="::LightStatus::hazard">
1950       <webidl>        attribute boolean  hazard;</webidl>
1951       <Type type="boolean"/>
1952     </Attribute>
1953     <Attribute name="parking" id="::LightStatus::parking">
1954       <webidl>        attribute boolean  parking;</webidl>
1955       <Type type="boolean"/>
1956     </Attribute>
1957     <Attribute name="highBeam" id="::LightStatus::highBeam">
1958       <webidl>        attribute boolean  highBeam;</webidl>
1959       <Type type="boolean"/>
1960     </Attribute>
1961     <Attribute name="automaticHeadlights" id="::LightStatus::automaticHeadlights">
1962       <webidl>        attribute boolean? automaticHeadlights;</webidl>
1963       <Type type="boolean" nullable="nullable"/>
1964     </Attribute>
1965     <Attribute name="dynamicHighBeam" id="::LightStatus::dynamicHighBeam">
1966       <webidl>        attribute boolean? dynamicHighBeam;</webidl>
1967       <Type type="boolean" nullable="nullable"/>
1968     </Attribute>
1969     <Attribute name="zone" id="::LightStatus::zone">
1970       <webidl>        attribute <ref>Zone</ref>?    zone;</webidl>
1971       <Type name="Zone" nullable="nullable"/>
1972     </Attribute>
1973   </Interface>
1974   <Interface name="InteriorLightStatus" id="::InteriorLightStatus">
1975     <webidl>[NoInterfaceObject]
1976 interface InteriorLightStatus : <ref>VehicleCommonDataType</ref> {
1977         attribute boolean status;
1978         attribute <ref>Zone</ref>?   zone;
1979 };</webidl>
1980     <ExtendedAttributeList>
1981       <ExtendedAttribute name="NoInterfaceObject">
1982         <webidl>NoInterfaceObject</webidl>
1983       </ExtendedAttribute>
1984     </ExtendedAttributeList>
1985     <InterfaceInheritance>
1986       <Name name="VehicleCommonDataType"/>
1987     </InterfaceInheritance>
1988     <Attribute name="status" id="::InteriorLightStatus::status">
1989       <webidl>        attribute boolean status;</webidl>
1990       <Type type="boolean"/>
1991     </Attribute>
1992     <Attribute name="zone" id="::InteriorLightStatus::zone">
1993       <webidl>        attribute <ref>Zone</ref>?   zone;</webidl>
1994       <Type name="Zone" nullable="nullable"/>
1995     </Attribute>
1996   </Interface>
1997   <Interface name="Horn" id="::Horn">
1998     <webidl>[NoInterfaceObject]
1999 interface Horn : <ref>VehicleCommonDataType</ref> {
2000         attribute boolean status;
2001 };</webidl>
2002     <ExtendedAttributeList>
2003       <ExtendedAttribute name="NoInterfaceObject">
2004         <webidl>NoInterfaceObject</webidl>
2005       </ExtendedAttribute>
2006     </ExtendedAttributeList>
2007     <InterfaceInheritance>
2008       <Name name="VehicleCommonDataType"/>
2009     </InterfaceInheritance>
2010     <Attribute name="status" id="::Horn::status">
2011       <webidl>        attribute boolean status;</webidl>
2012       <Type type="boolean"/>
2013     </Attribute>
2014   </Interface>
2015   <Interface name="Chime" id="::Chime">
2016     <webidl>[NoInterfaceObject]
2017 interface Chime : <ref>VehicleCommonDataType</ref> {
2018         readonly attribute boolean status;
2019 };</webidl>
2020     <ExtendedAttributeList>
2021       <ExtendedAttribute name="NoInterfaceObject">
2022         <webidl>NoInterfaceObject</webidl>
2023       </ExtendedAttribute>
2024     </ExtendedAttributeList>
2025     <InterfaceInheritance>
2026       <Name name="VehicleCommonDataType"/>
2027     </InterfaceInheritance>
2028     <Attribute readonly="readonly" name="status" id="::Chime::status">
2029       <webidl>        readonly attribute boolean status;</webidl>
2030       <Type type="boolean"/>
2031     </Attribute>
2032   </Interface>
2033   <Interface name="Fuel" id="::Fuel">
2034     <webidl>[NoInterfaceObject]
2035 interface Fuel : <ref>VehicleCommonDataType</ref> {
2036         readonly attribute unsigned short level;
2037         readonly attribute unsigned long  range;
2038         readonly attribute unsigned long  instantConsumption;
2039         readonly attribute unsigned long  averageConsumption;
2040         readonly attribute unsigned long  fuelConsumedSinceRestart;
2041         readonly attribute unsigned long  vehicleTimeSinceRestart;
2042 };</webidl>
2043     <ExtendedAttributeList>
2044       <ExtendedAttribute name="NoInterfaceObject">
2045         <webidl>NoInterfaceObject</webidl>
2046       </ExtendedAttribute>
2047     </ExtendedAttributeList>
2048     <InterfaceInheritance>
2049       <Name name="VehicleCommonDataType"/>
2050     </InterfaceInheritance>
2051     <Attribute readonly="readonly" name="level" id="::Fuel::level">
2052       <webidl>        readonly attribute unsigned short level;</webidl>
2053       <Type type="unsigned short"/>
2054     </Attribute>
2055     <Attribute readonly="readonly" name="range" id="::Fuel::range">
2056       <webidl>        readonly attribute unsigned long  range;</webidl>
2057       <Type type="unsigned long"/>
2058     </Attribute>
2059     <Attribute readonly="readonly" name="instantConsumption" id="::Fuel::instantConsumption">
2060       <webidl>        readonly attribute unsigned long  instantConsumption;</webidl>
2061       <Type type="unsigned long"/>
2062     </Attribute>
2063     <Attribute readonly="readonly" name="averageConsumption" id="::Fuel::averageConsumption">
2064       <webidl>        readonly attribute unsigned long  averageConsumption;</webidl>
2065       <Type type="unsigned long"/>
2066     </Attribute>
2067     <Attribute readonly="readonly" name="fuelConsumedSinceRestart" id="::Fuel::fuelConsumedSinceRestart">
2068       <webidl>        readonly attribute unsigned long  fuelConsumedSinceRestart;</webidl>
2069       <Type type="unsigned long"/>
2070     </Attribute>
2071     <Attribute readonly="readonly" name="vehicleTimeSinceRestart" id="::Fuel::vehicleTimeSinceRestart">
2072       <webidl>        readonly attribute unsigned long  vehicleTimeSinceRestart;</webidl>
2073       <Type type="unsigned long"/>
2074     </Attribute>
2075   </Interface>
2076   <Interface name="EngineOil" id="::EngineOil">
2077     <webidl>[NoInterfaceObject]
2078 interface EngineOil : <ref>VehicleCommonDataType</ref> {
2079         readonly attribute unsigned short level;
2080         readonly attribute unsigned short lifeRemaining;
2081         readonly attribute long           temperature;
2082         readonly attribute unsigned short pressure;
2083         readonly attribute boolean        change;
2084 };</webidl>
2085     <ExtendedAttributeList>
2086       <ExtendedAttribute name="NoInterfaceObject">
2087         <webidl>NoInterfaceObject</webidl>
2088       </ExtendedAttribute>
2089     </ExtendedAttributeList>
2090     <InterfaceInheritance>
2091       <Name name="VehicleCommonDataType"/>
2092     </InterfaceInheritance>
2093     <Attribute readonly="readonly" name="level" id="::EngineOil::level">
2094       <webidl>        readonly attribute unsigned short level;</webidl>
2095       <Type type="unsigned short"/>
2096     </Attribute>
2097     <Attribute readonly="readonly" name="lifeRemaining" id="::EngineOil::lifeRemaining">
2098       <webidl>        readonly attribute unsigned short lifeRemaining;</webidl>
2099       <Type type="unsigned short"/>
2100     </Attribute>
2101     <Attribute readonly="readonly" name="temperature" id="::EngineOil::temperature">
2102       <webidl>        readonly attribute long           temperature;</webidl>
2103       <Type type="long"/>
2104     </Attribute>
2105     <Attribute readonly="readonly" name="pressure" id="::EngineOil::pressure">
2106       <webidl>        readonly attribute unsigned short pressure;</webidl>
2107       <Type type="unsigned short"/>
2108     </Attribute>
2109     <Attribute readonly="readonly" name="change" id="::EngineOil::change">
2110       <webidl>        readonly attribute boolean        change;</webidl>
2111       <Type type="boolean"/>
2112     </Attribute>
2113   </Interface>
2114   <Interface name="Acceleration" id="::Acceleration">
2115     <webidl>[NoInterfaceObject]
2116 interface Acceleration : <ref>VehicleCommonDataType</ref> {
2117         readonly attribute unsigned long x;
2118         readonly attribute unsigned long y;
2119         readonly attribute unsigned long z;
2120 };</webidl>
2121     <ExtendedAttributeList>
2122       <ExtendedAttribute name="NoInterfaceObject">
2123         <webidl>NoInterfaceObject</webidl>
2124       </ExtendedAttribute>
2125     </ExtendedAttributeList>
2126     <InterfaceInheritance>
2127       <Name name="VehicleCommonDataType"/>
2128     </InterfaceInheritance>
2129     <Attribute readonly="readonly" name="x" id="::Acceleration::x">
2130       <webidl>        readonly attribute unsigned long x;</webidl>
2131       <Type type="unsigned long"/>
2132     </Attribute>
2133     <Attribute readonly="readonly" name="y" id="::Acceleration::y">
2134       <webidl>        readonly attribute unsigned long y;</webidl>
2135       <Type type="unsigned long"/>
2136     </Attribute>
2137     <Attribute readonly="readonly" name="z" id="::Acceleration::z">
2138       <webidl>        readonly attribute unsigned long z;</webidl>
2139       <Type type="unsigned long"/>
2140     </Attribute>
2141   </Interface>
2142   <Interface name="EngineCoolant" id="::EngineCoolant">
2143     <webidl>[NoInterfaceObject]
2144 interface EngineCoolant : <ref>VehicleCommonDataType</ref> {
2145         readonly attribute unsigned short level;
2146         readonly attribute unsigned short temperature;
2147 };</webidl>
2148     <ExtendedAttributeList>
2149       <ExtendedAttribute name="NoInterfaceObject">
2150         <webidl>NoInterfaceObject</webidl>
2151       </ExtendedAttribute>
2152     </ExtendedAttributeList>
2153     <InterfaceInheritance>
2154       <Name name="VehicleCommonDataType"/>
2155     </InterfaceInheritance>
2156     <Attribute readonly="readonly" name="level" id="::EngineCoolant::level">
2157       <webidl>        readonly attribute unsigned short level;</webidl>
2158       <Type type="unsigned short"/>
2159     </Attribute>
2160     <Attribute readonly="readonly" name="temperature" id="::EngineCoolant::temperature">
2161       <webidl>        readonly attribute unsigned short temperature;</webidl>
2162       <Type type="unsigned short"/>
2163     </Attribute>
2164   </Interface>
2165   <Interface name="SteeringWheel" id="::SteeringWheel">
2166     <webidl>[NoInterfaceObject]
2167 interface SteeringWheel : <ref>VehicleCommonDataType</ref> {
2168         readonly attribute short angle;
2169 };</webidl>
2170     <ExtendedAttributeList>
2171       <ExtendedAttribute name="NoInterfaceObject">
2172         <webidl>NoInterfaceObject</webidl>
2173       </ExtendedAttribute>
2174     </ExtendedAttributeList>
2175     <InterfaceInheritance>
2176       <Name name="VehicleCommonDataType"/>
2177     </InterfaceInheritance>
2178     <Attribute readonly="readonly" name="angle" id="::SteeringWheel::angle">
2179       <webidl>        readonly attribute short angle;</webidl>
2180       <Type type="short"/>
2181     </Attribute>
2182   </Interface>
2183   <Interface name="IgnitionTime" id="::IgnitionTime">
2184     <webidl>[NoInterfaceObject]
2185 interface IgnitionTime : <ref>VehicleCommonDataType</ref> {
2186         readonly attribute <ref>DOMTimeStamp</ref> ignitionOnTime;
2187         readonly attribute <ref>DOMTimeStamp</ref> ignitionOffTime;
2188 };</webidl>
2189     <ExtendedAttributeList>
2190       <ExtendedAttribute name="NoInterfaceObject">
2191         <webidl>NoInterfaceObject</webidl>
2192       </ExtendedAttribute>
2193     </ExtendedAttributeList>
2194     <InterfaceInheritance>
2195       <Name name="VehicleCommonDataType"/>
2196     </InterfaceInheritance>
2197     <Attribute readonly="readonly" name="ignitionOnTime" id="::IgnitionTime::ignitionOnTime">
2198       <webidl>        readonly attribute <ref>DOMTimeStamp</ref> ignitionOnTime;</webidl>
2199       <Type name="DOMTimeStamp"/>
2200     </Attribute>
2201     <Attribute readonly="readonly" name="ignitionOffTime" id="::IgnitionTime::ignitionOffTime">
2202       <webidl>        readonly attribute <ref>DOMTimeStamp</ref> ignitionOffTime;</webidl>
2203       <Type name="DOMTimeStamp"/>
2204     </Attribute>
2205   </Interface>
2206   <Interface name="YawRate" id="::YawRate">
2207     <webidl>[NoInterfaceObject]
2208 interface YawRate : <ref>VehicleCommonDataType</ref> {
2209         readonly attribute short value;
2210 };</webidl>
2211     <ExtendedAttributeList>
2212       <ExtendedAttribute name="NoInterfaceObject">
2213         <webidl>NoInterfaceObject</webidl>
2214       </ExtendedAttribute>
2215     </ExtendedAttributeList>
2216     <InterfaceInheritance>
2217       <Name name="VehicleCommonDataType"/>
2218     </InterfaceInheritance>
2219     <Attribute readonly="readonly" name="value" id="::YawRate::value">
2220       <webidl>        readonly attribute short value;</webidl>
2221       <Type type="short"/>
2222     </Attribute>
2223   </Interface>
2224   <Interface name="BrakeOperation" id="::BrakeOperation">
2225     <webidl>[NoInterfaceObject]
2226 interface BrakeOperation : <ref>VehicleCommonDataType</ref> {
2227         readonly attribute boolean brakePedalDepressed;
2228 };</webidl>
2229     <ExtendedAttributeList>
2230       <ExtendedAttribute name="NoInterfaceObject">
2231         <webidl>NoInterfaceObject</webidl>
2232       </ExtendedAttribute>
2233     </ExtendedAttributeList>
2234     <InterfaceInheritance>
2235       <Name name="VehicleCommonDataType"/>
2236     </InterfaceInheritance>
2237     <Attribute readonly="readonly" name="brakePedalDepressed" id="::BrakeOperation::brakePedalDepressed">
2238       <webidl>        readonly attribute boolean brakePedalDepressed;</webidl>
2239       <Type type="boolean"/>
2240     </Attribute>
2241   </Interface>
2242   <Interface name="WheelTick" id="::WheelTick">
2243     <webidl>[NoInterfaceObject]
2244 interface WheelTick : <ref>VehicleCommonDataType</ref> {
2245         readonly attribute unsigned long value;
2246                          attribute <ref>Zone</ref>?         zone;
2247 };</webidl>
2248     <ExtendedAttributeList>
2249       <ExtendedAttribute name="NoInterfaceObject">
2250         <webidl>NoInterfaceObject</webidl>
2251       </ExtendedAttribute>
2252     </ExtendedAttributeList>
2253     <InterfaceInheritance>
2254       <Name name="VehicleCommonDataType"/>
2255     </InterfaceInheritance>
2256     <Attribute readonly="readonly" name="value" id="::WheelTick::value">
2257       <webidl>        readonly attribute unsigned long value;</webidl>
2258       <Type type="unsigned long"/>
2259     </Attribute>
2260     <Attribute name="zone" id="::WheelTick::zone">
2261       <webidl>                         attribute <ref>Zone</ref>?         zone;</webidl>
2262       <Type name="Zone" nullable="nullable"/>
2263     </Attribute>
2264   </Interface>
2265   <Enum name="VehicleButton" id="::VehicleButton">
2266     <webidl>enum VehicleButton {
2267         &quot;home&quot;, &quot;back&quot;, &quot;search&quot;, &quot;call&quot;, &quot;end_call&quot;, &quot;media_play&quot;,
2268         &quot;media_next&quot;, &quot;media_previous&quot;, &quot;media_pause&quot;, &quot;voice_recognize&quot;,
2269         &quot;enter&quot;, &quot;left&quot;, &quot;right&quot;, &quot;up&quot;, &quot;down&quot;
2270 };</webidl>
2271     <EnumValue stringvalue="home">
2272       <webidl>        &quot;home</webidl>
2273     </EnumValue>
2274     <EnumValue stringvalue="back">
2275       <webidl> &quot;back</webidl>
2276     </EnumValue>
2277     <EnumValue stringvalue="search">
2278       <webidl> &quot;search</webidl>
2279     </EnumValue>
2280     <EnumValue stringvalue="call">
2281       <webidl> &quot;call</webidl>
2282     </EnumValue>
2283     <EnumValue stringvalue="end_call">
2284       <webidl> &quot;end_call</webidl>
2285     </EnumValue>
2286     <EnumValue stringvalue="media_play">
2287       <webidl> &quot;media_play</webidl>
2288     </EnumValue>
2289     <EnumValue stringvalue="media_next">
2290       <webidl>        &quot;media_next</webidl>
2291     </EnumValue>
2292     <EnumValue stringvalue="media_previous">
2293       <webidl> &quot;media_previous</webidl>
2294     </EnumValue>
2295     <EnumValue stringvalue="media_pause">
2296       <webidl> &quot;media_pause</webidl>
2297     </EnumValue>
2298     <EnumValue stringvalue="voice_recognize">
2299       <webidl> &quot;voice_recognize</webidl>
2300     </EnumValue>
2301     <EnumValue stringvalue="enter">
2302       <webidl>        &quot;enter</webidl>
2303     </EnumValue>
2304     <EnumValue stringvalue="left">
2305       <webidl> &quot;left</webidl>
2306     </EnumValue>
2307     <EnumValue stringvalue="right">
2308       <webidl> &quot;right</webidl>
2309     </EnumValue>
2310     <EnumValue stringvalue="up">
2311       <webidl> &quot;up</webidl>
2312     </EnumValue>
2313     <EnumValue stringvalue="down">
2314       <webidl> &quot;down</webidl>
2315     </EnumValue>
2316   </Enum>
2317   <Enum name="PressType" id="::PressType">
2318     <webidl>enum PressType {&quot;press&quot;, &quot;long_press&quot;, &quot;release&quot;};</webidl>
2319     <EnumValue stringvalue="press">
2320       <webidl>&quot;press</webidl>
2321     </EnumValue>
2322     <EnumValue stringvalue="long_press">
2323       <webidl> &quot;long_press</webidl>
2324     </EnumValue>
2325     <EnumValue stringvalue="release">
2326       <webidl> &quot;release</webidl>
2327     </EnumValue>
2328   </Enum>
2329   <Interface name="ButtonEvent" id="::ButtonEvent">
2330     <webidl>[NoInterfaceObject]
2331 interface ButtonEvent : <ref>VehicleCommonDataType</ref> {
2332         readonly attribute <ref>VehicleButton</ref>[] button;
2333         readonly attribute <ref>PressType</ref>       state;
2334 };</webidl>
2335     <ExtendedAttributeList>
2336       <ExtendedAttribute name="NoInterfaceObject">
2337         <webidl>NoInterfaceObject</webidl>
2338       </ExtendedAttribute>
2339     </ExtendedAttributeList>
2340     <InterfaceInheritance>
2341       <Name name="VehicleCommonDataType"/>
2342     </InterfaceInheritance>
2343     <Attribute readonly="readonly" name="button" id="::ButtonEvent::button">
2344       <webidl>        readonly attribute <ref>VehicleButton</ref>[] button;</webidl>
2345       <Type type="array">
2346         <Type name="VehicleButton"/>
2347       </Type>
2348     </Attribute>
2349     <Attribute readonly="readonly" name="state" id="::ButtonEvent::state">
2350       <webidl>        readonly attribute <ref>PressType</ref>       state;</webidl>
2351       <Type name="PressType"/>
2352     </Attribute>
2353   </Interface>
2354   <Interface name="DrivingMode" id="::DrivingMode">
2355     <webidl>[NoInterfaceObject]
2356 interface DrivingMode : <ref>VehicleCommonDataType</ref> {
2357         readonly attribute boolean mode;
2358 };</webidl>
2359     <ExtendedAttributeList>
2360       <ExtendedAttribute name="NoInterfaceObject">
2361         <webidl>NoInterfaceObject</webidl>
2362       </ExtendedAttribute>
2363     </ExtendedAttributeList>
2364     <InterfaceInheritance>
2365       <Name name="VehicleCommonDataType"/>
2366     </InterfaceInheritance>
2367     <Attribute readonly="readonly" name="mode" id="::DrivingMode::mode">
2368       <webidl>        readonly attribute boolean mode;</webidl>
2369       <Type type="boolean"/>
2370     </Attribute>
2371   </Interface>
2372   <Interface name="NightMode" id="::NightMode">
2373     <webidl>[NoInterfaceObject]
2374 interface NightMode : <ref>VehicleCommonDataType</ref> {
2375         readonly attribute boolean mode;
2376 };</webidl>
2377     <ExtendedAttributeList>
2378       <ExtendedAttribute name="NoInterfaceObject">
2379         <webidl>NoInterfaceObject</webidl>
2380       </ExtendedAttribute>
2381     </ExtendedAttributeList>
2382     <InterfaceInheritance>
2383       <Name name="VehicleCommonDataType"/>
2384     </InterfaceInheritance>
2385     <Attribute readonly="readonly" name="mode" id="::NightMode::mode">
2386       <webidl>        readonly attribute boolean mode;</webidl>
2387       <Type type="boolean"/>
2388     </Attribute>
2389   </Interface>
2390   <Interface name="Odometer" id="::Odometer">
2391     <webidl>[NoInterfaceObject]
2392 interface Odometer : <ref>VehicleCommonDataType</ref> {
2393         readonly attribute unsigned long? distanceSinceStart;
2394         readonly attribute unsigned long  distanceTotal;
2395 };</webidl>
2396     <ExtendedAttributeList>
2397       <ExtendedAttribute name="NoInterfaceObject">
2398         <webidl>NoInterfaceObject</webidl>
2399       </ExtendedAttribute>
2400     </ExtendedAttributeList>
2401     <InterfaceInheritance>
2402       <Name name="VehicleCommonDataType"/>
2403     </InterfaceInheritance>
2404     <Attribute readonly="readonly" name="distanceSinceStart" id="::Odometer::distanceSinceStart">
2405       <webidl>        readonly attribute unsigned long? distanceSinceStart;</webidl>
2406       <Type type="unsigned long" nullable="nullable"/>
2407     </Attribute>
2408     <Attribute readonly="readonly" name="distanceTotal" id="::Odometer::distanceTotal">
2409       <webidl>        readonly attribute unsigned long  distanceTotal;</webidl>
2410       <Type type="unsigned long"/>
2411     </Attribute>
2412   </Interface>
2413   <Interface name="TransmissionOil" id="::TransmissionOil">
2414     <webidl>[NoInterfaceObject]
2415 interface TransmissionOil : <ref>VehicleCommonDataType</ref> {
2416         readonly attribute byte?  wear;
2417         readonly attribute short? temperature;
2418 };</webidl>
2419     <ExtendedAttributeList>
2420       <ExtendedAttribute name="NoInterfaceObject">
2421         <webidl>NoInterfaceObject</webidl>
2422       </ExtendedAttribute>
2423     </ExtendedAttributeList>
2424     <InterfaceInheritance>
2425       <Name name="VehicleCommonDataType"/>
2426     </InterfaceInheritance>
2427     <Attribute readonly="readonly" name="wear" id="::TransmissionOil::wear">
2428       <webidl>        readonly attribute byte?  wear;</webidl>
2429       <Type type="byte" nullable="nullable"/>
2430     </Attribute>
2431     <Attribute readonly="readonly" name="temperature" id="::TransmissionOil::temperature">
2432       <webidl>        readonly attribute short? temperature;</webidl>
2433       <Type type="short" nullable="nullable"/>
2434     </Attribute>
2435   </Interface>
2436   <Interface name="TransmissionClutch" id="::TransmissionClutch">
2437     <webidl>[NoInterfaceObject]
2438 interface TransmissionClutch : <ref>VehicleCommonDataType</ref> {
2439         readonly attribute byte wear;
2440 };</webidl>
2441     <ExtendedAttributeList>
2442       <ExtendedAttribute name="NoInterfaceObject">
2443         <webidl>NoInterfaceObject</webidl>
2444       </ExtendedAttribute>
2445     </ExtendedAttributeList>
2446     <InterfaceInheritance>
2447       <Name name="VehicleCommonDataType"/>
2448     </InterfaceInheritance>
2449     <Attribute readonly="readonly" name="wear" id="::TransmissionClutch::wear">
2450       <webidl>        readonly attribute byte wear;</webidl>
2451       <Type type="byte"/>
2452     </Attribute>
2453   </Interface>
2454   <Interface name="BrakeMaintenance" id="::BrakeMaintenance">
2455     <webidl>[NoInterfaceObject]
2456 interface BrakeMaintenance : <ref>VehicleCommonDataType</ref> {
2457         readonly attribute unsigned short? fluidLevel;
2458         readonly attribute boolean?        fluidLevelLow;
2459         readonly attribute byte?           padWear;
2460         readonly attribute boolean?        brakesWorn;
2461                          attribute <ref>Zone</ref>?           zone;
2462 };</webidl>
2463     <ExtendedAttributeList>
2464       <ExtendedAttribute name="NoInterfaceObject">
2465         <webidl>NoInterfaceObject</webidl>
2466       </ExtendedAttribute>
2467     </ExtendedAttributeList>
2468     <InterfaceInheritance>
2469       <Name name="VehicleCommonDataType"/>
2470     </InterfaceInheritance>
2471     <Attribute readonly="readonly" name="fluidLevel" id="::BrakeMaintenance::fluidLevel">
2472       <webidl>        readonly attribute unsigned short? fluidLevel;</webidl>
2473       <Type type="unsigned short" nullable="nullable"/>
2474     </Attribute>
2475     <Attribute readonly="readonly" name="fluidLevelLow" id="::BrakeMaintenance::fluidLevelLow">
2476       <webidl>        readonly attribute boolean?        fluidLevelLow;</webidl>
2477       <Type type="boolean" nullable="nullable"/>
2478     </Attribute>
2479     <Attribute readonly="readonly" name="padWear" id="::BrakeMaintenance::padWear">
2480       <webidl>        readonly attribute byte?           padWear;</webidl>
2481       <Type type="byte" nullable="nullable"/>
2482     </Attribute>
2483     <Attribute readonly="readonly" name="brakesWorn" id="::BrakeMaintenance::brakesWorn">
2484       <webidl>        readonly attribute boolean?        brakesWorn;</webidl>
2485       <Type type="boolean" nullable="nullable"/>
2486     </Attribute>
2487     <Attribute name="zone" id="::BrakeMaintenance::zone">
2488       <webidl>                         attribute <ref>Zone</ref>?           zone;</webidl>
2489       <Type name="Zone" nullable="nullable"/>
2490     </Attribute>
2491   </Interface>
2492   <Interface name="WasherFluid" id="::WasherFluid">
2493     <webidl>[NoInterfaceObject]
2494 interface WasherFluid : <ref>VehicleCommonDataType</ref> {
2495         readonly attribute unsigned short? level;
2496         readonly attribute boolean?        levelLow;
2497 };</webidl>
2498     <ExtendedAttributeList>
2499       <ExtendedAttribute name="NoInterfaceObject">
2500         <webidl>NoInterfaceObject</webidl>
2501       </ExtendedAttribute>
2502     </ExtendedAttributeList>
2503     <InterfaceInheritance>
2504       <Name name="VehicleCommonDataType"/>
2505     </InterfaceInheritance>
2506     <Attribute readonly="readonly" name="level" id="::WasherFluid::level">
2507       <webidl>        readonly attribute unsigned short? level;</webidl>
2508       <Type type="unsigned short" nullable="nullable"/>
2509     </Attribute>
2510     <Attribute readonly="readonly" name="levelLow" id="::WasherFluid::levelLow">
2511       <webidl>        readonly attribute boolean?        levelLow;</webidl>
2512       <Type type="boolean" nullable="nullable"/>
2513     </Attribute>
2514   </Interface>
2515   <Interface name="MalfunctionIndicator" id="::MalfunctionIndicator">
2516     <webidl>[NoInterfaceObject]
2517 interface MalfunctionIndicator : <ref>VehicleCommonDataType</ref> {
2518         readonly attribute boolean on;
2519 };</webidl>
2520     <ExtendedAttributeList>
2521       <ExtendedAttribute name="NoInterfaceObject">
2522         <webidl>NoInterfaceObject</webidl>
2523       </ExtendedAttribute>
2524     </ExtendedAttributeList>
2525     <InterfaceInheritance>
2526       <Name name="VehicleCommonDataType"/>
2527     </InterfaceInheritance>
2528     <Attribute readonly="readonly" name="on" id="::MalfunctionIndicator::on">
2529       <webidl>        readonly attribute boolean on;</webidl>
2530       <Type type="boolean"/>
2531     </Attribute>
2532   </Interface>
2533   <Interface name="BatteryStatus" id="::BatteryStatus">
2534     <webidl>[NoInterfaceObject]
2535 interface BatteryStatus : <ref>VehicleCommonDataType</ref> {
2536         readonly attribute unsigned short? chargeLevel;
2537         readonly attribute unsigned short? voltage;
2538         readonly attribute unsigned short? current;
2539                          attribute <ref>Zone</ref>?           zone;
2540 };</webidl>
2541     <ExtendedAttributeList>
2542       <ExtendedAttribute name="NoInterfaceObject">
2543         <webidl>NoInterfaceObject</webidl>
2544       </ExtendedAttribute>
2545     </ExtendedAttributeList>
2546     <InterfaceInheritance>
2547       <Name name="VehicleCommonDataType"/>
2548     </InterfaceInheritance>
2549     <Attribute readonly="readonly" name="chargeLevel" id="::BatteryStatus::chargeLevel">
2550       <webidl>        readonly attribute unsigned short? chargeLevel;</webidl>
2551       <Type type="unsigned short" nullable="nullable"/>
2552     </Attribute>
2553     <Attribute readonly="readonly" name="voltage" id="::BatteryStatus::voltage">
2554       <webidl>        readonly attribute unsigned short? voltage;</webidl>
2555       <Type type="unsigned short" nullable="nullable"/>
2556     </Attribute>
2557     <Attribute readonly="readonly" name="current" id="::BatteryStatus::current">
2558       <webidl>        readonly attribute unsigned short? current;</webidl>
2559       <Type type="unsigned short" nullable="nullable"/>
2560     </Attribute>
2561     <Attribute name="zone" id="::BatteryStatus::zone">
2562       <webidl>                         attribute <ref>Zone</ref>?           zone;</webidl>
2563       <Type name="Zone" nullable="nullable"/>
2564     </Attribute>
2565   </Interface>
2566   <Interface name="Tire" id="::Tire">
2567     <webidl>[NoInterfaceObject]
2568 interface Tire : <ref>VehicleCommonDataType</ref> {
2569         readonly attribute boolean?        pressureLow;
2570         readonly attribute unsigned short? pressure;
2571         readonly attribute short?          temperature;
2572                          attribute <ref>Zone</ref>?           zone;
2573 };</webidl>
2574     <ExtendedAttributeList>
2575       <ExtendedAttribute name="NoInterfaceObject">
2576         <webidl>NoInterfaceObject</webidl>
2577       </ExtendedAttribute>
2578     </ExtendedAttributeList>
2579     <InterfaceInheritance>
2580       <Name name="VehicleCommonDataType"/>
2581     </InterfaceInheritance>
2582     <Attribute readonly="readonly" name="pressureLow" id="::Tire::pressureLow">
2583       <webidl>        readonly attribute boolean?        pressureLow;</webidl>
2584       <Type type="boolean" nullable="nullable"/>
2585     </Attribute>
2586     <Attribute readonly="readonly" name="pressure" id="::Tire::pressure">
2587       <webidl>        readonly attribute unsigned short? pressure;</webidl>
2588       <Type type="unsigned short" nullable="nullable"/>
2589     </Attribute>
2590     <Attribute readonly="readonly" name="temperature" id="::Tire::temperature">
2591       <webidl>        readonly attribute short?          temperature;</webidl>
2592       <Type type="short" nullable="nullable"/>
2593     </Attribute>
2594     <Attribute name="zone" id="::Tire::zone">
2595       <webidl>                         attribute <ref>Zone</ref>?           zone;</webidl>
2596       <Type name="Zone" nullable="nullable"/>
2597     </Attribute>
2598   </Interface>
2599   <Interface name="Diagnostic" id="::Diagnostic">
2600     <webidl>[NoInterfaceObject]
2601 interface Diagnostic : <ref>VehicleCommonDataType</ref> {
2602         readonly attribute unsigned long accumulatedEngineRuntime;
2603         readonly attribute unsigned long distanceWithMILOn;
2604         readonly attribute unsigned long distanceSinceCodeCleared;
2605         readonly attribute unsigned long timeRunMILOn;
2606         readonly attribute unsigned long timeTroubleCodeClear;
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="accumulatedEngineRuntime" id="::Diagnostic::accumulatedEngineRuntime">
2617       <webidl>        readonly attribute unsigned long accumulatedEngineRuntime;</webidl>
2618       <Type type="unsigned long"/>
2619     </Attribute>
2620     <Attribute readonly="readonly" name="distanceWithMILOn" id="::Diagnostic::distanceWithMILOn">
2621       <webidl>        readonly attribute unsigned long distanceWithMILOn;</webidl>
2622       <Type type="unsigned long"/>
2623     </Attribute>
2624     <Attribute readonly="readonly" name="distanceSinceCodeCleared" id="::Diagnostic::distanceSinceCodeCleared">
2625       <webidl>        readonly attribute unsigned long distanceSinceCodeCleared;</webidl>
2626       <Type type="unsigned long"/>
2627     </Attribute>
2628     <Attribute readonly="readonly" name="timeRunMILOn" id="::Diagnostic::timeRunMILOn">
2629       <webidl>        readonly attribute unsigned long timeRunMILOn;</webidl>
2630       <Type type="unsigned long"/>
2631     </Attribute>
2632     <Attribute readonly="readonly" name="timeTroubleCodeClear" id="::Diagnostic::timeTroubleCodeClear">
2633       <webidl>        readonly attribute unsigned long timeTroubleCodeClear;</webidl>
2634       <Type type="unsigned long"/>
2635     </Attribute>
2636   </Interface>
2637   <Interface name="LanguageConfiguration" id="::LanguageConfiguration">
2638     <webidl>[NoInterfaceObject]
2639 interface LanguageConfiguration : <ref>VehicleCommonDataType</ref> {
2640         attribute DOMString? language;
2641 };</webidl>
2642     <ExtendedAttributeList>
2643       <ExtendedAttribute name="NoInterfaceObject">
2644         <webidl>NoInterfaceObject</webidl>
2645       </ExtendedAttribute>
2646     </ExtendedAttributeList>
2647     <InterfaceInheritance>
2648       <Name name="VehicleCommonDataType"/>
2649     </InterfaceInheritance>
2650     <Attribute name="language" id="::LanguageConfiguration::language">
2651       <webidl>        attribute DOMString? language;</webidl>
2652       <Type type="DOMString" nullable="nullable"/>
2653     </Attribute>
2654   </Interface>
2655   <Interface name="UnitsOfMeasure" id="::UnitsOfMeasure">
2656     <webidl>[NoInterfaceObject]
2657 interface UnitsOfMeasure : <ref>VehicleCommonDataType</ref> {
2658         attribute boolean?   isMKSSystem;
2659         attribute DOMString? unitsFuelVolume;
2660         attribute DOMString? unitsDistance;
2661         attribute DOMString? unitsSpeed;
2662         attribute DOMString? unitsFuelConsumption;
2663 };</webidl>
2664     <ExtendedAttributeList>
2665       <ExtendedAttribute name="NoInterfaceObject">
2666         <webidl>NoInterfaceObject</webidl>
2667       </ExtendedAttribute>
2668     </ExtendedAttributeList>
2669     <InterfaceInheritance>
2670       <Name name="VehicleCommonDataType"/>
2671     </InterfaceInheritance>
2672     <Attribute name="isMKSSystem" id="::UnitsOfMeasure::isMKSSystem">
2673       <webidl>        attribute boolean?   isMKSSystem;</webidl>
2674       <Type type="boolean" nullable="nullable"/>
2675     </Attribute>
2676     <Attribute name="unitsFuelVolume" id="::UnitsOfMeasure::unitsFuelVolume">
2677       <webidl>        attribute DOMString? unitsFuelVolume;</webidl>
2678       <Type type="DOMString" nullable="nullable"/>
2679     </Attribute>
2680     <Attribute name="unitsDistance" id="::UnitsOfMeasure::unitsDistance">
2681       <webidl>        attribute DOMString? unitsDistance;</webidl>
2682       <Type type="DOMString" nullable="nullable"/>
2683     </Attribute>
2684     <Attribute name="unitsSpeed" id="::UnitsOfMeasure::unitsSpeed">
2685       <webidl>        attribute DOMString? unitsSpeed;</webidl>
2686       <Type type="DOMString" nullable="nullable"/>
2687     </Attribute>
2688     <Attribute name="unitsFuelConsumption" id="::UnitsOfMeasure::unitsFuelConsumption">
2689       <webidl>        attribute DOMString? unitsFuelConsumption;</webidl>
2690       <Type type="DOMString" nullable="nullable"/>
2691     </Attribute>
2692   </Interface>
2693   <Interface name="Mirror" id="::Mirror">
2694     <webidl>[NoInterfaceObject]
2695 interface Mirror : <ref>VehicleCommonDataType</ref> {
2696         attribute unsigned short? mirrorTilt;
2697         attribute unsigned short? mirrorPan;
2698         attribute <ref>Zone</ref>?           zone;
2699 };</webidl>
2700     <ExtendedAttributeList>
2701       <ExtendedAttribute name="NoInterfaceObject">
2702         <webidl>NoInterfaceObject</webidl>
2703       </ExtendedAttribute>
2704     </ExtendedAttributeList>
2705     <InterfaceInheritance>
2706       <Name name="VehicleCommonDataType"/>
2707     </InterfaceInheritance>
2708     <Attribute name="mirrorTilt" id="::Mirror::mirrorTilt">
2709       <webidl>        attribute unsigned short? mirrorTilt;</webidl>
2710       <Type type="unsigned short" nullable="nullable"/>
2711     </Attribute>
2712     <Attribute name="mirrorPan" id="::Mirror::mirrorPan">
2713       <webidl>        attribute unsigned short? mirrorPan;</webidl>
2714       <Type type="unsigned short" nullable="nullable"/>
2715     </Attribute>
2716     <Attribute name="zone" id="::Mirror::zone">
2717       <webidl>        attribute <ref>Zone</ref>?           zone;</webidl>
2718       <Type name="Zone" nullable="nullable"/>
2719     </Attribute>
2720   </Interface>
2721   <Interface name="SeatAdjustment" id="::SeatAdjustment">
2722     <webidl>[NoInterfaceObject]
2723 interface SeatAdjustment : <ref>VehicleCommonDataType</ref> {
2724         attribute unsigned short? reclineSeatBack;
2725         attribute unsigned short? seatSlide;
2726         attribute unsigned short? seatCushionHeight;
2727         attribute unsigned short? seatHeadrest;
2728         attribute unsigned short? seatBackCushion;
2729         attribute unsigned short? seatSideCushion;
2730         attribute <ref>Zone</ref>?           zone;
2731 };</webidl>
2732     <ExtendedAttributeList>
2733       <ExtendedAttribute name="NoInterfaceObject">
2734         <webidl>NoInterfaceObject</webidl>
2735       </ExtendedAttribute>
2736     </ExtendedAttributeList>
2737     <InterfaceInheritance>
2738       <Name name="VehicleCommonDataType"/>
2739     </InterfaceInheritance>
2740     <Attribute name="reclineSeatBack" id="::SeatAdjustment::reclineSeatBack">
2741       <webidl>        attribute unsigned short? reclineSeatBack;</webidl>
2742       <Type type="unsigned short" nullable="nullable"/>
2743     </Attribute>
2744     <Attribute name="seatSlide" id="::SeatAdjustment::seatSlide">
2745       <webidl>        attribute unsigned short? seatSlide;</webidl>
2746       <Type type="unsigned short" nullable="nullable"/>
2747     </Attribute>
2748     <Attribute name="seatCushionHeight" id="::SeatAdjustment::seatCushionHeight">
2749       <webidl>        attribute unsigned short? seatCushionHeight;</webidl>
2750       <Type type="unsigned short" nullable="nullable"/>
2751     </Attribute>
2752     <Attribute name="seatHeadrest" id="::SeatAdjustment::seatHeadrest">
2753       <webidl>        attribute unsigned short? seatHeadrest;</webidl>
2754       <Type type="unsigned short" nullable="nullable"/>
2755     </Attribute>
2756     <Attribute name="seatBackCushion" id="::SeatAdjustment::seatBackCushion">
2757       <webidl>        attribute unsigned short? seatBackCushion;</webidl>
2758       <Type type="unsigned short" nullable="nullable"/>
2759     </Attribute>
2760     <Attribute name="seatSideCushion" id="::SeatAdjustment::seatSideCushion">
2761       <webidl>        attribute unsigned short? seatSideCushion;</webidl>
2762       <Type type="unsigned short" nullable="nullable"/>
2763     </Attribute>
2764     <Attribute name="zone" id="::SeatAdjustment::zone">
2765       <webidl>        attribute <ref>Zone</ref>?           zone;</webidl>
2766       <Type name="Zone" nullable="nullable"/>
2767     </Attribute>
2768   </Interface>
2769   <Enum name="DriveModeEnum" id="::DriveModeEnum">
2770     <webidl>enum DriveModeEnum {&quot;comfort&quot;, &quot;auto&quot;, &quot;sport&quot;, &quot;eco&quot;, &quot;manual&quot;, &quot;winter&quot;};</webidl>
2771     <EnumValue stringvalue="comfort">
2772       <webidl>&quot;comfort</webidl>
2773     </EnumValue>
2774     <EnumValue stringvalue="auto">
2775       <webidl> &quot;auto</webidl>
2776     </EnumValue>
2777     <EnumValue stringvalue="sport">
2778       <webidl> &quot;sport</webidl>
2779     </EnumValue>
2780     <EnumValue stringvalue="eco">
2781       <webidl> &quot;eco</webidl>
2782     </EnumValue>
2783     <EnumValue stringvalue="manual">
2784       <webidl> &quot;manual</webidl>
2785     </EnumValue>
2786     <EnumValue stringvalue="winter">
2787       <webidl> &quot;winter</webidl>
2788     </EnumValue>
2789   </Enum>
2790   <Interface name="DriveMode" id="::DriveMode">
2791     <webidl>[NoInterfaceObject]
2792 interface DriveMode : <ref>VehicleCommonDataType</ref> {
2793         attribute <ref>DriveModeEnum</ref>? driveMode;
2794 };</webidl>
2795     <ExtendedAttributeList>
2796       <ExtendedAttribute name="NoInterfaceObject">
2797         <webidl>NoInterfaceObject</webidl>
2798       </ExtendedAttribute>
2799     </ExtendedAttributeList>
2800     <InterfaceInheritance>
2801       <Name name="VehicleCommonDataType"/>
2802     </InterfaceInheritance>
2803     <Attribute name="driveMode" id="::DriveMode::driveMode">
2804       <webidl>        attribute <ref>DriveModeEnum</ref>? driveMode;</webidl>
2805       <Type name="DriveModeEnum" nullable="nullable"/>
2806     </Attribute>
2807   </Interface>
2808   <Interface name="DashboardIllumination" id="::DashboardIllumination">
2809     <webidl>[NoInterfaceObject]
2810 interface DashboardIllumination : <ref>VehicleCommonDataType</ref> {
2811         attribute DOMString? dashboardIllumination;
2812 };</webidl>
2813     <ExtendedAttributeList>
2814       <ExtendedAttribute name="NoInterfaceObject">
2815         <webidl>NoInterfaceObject</webidl>
2816       </ExtendedAttribute>
2817     </ExtendedAttributeList>
2818     <InterfaceInheritance>
2819       <Name name="VehicleCommonDataType"/>
2820     </InterfaceInheritance>
2821     <Attribute name="dashboardIllumination" id="::DashboardIllumination::dashboardIllumination">
2822       <webidl>        attribute DOMString? dashboardIllumination;</webidl>
2823       <Type type="DOMString" nullable="nullable"/>
2824     </Attribute>
2825   </Interface>
2826   <Interface name="VehicleSound" id="::VehicleSound">
2827     <webidl>[NoInterfaceObject]
2828 interface VehicleSound : <ref>VehicleCommonDataType</ref> {
2829         attribute boolean    activeNoiseControlMode;
2830         attribute DOMString? engineSoundEnhancementMode;
2831 };</webidl>
2832     <ExtendedAttributeList>
2833       <ExtendedAttribute name="NoInterfaceObject">
2834         <webidl>NoInterfaceObject</webidl>
2835       </ExtendedAttribute>
2836     </ExtendedAttributeList>
2837     <InterfaceInheritance>
2838       <Name name="VehicleCommonDataType"/>
2839     </InterfaceInheritance>
2840     <Attribute name="activeNoiseControlMode" id="::VehicleSound::activeNoiseControlMode">
2841       <webidl>        attribute boolean    activeNoiseControlMode;</webidl>
2842       <Type type="boolean"/>
2843     </Attribute>
2844     <Attribute name="engineSoundEnhancementMode" id="::VehicleSound::engineSoundEnhancementMode">
2845       <webidl>        attribute DOMString? engineSoundEnhancementMode;</webidl>
2846       <Type type="DOMString" nullable="nullable"/>
2847     </Attribute>
2848   </Interface>
2849   <Interface name="AntilockBrakingSystem" id="::AntilockBrakingSystem">
2850     <webidl>[NoInterfaceObject]
2851 interface AntilockBrakingSystem : <ref>VehicleCommonDataType</ref> {
2852         readonly attribute boolean enabled;
2853         readonly attribute boolean engaged;
2854 };</webidl>
2855     <ExtendedAttributeList>
2856       <ExtendedAttribute name="NoInterfaceObject">
2857         <webidl>NoInterfaceObject</webidl>
2858       </ExtendedAttribute>
2859     </ExtendedAttributeList>
2860     <InterfaceInheritance>
2861       <Name name="VehicleCommonDataType"/>
2862     </InterfaceInheritance>
2863     <Attribute readonly="readonly" name="enabled" id="::AntilockBrakingSystem::enabled">
2864       <webidl>        readonly attribute boolean enabled;</webidl>
2865       <Type type="boolean"/>
2866     </Attribute>
2867     <Attribute readonly="readonly" name="engaged" id="::AntilockBrakingSystem::engaged">
2868       <webidl>        readonly attribute boolean engaged;</webidl>
2869       <Type type="boolean"/>
2870     </Attribute>
2871   </Interface>
2872   <Interface name="TractionControlSystem" id="::TractionControlSystem">
2873     <webidl>[NoInterfaceObject]
2874 interface TractionControlSystem : <ref>VehicleCommonDataType</ref> {
2875         readonly attribute boolean enabled;
2876         readonly attribute boolean engaged;
2877 };</webidl>
2878     <ExtendedAttributeList>
2879       <ExtendedAttribute name="NoInterfaceObject">
2880         <webidl>NoInterfaceObject</webidl>
2881       </ExtendedAttribute>
2882     </ExtendedAttributeList>
2883     <InterfaceInheritance>
2884       <Name name="VehicleCommonDataType"/>
2885     </InterfaceInheritance>
2886     <Attribute readonly="readonly" name="enabled" id="::TractionControlSystem::enabled">
2887       <webidl>        readonly attribute boolean enabled;</webidl>
2888       <Type type="boolean"/>
2889     </Attribute>
2890     <Attribute readonly="readonly" name="engaged" id="::TractionControlSystem::engaged">
2891       <webidl>        readonly attribute boolean engaged;</webidl>
2892       <Type type="boolean"/>
2893     </Attribute>
2894   </Interface>
2895   <Interface name="ElectronicStabilityControl" id="::ElectronicStabilityControl">
2896     <webidl>[NoInterfaceObject]
2897 interface ElectronicStabilityControl : <ref>VehicleCommonDataType</ref> {
2898         readonly attribute boolean enabled;
2899         readonly attribute boolean engaged;
2900 };</webidl>
2901     <ExtendedAttributeList>
2902       <ExtendedAttribute name="NoInterfaceObject">
2903         <webidl>NoInterfaceObject</webidl>
2904       </ExtendedAttribute>
2905     </ExtendedAttributeList>
2906     <InterfaceInheritance>
2907       <Name name="VehicleCommonDataType"/>
2908     </InterfaceInheritance>
2909     <Attribute readonly="readonly" name="enabled" id="::ElectronicStabilityControl::enabled">
2910       <webidl>        readonly attribute boolean enabled;</webidl>
2911       <Type type="boolean"/>
2912     </Attribute>
2913     <Attribute readonly="readonly" name="engaged" id="::ElectronicStabilityControl::engaged">
2914       <webidl>        readonly attribute boolean engaged;</webidl>
2915       <Type type="boolean"/>
2916     </Attribute>
2917   </Interface>
2918   <Interface name="TopSpeedLimit" id="::TopSpeedLimit">
2919     <webidl>[NoInterfaceObject]
2920 interface TopSpeedLimit : <ref>VehicleCommonDataType</ref> {
2921         readonly attribute unsigned short speed;
2922 };</webidl>
2923     <ExtendedAttributeList>
2924       <ExtendedAttribute name="NoInterfaceObject">
2925         <webidl>NoInterfaceObject</webidl>
2926       </ExtendedAttribute>
2927     </ExtendedAttributeList>
2928     <InterfaceInheritance>
2929       <Name name="VehicleCommonDataType"/>
2930     </InterfaceInheritance>
2931     <Attribute readonly="readonly" name="speed" id="::TopSpeedLimit::speed">
2932       <webidl>        readonly attribute unsigned short speed;</webidl>
2933       <Type type="unsigned short"/>
2934     </Attribute>
2935   </Interface>
2936   <Interface name="AirbagStatus" id="::AirbagStatus">
2937     <webidl>[NoInterfaceObject]
2938 interface AirbagStatus : <ref>VehicleCommonDataType</ref> {
2939         readonly attribute boolean activated;
2940         readonly attribute boolean deployed;
2941                          attribute <ref>Zone</ref>?   zone;
2942 };</webidl>
2943     <ExtendedAttributeList>
2944       <ExtendedAttribute name="NoInterfaceObject">
2945         <webidl>NoInterfaceObject</webidl>
2946       </ExtendedAttribute>
2947     </ExtendedAttributeList>
2948     <InterfaceInheritance>
2949       <Name name="VehicleCommonDataType"/>
2950     </InterfaceInheritance>
2951     <Attribute readonly="readonly" name="activated" id="::AirbagStatus::activated">
2952       <webidl>        readonly attribute boolean activated;</webidl>
2953       <Type type="boolean"/>
2954     </Attribute>
2955     <Attribute readonly="readonly" name="deployed" id="::AirbagStatus::deployed">
2956       <webidl>        readonly attribute boolean deployed;</webidl>
2957       <Type type="boolean"/>
2958     </Attribute>
2959     <Attribute name="zone" id="::AirbagStatus::zone">
2960       <webidl>                         attribute <ref>Zone</ref>?   zone;</webidl>
2961       <Type name="Zone" nullable="nullable"/>
2962     </Attribute>
2963   </Interface>
2964   <Enum name="DoorOpenStatus" id="::DoorOpenStatus">
2965     <webidl>enum DoorOpenStatus {&quot;open&quot;, &quot;ajar&quot;, &quot;closed&quot;};</webidl>
2966     <EnumValue stringvalue="open">
2967       <webidl>&quot;open</webidl>
2968     </EnumValue>
2969     <EnumValue stringvalue="ajar">
2970       <webidl> &quot;ajar</webidl>
2971     </EnumValue>
2972     <EnumValue stringvalue="closed">
2973       <webidl> &quot;closed</webidl>
2974     </EnumValue>
2975   </Enum>
2976   <Interface name="Door" id="::Door">
2977     <webidl>[NoInterfaceObject]
2978 interface Door : <ref>VehicleCommonDataType</ref> {
2979         readonly attribute <ref>DoorOpenStatus</ref> status;
2980                      attribute boolean        lock;
2981                          attribute <ref>Zone</ref>?          zone;
2982 };</webidl>
2983     <ExtendedAttributeList>
2984       <ExtendedAttribute name="NoInterfaceObject">
2985         <webidl>NoInterfaceObject</webidl>
2986       </ExtendedAttribute>
2987     </ExtendedAttributeList>
2988     <InterfaceInheritance>
2989       <Name name="VehicleCommonDataType"/>
2990     </InterfaceInheritance>
2991     <Attribute readonly="readonly" name="status" id="::Door::status">
2992       <webidl>        readonly attribute <ref>DoorOpenStatus</ref> status;</webidl>
2993       <Type name="DoorOpenStatus"/>
2994     </Attribute>
2995     <Attribute name="lock" id="::Door::lock">
2996       <webidl>                     attribute boolean        lock;</webidl>
2997       <Type type="boolean"/>
2998     </Attribute>
2999     <Attribute name="zone" id="::Door::zone">
3000       <webidl>                         attribute <ref>Zone</ref>?          zone;</webidl>
3001       <Type name="Zone" nullable="nullable"/>
3002     </Attribute>
3003   </Interface>
3004   <Interface name="ChildSafetyLock" id="::ChildSafetyLock">
3005     <webidl>[NoInterfaceObject]
3006 interface ChildSafetyLock : <ref>VehicleCommonDataType</ref> {
3007         attribute boolean lock;
3008         attribute <ref>Zone</ref>?   zone;
3009 };</webidl>
3010     <ExtendedAttributeList>
3011       <ExtendedAttribute name="NoInterfaceObject">
3012         <webidl>NoInterfaceObject</webidl>
3013       </ExtendedAttribute>
3014     </ExtendedAttributeList>
3015     <InterfaceInheritance>
3016       <Name name="VehicleCommonDataType"/>
3017     </InterfaceInheritance>
3018     <Attribute name="lock" id="::ChildSafetyLock::lock">
3019       <webidl>        attribute boolean lock;</webidl>
3020       <Type type="boolean"/>
3021     </Attribute>
3022     <Attribute name="zone" id="::ChildSafetyLock::zone">
3023       <webidl>        attribute <ref>Zone</ref>?   zone;</webidl>
3024       <Type name="Zone" nullable="nullable"/>
3025     </Attribute>
3026   </Interface>
3027   <Enum name="OccupantStatus" id="::OccupantStatus">
3028     <webidl>enum OccupantStatus {&quot;adult&quot;, &quot;child&quot;, &quot;vacant&quot;};</webidl>
3029     <EnumValue stringvalue="adult">
3030       <webidl>&quot;adult</webidl>
3031     </EnumValue>
3032     <EnumValue stringvalue="child">
3033       <webidl> &quot;child</webidl>
3034     </EnumValue>
3035     <EnumValue stringvalue="vacant">
3036       <webidl> &quot;vacant</webidl>
3037     </EnumValue>
3038   </Enum>
3039   <Enum name="IdentificationType" id="::IdentificationType">
3040     <webidl>enum IdentificationType {&quot;pin&quot;, &quot;keyfob&quot;, &quot;Bluetooth&quot;, &quot;NFC&quot;, &quot;fingerprint&quot;, &quot;camera&quot;, &quot;voice&quot;};</webidl>
3041     <EnumValue stringvalue="pin">
3042       <webidl>&quot;pin</webidl>
3043     </EnumValue>
3044     <EnumValue stringvalue="keyfob">
3045       <webidl> &quot;keyfob</webidl>
3046     </EnumValue>
3047     <EnumValue stringvalue="Bluetooth">
3048       <webidl> &quot;Bluetooth</webidl>
3049     </EnumValue>
3050     <EnumValue stringvalue="NFC">
3051       <webidl> &quot;NFC</webidl>
3052     </EnumValue>
3053     <EnumValue stringvalue="fingerprint">
3054       <webidl> &quot;fingerprint</webidl>
3055     </EnumValue>
3056     <EnumValue stringvalue="camera">
3057       <webidl> &quot;camera</webidl>
3058     </EnumValue>
3059     <EnumValue stringvalue="voice">
3060       <webidl> &quot;voice</webidl>
3061     </EnumValue>
3062   </Enum>
3063   <Interface name="Seat" id="::Seat">
3064     <webidl>[NoInterfaceObject]
3065 interface Seat : <ref>VehicleCommonDataType</ref> {
3066         readonly attribute <ref>OccupantStatus</ref>     occupant;
3067         readonly attribute boolean            seatbelt;
3068         readonly attribute DOMString?         occupantName;
3069         readonly attribute <ref>IdentificationType</ref> identificationType;
3070                          attribute <ref>Zone</ref>?              zone;
3071 };</webidl>
3072     <ExtendedAttributeList>
3073       <ExtendedAttribute name="NoInterfaceObject">
3074         <webidl>NoInterfaceObject</webidl>
3075       </ExtendedAttribute>
3076     </ExtendedAttributeList>
3077     <InterfaceInheritance>
3078       <Name name="VehicleCommonDataType"/>
3079     </InterfaceInheritance>
3080     <Attribute readonly="readonly" name="occupant" id="::Seat::occupant">
3081       <webidl>        readonly attribute <ref>OccupantStatus</ref>     occupant;</webidl>
3082       <Type name="OccupantStatus"/>
3083     </Attribute>
3084     <Attribute readonly="readonly" name="seatbelt" id="::Seat::seatbelt">
3085       <webidl>        readonly attribute boolean            seatbelt;</webidl>
3086       <Type type="boolean"/>
3087     </Attribute>
3088     <Attribute readonly="readonly" name="occupantName" id="::Seat::occupantName">
3089       <webidl>        readonly attribute DOMString?         occupantName;</webidl>
3090       <Type type="DOMString" nullable="nullable"/>
3091     </Attribute>
3092     <Attribute readonly="readonly" name="identificationType" id="::Seat::identificationType">
3093       <webidl>        readonly attribute <ref>IdentificationType</ref> identificationType;</webidl>
3094       <Type name="IdentificationType"/>
3095     </Attribute>
3096     <Attribute name="zone" id="::Seat::zone">
3097       <webidl>                         attribute <ref>Zone</ref>?              zone;</webidl>
3098       <Type name="Zone" nullable="nullable"/>
3099     </Attribute>
3100   </Interface>
3101   <Interface name="Temperature" id="::Temperature">
3102     <webidl>[NoInterfaceObject]
3103 interface Temperature : <ref>VehicleCommonDataType</ref> {
3104         readonly attribute float interiorTemperature;
3105         readonly attribute float exteriorTemperature;
3106 };</webidl>
3107     <ExtendedAttributeList>
3108       <ExtendedAttribute name="NoInterfaceObject">
3109         <webidl>NoInterfaceObject</webidl>
3110       </ExtendedAttribute>
3111     </ExtendedAttributeList>
3112     <InterfaceInheritance>
3113       <Name name="VehicleCommonDataType"/>
3114     </InterfaceInheritance>
3115     <Attribute readonly="readonly" name="interiorTemperature" id="::Temperature::interiorTemperature">
3116       <webidl>        readonly attribute float interiorTemperature;</webidl>
3117       <Type type="float"/>
3118     </Attribute>
3119     <Attribute readonly="readonly" name="exteriorTemperature" id="::Temperature::exteriorTemperature">
3120       <webidl>        readonly attribute float exteriorTemperature;</webidl>
3121       <Type type="float"/>
3122     </Attribute>
3123   </Interface>
3124   <Interface name="RainSensor" id="::RainSensor">
3125     <webidl>[NoInterfaceObject]
3126 interface RainSensor : <ref>VehicleCommonDataType</ref> {
3127         readonly attribute unsigned short rain;
3128                      attribute <ref>Zone</ref>?         zone;
3129 };</webidl>
3130     <ExtendedAttributeList>
3131       <ExtendedAttribute name="NoInterfaceObject">
3132         <webidl>NoInterfaceObject</webidl>
3133       </ExtendedAttribute>
3134     </ExtendedAttributeList>
3135     <InterfaceInheritance>
3136       <Name name="VehicleCommonDataType"/>
3137     </InterfaceInheritance>
3138     <Attribute readonly="readonly" name="rain" id="::RainSensor::rain">
3139       <webidl>        readonly attribute unsigned short rain;</webidl>
3140       <Type type="unsigned short"/>
3141     </Attribute>
3142     <Attribute name="zone" id="::RainSensor::zone">
3143       <webidl>                     attribute <ref>Zone</ref>?         zone;</webidl>
3144       <Type name="Zone" nullable="nullable"/>
3145     </Attribute>
3146   </Interface>
3147   <Interface name="WiperStatus" id="::WiperStatus">
3148     <webidl>[NoInterfaceObject]
3149 interface WiperStatus : <ref>VehicleCommonDataType</ref> {
3150         readonly attribute unsigned short wiperSpeed;
3151                      attribute <ref>Zone</ref>?         zone;
3152 };</webidl>
3153     <ExtendedAttributeList>
3154       <ExtendedAttribute name="NoInterfaceObject">
3155         <webidl>NoInterfaceObject</webidl>
3156       </ExtendedAttribute>
3157     </ExtendedAttributeList>
3158     <InterfaceInheritance>
3159       <Name name="VehicleCommonDataType"/>
3160     </InterfaceInheritance>
3161     <Attribute readonly="readonly" name="wiperSpeed" id="::WiperStatus::wiperSpeed">
3162       <webidl>        readonly attribute unsigned short wiperSpeed;</webidl>
3163       <Type type="unsigned short"/>
3164     </Attribute>
3165     <Attribute name="zone" id="::WiperStatus::zone">
3166       <webidl>                     attribute <ref>Zone</ref>?         zone;</webidl>
3167       <Type name="Zone" nullable="nullable"/>
3168     </Attribute>
3169   </Interface>
3170   <Enum name="WiperControl" id="::WiperControl">
3171     <webidl>enum WiperControl {&quot;off&quot;, &quot;once&quot;, &quot;slowest&quot;, &quot;slow&quot;, &quot;middle&quot;, &quot;fast&quot;, &quot;fastest&quot;, &quot;auto&quot;};</webidl>
3172     <EnumValue stringvalue="off">
3173       <webidl>&quot;off</webidl>
3174     </EnumValue>
3175     <EnumValue stringvalue="once">
3176       <webidl> &quot;once</webidl>
3177     </EnumValue>
3178     <EnumValue stringvalue="slowest">
3179       <webidl> &quot;slowest</webidl>
3180     </EnumValue>
3181     <EnumValue stringvalue="slow">
3182       <webidl> &quot;slow</webidl>
3183     </EnumValue>
3184     <EnumValue stringvalue="middle">
3185       <webidl> &quot;middle</webidl>
3186     </EnumValue>
3187     <EnumValue stringvalue="fast">
3188       <webidl> &quot;fast</webidl>
3189     </EnumValue>
3190     <EnumValue stringvalue="fastest">
3191       <webidl> &quot;fastest</webidl>
3192     </EnumValue>
3193     <EnumValue stringvalue="auto">
3194       <webidl> &quot;auto</webidl>
3195     </EnumValue>
3196   </Enum>
3197   <Interface name="WiperSetting" id="::WiperSetting">
3198     <webidl>[NoInterfaceObject]
3199 interface WiperSetting : <ref>VehicleCommonDataType</ref> {
3200         attribute <ref>WiperControl</ref> wiperControl;
3201         attribute <ref>Zone</ref>?        zone;
3202 };</webidl>
3203     <ExtendedAttributeList>
3204       <ExtendedAttribute name="NoInterfaceObject">
3205         <webidl>NoInterfaceObject</webidl>
3206       </ExtendedAttribute>
3207     </ExtendedAttributeList>
3208     <InterfaceInheritance>
3209       <Name name="VehicleCommonDataType"/>
3210     </InterfaceInheritance>
3211     <Attribute name="wiperControl" id="::WiperSetting::wiperControl">
3212       <webidl>        attribute <ref>WiperControl</ref> wiperControl;</webidl>
3213       <Type name="WiperControl"/>
3214     </Attribute>
3215     <Attribute name="zone" id="::WiperSetting::zone">
3216       <webidl>        attribute <ref>Zone</ref>?        zone;</webidl>
3217       <Type name="Zone" nullable="nullable"/>
3218     </Attribute>
3219   </Interface>
3220   <Interface name="Defrost" id="::Defrost">
3221     <webidl>[NoInterfaceObject]
3222 interface Defrost : <ref>VehicleCommonDataType</ref> {
3223         attribute boolean? defrostWindow;
3224         attribute boolean? defrostMirrors;
3225         attribute <ref>Zone</ref>?    zone;
3226 };</webidl>
3227     <ExtendedAttributeList>
3228       <ExtendedAttribute name="NoInterfaceObject">
3229         <webidl>NoInterfaceObject</webidl>
3230       </ExtendedAttribute>
3231     </ExtendedAttributeList>
3232     <InterfaceInheritance>
3233       <Name name="VehicleCommonDataType"/>
3234     </InterfaceInheritance>
3235     <Attribute name="defrostWindow" id="::Defrost::defrostWindow">
3236       <webidl>        attribute boolean? defrostWindow;</webidl>
3237       <Type type="boolean" nullable="nullable"/>
3238     </Attribute>
3239     <Attribute name="defrostMirrors" id="::Defrost::defrostMirrors">
3240       <webidl>        attribute boolean? defrostMirrors;</webidl>
3241       <Type type="boolean" nullable="nullable"/>
3242     </Attribute>
3243     <Attribute name="zone" id="::Defrost::zone">
3244       <webidl>        attribute <ref>Zone</ref>?    zone;</webidl>
3245       <Type name="Zone" nullable="nullable"/>
3246     </Attribute>
3247   </Interface>
3248   <Enum name="AirflowDirection" id="::AirflowDirection">
3249     <webidl>enum AirflowDirection {&quot;frontpanel&quot;, &quot;floorduct&quot;, &quot;bilevel&quot;, &quot;defrostfloor&quot;};</webidl>
3250     <EnumValue stringvalue="frontpanel">
3251       <webidl>&quot;frontpanel</webidl>
3252     </EnumValue>
3253     <EnumValue stringvalue="floorduct">
3254       <webidl> &quot;floorduct</webidl>
3255     </EnumValue>
3256     <EnumValue stringvalue="bilevel">
3257       <webidl> &quot;bilevel</webidl>
3258     </EnumValue>
3259     <EnumValue stringvalue="defrostfloor">
3260       <webidl> &quot;defrostfloor</webidl>
3261     </EnumValue>
3262   </Enum>
3263   <Interface name="ClimateControl" id="::ClimateControl">
3264     <webidl>[NoInterfaceObject]
3265 interface ClimateControl : <ref>VehicleCommonDataType</ref> {
3266         attribute <ref>AirflowDirection</ref> airflowDirection;
3267         attribute unsigned short    fanSpeedLevel;
3268         attribute byte?            targetTemperature;
3269         attribute boolean          airConditioning;
3270         attribute boolean          heater;
3271         attribute unsigned short?   seatHeater;
3272         attribute unsigned short?   seatCooler;
3273         attribute boolean          airRecirculation;
3274         attribute unsigned short?   steeringWheelHeater;
3275         attribute <ref>Zone</ref>?            zone;
3276 };</webidl>
3277     <ExtendedAttributeList>
3278       <ExtendedAttribute name="NoInterfaceObject">
3279         <webidl>NoInterfaceObject</webidl>
3280       </ExtendedAttribute>
3281     </ExtendedAttributeList>
3282     <InterfaceInheritance>
3283       <Name name="VehicleCommonDataType"/>
3284     </InterfaceInheritance>
3285     <Attribute name="airflowDirection" id="::ClimateControl::airflowDirection">
3286       <webidl>        attribute <ref>AirflowDirection</ref> airflowDirection;</webidl>
3287       <Type name="AirflowDirection"/>
3288     </Attribute>
3289     <Attribute name="fanSpeedLevel" id="::ClimateControl::fanSpeedLevel">
3290       <webidl>        attribute unsigned short    fanSpeedLevel;</webidl>
3291       <Type type="unsigned short"/>
3292     </Attribute>
3293     <Attribute name="targetTemperature" id="::ClimateControl::targetTemperature">
3294       <webidl>        attribute byte?            targetTemperature;</webidl>
3295       <Type type="byte" nullable="nullable"/>
3296     </Attribute>
3297     <Attribute name="airConditioning" id="::ClimateControl::airConditioning">
3298       <webidl>        attribute boolean          airConditioning;</webidl>
3299       <Type type="boolean"/>
3300     </Attribute>
3301     <Attribute name="heater" id="::ClimateControl::heater">
3302       <webidl>        attribute boolean          heater;</webidl>
3303       <Type type="boolean"/>
3304     </Attribute>
3305     <Attribute name="seatHeater" id="::ClimateControl::seatHeater">
3306       <webidl>        attribute unsigned short?   seatHeater;</webidl>
3307       <Type type="unsigned short" nullable="nullable"/>
3308     </Attribute>
3309     <Attribute name="seatCooler" id="::ClimateControl::seatCooler">
3310       <webidl>        attribute unsigned short?   seatCooler;</webidl>
3311       <Type type="unsigned short" nullable="nullable"/>
3312     </Attribute>
3313     <Attribute name="airRecirculation" id="::ClimateControl::airRecirculation">
3314       <webidl>        attribute boolean          airRecirculation;</webidl>
3315       <Type type="boolean"/>
3316     </Attribute>
3317     <Attribute name="steeringWheelHeater" id="::ClimateControl::steeringWheelHeater">
3318       <webidl>        attribute unsigned short?   steeringWheelHeater;</webidl>
3319       <Type type="unsigned short" nullable="nullable"/>
3320     </Attribute>
3321     <Attribute name="zone" id="::ClimateControl::zone">
3322       <webidl>        attribute <ref>Zone</ref>?            zone;</webidl>
3323       <Type name="Zone" nullable="nullable"/>
3324     </Attribute>
3325   </Interface>
3326   <Interface name="Sunroof" id="::Sunroof">
3327     <webidl>[NoInterfaceObject]
3328 interface Sunroof : <ref>VehicleCommonDataType</ref> {
3329         attribute unsigned short openness;
3330         attribute unsigned short tilt;
3331         attribute <ref>Zone</ref>?         zone;
3332 };</webidl>
3333     <ExtendedAttributeList>
3334       <ExtendedAttribute name="NoInterfaceObject">
3335         <webidl>NoInterfaceObject</webidl>
3336       </ExtendedAttribute>
3337     </ExtendedAttributeList>
3338     <InterfaceInheritance>
3339       <Name name="VehicleCommonDataType"/>
3340     </InterfaceInheritance>
3341     <Attribute name="openness" id="::Sunroof::openness">
3342       <webidl>        attribute unsigned short openness;</webidl>
3343       <Type type="unsigned short"/>
3344     </Attribute>
3345     <Attribute name="tilt" id="::Sunroof::tilt">
3346       <webidl>        attribute unsigned short tilt;</webidl>
3347       <Type type="unsigned short"/>
3348     </Attribute>
3349     <Attribute name="zone" id="::Sunroof::zone">
3350       <webidl>        attribute <ref>Zone</ref>?         zone;</webidl>
3351       <Type name="Zone" nullable="nullable"/>
3352     </Attribute>
3353   </Interface>
3354   <Enum name="ConvertibleRoofStatus" id="::ConvertibleRoofStatus">
3355     <webidl>enum ConvertibleRoofStatus {&quot;closed&quot;, &quot;closing&quot;, &quot;opening&quot;, &quot;opened&quot;};</webidl>
3356     <EnumValue stringvalue="closed">
3357       <webidl>&quot;closed</webidl>
3358     </EnumValue>
3359     <EnumValue stringvalue="closing">
3360       <webidl> &quot;closing</webidl>
3361     </EnumValue>
3362     <EnumValue stringvalue="opening">
3363       <webidl> &quot;opening</webidl>
3364     </EnumValue>
3365     <EnumValue stringvalue="opened">
3366       <webidl> &quot;opened</webidl>
3367     </EnumValue>
3368   </Enum>
3369   <Interface name="ConvertibleRoof" id="::ConvertibleRoof">
3370     <webidl>[NoInterfaceObject]
3371 interface ConvertibleRoof : <ref>VehicleCommonDataType</ref> {
3372         attribute <ref>ConvertibleRoofStatus</ref> status;
3373 };</webidl>
3374     <ExtendedAttributeList>
3375       <ExtendedAttribute name="NoInterfaceObject">
3376         <webidl>NoInterfaceObject</webidl>
3377       </ExtendedAttribute>
3378     </ExtendedAttributeList>
3379     <InterfaceInheritance>
3380       <Name name="VehicleCommonDataType"/>
3381     </InterfaceInheritance>
3382     <Attribute name="status" id="::ConvertibleRoof::status">
3383       <webidl>        attribute <ref>ConvertibleRoofStatus</ref> status;</webidl>
3384       <Type name="ConvertibleRoofStatus"/>
3385     </Attribute>
3386   </Interface>
3387   <Interface name="SideWindow" id="::SideWindow">
3388     <webidl>[NoInterfaceObject]
3389 interface SideWindow : <ref>VehicleCommonDataType</ref> {
3390         attribute boolean? lock;
3391         attribute unsigned short?    openness;
3392         attribute <ref>Zone</ref>?             zone;
3393 };</webidl>
3394     <ExtendedAttributeList>
3395       <ExtendedAttribute name="NoInterfaceObject">
3396         <webidl>NoInterfaceObject</webidl>
3397       </ExtendedAttribute>
3398     </ExtendedAttributeList>
3399     <InterfaceInheritance>
3400       <Name name="VehicleCommonDataType"/>
3401     </InterfaceInheritance>
3402     <Attribute name="lock" id="::SideWindow::lock">
3403       <webidl>        attribute boolean? lock;</webidl>
3404       <Type type="boolean" nullable="nullable"/>
3405     </Attribute>
3406     <Attribute name="openness" id="::SideWindow::openness">
3407       <webidl>        attribute unsigned short?    openness;</webidl>
3408       <Type type="unsigned short" nullable="nullable"/>
3409     </Attribute>
3410     <Attribute name="zone" id="::SideWindow::zone">
3411       <webidl>        attribute <ref>Zone</ref>?             zone;</webidl>
3412       <Type name="Zone" nullable="nullable"/>
3413     </Attribute>
3414   </Interface>
3415   <Interface name="AtmosphericPressure" id="::AtmosphericPressure">
3416     <webidl>[NoInterfaceObject]
3417 interface AtmosphericPressure : <ref>VehicleCommonDataType</ref> {
3418         readonly attribute unsigned short pressure;
3419 };</webidl>
3420     <ExtendedAttributeList>
3421       <ExtendedAttribute name="NoInterfaceObject">
3422         <webidl>NoInterfaceObject</webidl>
3423       </ExtendedAttribute>
3424     </ExtendedAttributeList>
3425     <InterfaceInheritance>
3426       <Name name="VehicleCommonDataType"/>
3427     </InterfaceInheritance>
3428     <Attribute readonly="readonly" name="pressure" id="::AtmosphericPressure::pressure">
3429       <webidl>        readonly attribute unsigned short pressure;</webidl>
3430       <Type type="unsigned short"/>
3431     </Attribute>
3432   </Interface>
3433   <Enum name="LaneDepartureStatus" id="::LaneDepartureStatus">
3434     <webidl>enum LaneDepartureStatus {&quot;off&quot;, &quot;pause&quot;, &quot;running&quot;};</webidl>
3435     <EnumValue stringvalue="off">
3436       <webidl>&quot;off</webidl>
3437     </EnumValue>
3438     <EnumValue stringvalue="pause">
3439       <webidl> &quot;pause</webidl>
3440     </EnumValue>
3441     <EnumValue stringvalue="running">
3442       <webidl> &quot;running</webidl>
3443     </EnumValue>
3444   </Enum>
3445   <Interface name="LaneDepartureDetection" id="::LaneDepartureDetection">
3446     <webidl>[NoInterfaceObject]
3447 interface LaneDepartureDetection : <ref>VehicleCommonDataType</ref> {
3448         readonly attribute <ref>LaneDepartureStatus</ref> status;
3449 };</webidl>
3450     <ExtendedAttributeList>
3451       <ExtendedAttribute name="NoInterfaceObject">
3452         <webidl>NoInterfaceObject</webidl>
3453       </ExtendedAttribute>
3454     </ExtendedAttributeList>
3455     <InterfaceInheritance>
3456       <Name name="VehicleCommonDataType"/>
3457     </InterfaceInheritance>
3458     <Attribute readonly="readonly" name="status" id="::LaneDepartureDetection::status">
3459       <webidl>        readonly attribute <ref>LaneDepartureStatus</ref> status;</webidl>
3460       <Type name="LaneDepartureStatus"/>
3461     </Attribute>
3462   </Interface>
3463   <Enum name="AlarmStatus" id="::AlarmStatus">
3464     <webidl>enum AlarmStatus {&quot;disarmed&quot;, &quot;preArmed&quot;, &quot;armed&quot;, &quot;alarmed&quot;};</webidl>
3465     <EnumValue stringvalue="disarmed">
3466       <webidl>&quot;disarmed</webidl>
3467     </EnumValue>
3468     <EnumValue stringvalue="preArmed">
3469       <webidl> &quot;preArmed</webidl>
3470     </EnumValue>
3471     <EnumValue stringvalue="armed">
3472       <webidl> &quot;armed</webidl>
3473     </EnumValue>
3474     <EnumValue stringvalue="alarmed">
3475       <webidl> &quot;alarmed</webidl>
3476     </EnumValue>
3477   </Enum>
3478   <Interface name="Alarm" id="::Alarm">
3479     <webidl>[NoInterfaceObject]
3480 interface Alarm : <ref>VehicleCommonDataType</ref> {
3481         attribute <ref>AlarmStatus</ref> status;
3482 };</webidl>
3483     <ExtendedAttributeList>
3484       <ExtendedAttribute name="NoInterfaceObject">
3485         <webidl>NoInterfaceObject</webidl>
3486       </ExtendedAttribute>
3487     </ExtendedAttributeList>
3488     <InterfaceInheritance>
3489       <Name name="VehicleCommonDataType"/>
3490     </InterfaceInheritance>
3491     <Attribute name="status" id="::Alarm::status">
3492       <webidl>        attribute <ref>AlarmStatus</ref> status;</webidl>
3493       <Type name="AlarmStatus"/>
3494     </Attribute>
3495   </Interface>
3496   <Enum name="ParkingBrakeStatus" id="::ParkingBrakeStatus">
3497     <webidl>enum ParkingBrakeStatus {&quot;inactive&quot;, &quot;active&quot;, &quot;error&quot;};</webidl>
3498     <EnumValue stringvalue="inactive">
3499       <webidl>&quot;inactive</webidl>
3500     </EnumValue>
3501     <EnumValue stringvalue="active">
3502       <webidl> &quot;active</webidl>
3503     </EnumValue>
3504     <EnumValue stringvalue="error">
3505       <webidl> &quot;error</webidl>
3506     </EnumValue>
3507   </Enum>
3508   <Interface name="ParkingBrake" id="::ParkingBrake">
3509     <webidl>[NoInterfaceObject]
3510 interface ParkingBrake : <ref>VehicleCommonDataType</ref> {
3511         readonly attribute <ref>ParkingBrakeStatus</ref> status;
3512 };</webidl>
3513     <ExtendedAttributeList>
3514       <ExtendedAttribute name="NoInterfaceObject">
3515         <webidl>NoInterfaceObject</webidl>
3516       </ExtendedAttribute>
3517     </ExtendedAttributeList>
3518     <InterfaceInheritance>
3519       <Name name="VehicleCommonDataType"/>
3520     </InterfaceInheritance>
3521     <Attribute readonly="readonly" name="status" id="::ParkingBrake::status">
3522       <webidl>        readonly attribute <ref>ParkingBrakeStatus</ref> status;</webidl>
3523       <Type name="ParkingBrakeStatus"/>
3524     </Attribute>
3525   </Interface>
3526   <Interface name="ParkingLights" id="::ParkingLights">
3527     <webidl>[NoInterfaceObject]
3528 interface ParkingLights : <ref>VehicleCommonDataType</ref> {
3529         readonly attribute boolean status;
3530                      attribute boolean setting;
3531 };</webidl>
3532     <ExtendedAttributeList>
3533       <ExtendedAttribute name="NoInterfaceObject">
3534         <webidl>NoInterfaceObject</webidl>
3535       </ExtendedAttribute>
3536     </ExtendedAttributeList>
3537     <InterfaceInheritance>
3538       <Name name="VehicleCommonDataType"/>
3539     </InterfaceInheritance>
3540     <Attribute readonly="readonly" name="status" id="::ParkingLights::status">
3541       <webidl>        readonly attribute boolean status;</webidl>
3542       <Type type="boolean"/>
3543     </Attribute>
3544     <Attribute name="setting" id="::ParkingLights::setting">
3545       <webidl>                     attribute boolean setting;</webidl>
3546       <Type type="boolean"/>
3547     </Attribute>
3548   </Interface>
3549 </Module>
3550 <Module name="MediaServer" id="::MediaServer">
3551   <webidl>  module MediaServer {
3552   [NoInterfaceObject] interface MediaServerManagerObject {
3553                 readonly attribute <ref>MediaServerManager</ref> mediaserver;
3554 };
3555  
3556 <ref>Tizen</ref> implements <ref>MediaServerManagerObject</ref>;
3557     
3558 [NoInterfaceObject] interface MediaServerManager  { 
3559             void scanNetwork(<ref>MediaServerFoundServerCallback</ref> successCallback, optional <ref>MediaServerErrorCallback</ref> errorCallback);
3560 };    
3561
3562 [NoInterfaceObject] interface MediaServer {
3563             readonly attribute DOMString id;
3564             readonly attribute DOMString friendlyName;
3565             readonly attribute object root;
3566                                             
3567             void browse(DOMString containerId, DOMString sortMode, unsigned long count, unsigned long offset, <ref>MediaServerBrowseFindCallback</ref> successCallback, optional <ref>MediaServerErrorCallback</ref> errorCallback);
3568                 void find(DOMString containerId, DOMString searchFilter, DOMString sortMode, unsigned long count, unsigned long offset, <ref>MediaServerBrowseFindCallback</ref> successCallback, optional <ref>MediaServerErrorCallback</ref> errorCallback);
3569 };
3570             
3571 [NoInterfaceObject] interface MediaServerError {
3572              const unsigned short GENERIC = 1;
3573              attribute unsigned short code;
3574                  attribute DOMString message;
3575 };
3576
3577 [Callback=FunctionOnly, NoInterfaceObject] interface MediaServerFoundServerCallback {
3578             void onsuccess(<ref>MediaServer</ref> value);
3579 };
3580
3581 [Callback=FunctionOnly, NoInterfaceObject] interface MediaServerBrowseFindCallback {
3582     void onsuccess(sequence&lt; object > value);
3583 };
3584
3585 [Callback=FunctionOnly, NoInterfaceObject] interface MediaServerErrorCallback {
3586     void onfailure(<ref>MediaServerError</ref> error);
3587 };</webidl>
3588   <Interface name="MediaServerManagerObject" id="::MediaServerManagerObject">
3589     <webidl>[NoInterfaceObject] interface MediaServerManagerObject {
3590                 readonly attribute <ref>MediaServerManager</ref> mediaserver;
3591 };</webidl>
3592     <ExtendedAttributeList>
3593       <ExtendedAttribute name="NoInterfaceObject">
3594         <webidl>NoInterfaceObject</webidl>
3595       </ExtendedAttribute>
3596     </ExtendedAttributeList>
3597     <Attribute readonly="readonly" name="mediaserver" id="::MediaServerManagerObject::mediaserver">
3598       <webidl>                readonly attribute <ref>MediaServerManager</ref> mediaserver;</webidl>
3599       <Type name="MediaServerManager"/>
3600     </Attribute>
3601   </Interface>
3602   <Implements name1="Tizen" name2="MediaServerManagerObject">
3603     <webidl><ref>Tizen</ref> implements <ref>MediaServerManagerObject</ref>;</webidl>
3604   </Implements>
3605   <Interface name="MediaServerManager" id="::MediaServerManager">
3606     <webidl>[NoInterfaceObject] interface MediaServerManager  { 
3607             void scanNetwork(<ref>MediaServerFoundServerCallback</ref> successCallback, optional <ref>MediaServerErrorCallback</ref> errorCallback);
3608 };</webidl>
3609     <ExtendedAttributeList>
3610       <ExtendedAttribute name="NoInterfaceObject">
3611         <webidl>NoInterfaceObject</webidl>
3612       </ExtendedAttribute>
3613     </ExtendedAttributeList>
3614     <Operation name="scanNetwork" id="::MediaServerManager::scanNetwork">
3615       <webidl>            void scanNetwork(<ref>MediaServerFoundServerCallback</ref> successCallback, optional <ref>MediaServerErrorCallback</ref> errorCallback);</webidl>
3616       <Type type="void"/>
3617       <ArgumentList>
3618         <Argument name="successCallback">
3619           <Type name="MediaServerFoundServerCallback"/>
3620         </Argument>
3621         <Argument optional="optional" name="errorCallback">
3622           <Type name="MediaServerErrorCallback"/>
3623         </Argument>
3624       </ArgumentList>
3625     </Operation>
3626   </Interface>
3627   <Interface name="MediaServer" id="::MediaServer">
3628     <webidl>[NoInterfaceObject] interface MediaServer {
3629             readonly attribute DOMString id;
3630             readonly attribute DOMString friendlyName;
3631             readonly attribute object root;
3632                                             
3633             void browse(DOMString containerId, DOMString sortMode, unsigned long count, unsigned long offset, <ref>MediaServerBrowseFindCallback</ref> successCallback, optional <ref>MediaServerErrorCallback</ref> errorCallback);
3634                 void find(DOMString containerId, DOMString searchFilter, DOMString sortMode, unsigned long count, unsigned long offset, <ref>MediaServerBrowseFindCallback</ref> successCallback, optional <ref>MediaServerErrorCallback</ref> errorCallback);
3635 };</webidl>
3636     <ExtendedAttributeList>
3637       <ExtendedAttribute name="NoInterfaceObject">
3638         <webidl>NoInterfaceObject</webidl>
3639       </ExtendedAttribute>
3640     </ExtendedAttributeList>
3641     <Attribute readonly="readonly" name="id" id="::MediaServer::id">
3642       <webidl>            readonly attribute DOMString id;</webidl>
3643       <Type type="DOMString"/>
3644     </Attribute>
3645     <Attribute readonly="readonly" name="friendlyName" id="::MediaServer::friendlyName">
3646       <webidl>            readonly attribute DOMString friendlyName;</webidl>
3647       <Type type="DOMString"/>
3648     </Attribute>
3649     <Attribute readonly="readonly" name="root" id="::MediaServer::root">
3650       <webidl>            readonly attribute object root;</webidl>
3651       <Type type="object"/>
3652     </Attribute>
3653     <Operation name="browse" id="::MediaServer::browse">
3654       <webidl>            void browse(DOMString containerId, DOMString sortMode, unsigned long count, unsigned long offset, <ref>MediaServerBrowseFindCallback</ref> successCallback, optional <ref>MediaServerErrorCallback</ref> errorCallback);</webidl>
3655       <Type type="void"/>
3656       <ArgumentList>
3657         <Argument name="containerId">
3658           <Type type="DOMString"/>
3659         </Argument>
3660         <Argument name="sortMode">
3661           <Type type="DOMString"/>
3662         </Argument>
3663         <Argument name="count">
3664           <Type type="unsigned long"/>
3665         </Argument>
3666         <Argument name="offset">
3667           <Type type="unsigned long"/>
3668         </Argument>
3669         <Argument name="successCallback">
3670           <Type name="MediaServerBrowseFindCallback"/>
3671         </Argument>
3672         <Argument optional="optional" name="errorCallback">
3673           <Type name="MediaServerErrorCallback"/>
3674         </Argument>
3675       </ArgumentList>
3676     </Operation>
3677     <Operation name="find" id="::MediaServer::find">
3678       <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>
3679       <Type type="void"/>
3680       <ArgumentList>
3681         <Argument name="containerId">
3682           <Type type="DOMString"/>
3683         </Argument>
3684         <Argument name="searchFilter">
3685           <Type type="DOMString"/>
3686         </Argument>
3687         <Argument name="sortMode">
3688           <Type type="DOMString"/>
3689         </Argument>
3690         <Argument name="count">
3691           <Type type="unsigned long"/>
3692         </Argument>
3693         <Argument name="offset">
3694           <Type type="unsigned long"/>
3695         </Argument>
3696         <Argument name="successCallback">
3697           <Type name="MediaServerBrowseFindCallback"/>
3698         </Argument>
3699         <Argument optional="optional" name="errorCallback">
3700           <Type name="MediaServerErrorCallback"/>
3701         </Argument>
3702       </ArgumentList>
3703     </Operation>
3704   </Interface>
3705   <Interface name="MediaServerError" id="::MediaServerError">
3706     <webidl>[NoInterfaceObject] interface MediaServerError {
3707              const unsigned short GENERIC = 1;
3708              attribute unsigned short code;
3709                  attribute DOMString message;
3710 };</webidl>
3711     <ExtendedAttributeList>
3712       <ExtendedAttribute name="NoInterfaceObject">
3713         <webidl>NoInterfaceObject</webidl>
3714       </ExtendedAttribute>
3715     </ExtendedAttributeList>
3716     <Const name="GENERIC" value="1" id="::MediaServerError::GENERIC">
3717       <webidl>             const unsigned short GENERIC = 1;</webidl>
3718       <Type type="unsigned short"/>
3719     </Const>
3720     <Attribute name="code" id="::MediaServerError::code">
3721       <webidl>             attribute unsigned short code;</webidl>
3722       <Type type="unsigned short"/>
3723     </Attribute>
3724     <Attribute name="message" id="::MediaServerError::message">
3725       <webidl>                 attribute DOMString message;</webidl>
3726       <Type type="DOMString"/>
3727     </Attribute>
3728   </Interface>
3729   <Interface name="MediaServerFoundServerCallback" id="::MediaServerFoundServerCallback">
3730     <webidl>[Callback=FunctionOnly, NoInterfaceObject] interface MediaServerFoundServerCallback {
3731             void onsuccess(<ref>MediaServer</ref> value);
3732 };</webidl>
3733     <ExtendedAttributeList>
3734       <ExtendedAttribute name="Callback" value="FunctionOnly">
3735         <webidl>Callback</webidl>
3736       </ExtendedAttribute>
3737       <ExtendedAttribute name="NoInterfaceObject">
3738         <webidl> NoInterfaceObject</webidl>
3739       </ExtendedAttribute>
3740     </ExtendedAttributeList>
3741     <Operation name="onsuccess" id="::MediaServerFoundServerCallback::onsuccess">
3742       <webidl>            void onsuccess(<ref>MediaServer</ref> value);</webidl>
3743       <Type type="void"/>
3744       <ArgumentList>
3745         <Argument name="value">
3746           <Type name="MediaServer"/>
3747         </Argument>
3748       </ArgumentList>
3749     </Operation>
3750   </Interface>
3751   <Interface name="MediaServerBrowseFindCallback" id="::MediaServerBrowseFindCallback">
3752     <webidl>[Callback=FunctionOnly, NoInterfaceObject] interface MediaServerBrowseFindCallback {
3753     void onsuccess(sequence&lt; object > value);
3754 };</webidl>
3755     <ExtendedAttributeList>
3756       <ExtendedAttribute name="Callback" value="FunctionOnly">
3757         <webidl>Callback</webidl>
3758       </ExtendedAttribute>
3759       <ExtendedAttribute name="NoInterfaceObject">
3760         <webidl> NoInterfaceObject</webidl>
3761       </ExtendedAttribute>
3762     </ExtendedAttributeList>
3763     <Operation name="onsuccess" id="::MediaServerBrowseFindCallback::onsuccess">
3764       <webidl>    void onsuccess(sequence&lt; object > value);</webidl>
3765       <Type type="void"/>
3766       <ArgumentList>
3767         <Argument name="value">
3768           <Type type="sequence">
3769             <Type type="object"/>
3770           </Type>
3771         </Argument>
3772       </ArgumentList>
3773     </Operation>
3774   </Interface>
3775   <Interface name="MediaServerErrorCallback" id="::MediaServerErrorCallback">
3776     <webidl>[Callback=FunctionOnly, NoInterfaceObject] interface MediaServerErrorCallback {
3777     void onfailure(<ref>MediaServerError</ref> error);
3778 };</webidl>
3779     <ExtendedAttributeList>
3780       <ExtendedAttribute name="Callback" value="FunctionOnly">
3781         <webidl>Callback</webidl>
3782       </ExtendedAttribute>
3783       <ExtendedAttribute name="NoInterfaceObject">
3784         <webidl> NoInterfaceObject</webidl>
3785       </ExtendedAttribute>
3786     </ExtendedAttributeList>
3787     <Operation name="onfailure" id="::MediaServerErrorCallback::onfailure">
3788       <webidl>    void onfailure(<ref>MediaServerError</ref> error);</webidl>
3789       <Type type="void"/>
3790       <ArgumentList>
3791         <Argument name="error">
3792           <Type name="MediaServerError"/>
3793         </Argument>
3794       </ArgumentList>
3795     </Operation>
3796   </Interface>
3797 </Module>
3798 <Module name="Locale" id="::Locale">
3799   <webidl>  module Locale {
3800   [NoInterfaceObject]
3801 interface LocaleManagerObject {
3802     readonly attribute <ref>Locale</ref> locale;
3803 };
3804
3805 <ref>Tizen</ref> implements <ref>LocaleManagerObject</ref>;
3806
3807 callback LocaleChangedCallback = void (DOMString newLocale);
3808
3809
3810 [NoInterfaceObject]
3811 interface Locale  { 
3812
3813         void getLocale();
3814         
3815          void setLocale(DOMString newLocale);
3816          
3817          void localeChanged(<ref>LocaleChangedCallback</ref> cb);
3818
3819 };</webidl>
3820   <Interface name="LocaleManagerObject" id="::LocaleManagerObject">
3821     <webidl>[NoInterfaceObject]
3822 interface LocaleManagerObject {
3823     readonly attribute <ref>Locale</ref> locale;
3824 };</webidl>
3825     <descriptive>
3826        <description>
3827         <p>
3828 Details. 
3829         </p>
3830         <p>
3831 def-api-feature http://tizen.org/api/vehicle 
3832 brief Allows access to the vehicle API
3833         </p>
3834        </description>
3835     </descriptive>
3836     <ExtendedAttributeList>
3837       <ExtendedAttribute name="NoInterfaceObject">
3838         <webidl>NoInterfaceObject</webidl>
3839       </ExtendedAttribute>
3840     </ExtendedAttributeList>
3841     <Attribute readonly="readonly" name="locale" id="::LocaleManagerObject::locale">
3842       <webidl>    readonly attribute <ref>Locale</ref> locale;</webidl>
3843       <Type name="Locale"/>
3844     </Attribute>
3845   </Interface>
3846   <Implements name1="Tizen" name2="LocaleManagerObject">
3847     <webidl><ref>Tizen</ref> implements <ref>LocaleManagerObject</ref>;</webidl>
3848   </Implements>
3849   <Callback name="LocaleChangedCallback" id="::LocaleChangedCallback">
3850     <webidl>callback LocaleChangedCallback = void (DOMString newLocale);</webidl>
3851     <Type type="void"/>
3852     <ArgumentList>
3853       <Argument name="newLocale">
3854         <Type type="DOMString"/>
3855       </Argument>
3856     </ArgumentList>
3857   </Callback>
3858   <Interface name="Locale" id="::Locale">
3859     <webidl>[NoInterfaceObject]
3860 interface Locale  { 
3861
3862         void getLocale();
3863         
3864          void setLocale(DOMString newLocale);
3865          
3866          void localeChanged(<ref>LocaleChangedCallback</ref> cb);
3867
3868 };</webidl>
3869     <ExtendedAttributeList>
3870       <ExtendedAttribute name="NoInterfaceObject">
3871         <webidl>NoInterfaceObject</webidl>
3872       </ExtendedAttribute>
3873     </ExtendedAttributeList>
3874     <Operation name="getLocale" id="::Locale::getLocale">
3875       <webidl>        void getLocale();</webidl>
3876       <descriptive>
3877          <description>
3878           <p>
3879 brief gets the current locale
3880 returns current locale in ISO 639-2 format (ie en_US for english US)
3881           </p>
3882          </description>
3883       </descriptive>
3884       <Type type="void"/>
3885       <ArgumentList/>
3886     </Operation>
3887     <Operation name="setLocale" id="::Locale::setLocale">
3888       <webidl>         void setLocale(DOMString newLocale);</webidl>
3889       <descriptive>
3890          <description>
3891           <p>
3892 brief sets the system locale
3893 param newLocale locale to set in ISO 639-2 format
3894           </p>
3895          </description>
3896       </descriptive>
3897       <Type type="void"/>
3898       <ArgumentList>
3899         <Argument name="newLocale">
3900           <Type type="DOMString"/>
3901         </Argument>
3902       </ArgumentList>
3903     </Operation>
3904     <Operation name="localeChanged" id="::Locale::localeChanged">
3905       <webidl>         void localeChanged(<ref>LocaleChangedCallback</ref> cb);</webidl>
3906       <descriptive>
3907          <description>
3908           <p>
3909 brief subscribe to locale changes.
3910 param cb callback to be called when this even occurs.
3911           </p>
3912          </description>
3913       </descriptive>
3914       <Type type="void"/>
3915       <ArgumentList>
3916         <Argument name="cb">
3917           <Type name="LocaleChangedCallback"/>
3918         </Argument>
3919       </ArgumentList>
3920     </Operation>
3921   </Interface>
3922 </Module>
3923 <Module name="Speech" id="::Speech">
3924   <webidl>  module Speech {
3925   [NoInterfaceObject]
3926    interface SpeechManagerObject {
3927                readonly attribute <ref>SpeechManager</ref> speech;
3928    };
3929    <ref>Tizen</ref> implements <ref>SpeechManagerObject</ref>;
3930
3931
3932    [NoInterfaceObject]
3933    interface SpeechManager { 
3934                    void vocalizeString(DOMString speakString);
3935    };
3936
3937    [Constructor]
3938     interface SpeechRecognition : <ref>EventTarget</ref> {
3939         attribute <ref>SpeechGrammarList</ref> grammars;
3940         attribute DOMString lang;
3941         attribute boolean continuous;
3942         attribute boolean interimResults;
3943         attribute unsigned long maxAlternatives;
3944         attribute DOMString serviceURI;
3945
3946         void start();
3947         void stop();
3948         void abort();
3949
3950         attribute <ref>EventHandler</ref> onaudiostart;
3951         attribute <ref>EventHandler</ref> onsoundstart;
3952         attribute <ref>EventHandler</ref> onspeechstart;
3953         attribute <ref>EventHandler</ref> onspeechend;
3954         attribute <ref>EventHandler</ref> onsoundend;
3955         attribute <ref>EventHandler</ref> onaudioend;
3956         attribute <ref>EventHandler</ref> onresult;
3957         attribute <ref>EventHandler</ref> onnomatch;
3958         attribute <ref>EventHandler</ref> onerror;
3959         attribute <ref>EventHandler</ref> onstart;
3960         attribute <ref>EventHandler</ref> onend;
3961     };
3962
3963         enum ErrorCode {
3964           &quot;no-speech&quot;,
3965           &quot;aborted&quot;,
3966           &quot;audio-capture&quot;,
3967           &quot;network&quot;,
3968           &quot;not-allowed&quot;,
3969           &quot;service-not-allowed&quot;,
3970           &quot;bad-grammar&quot;,
3971           &quot;language-not-supported&quot;
3972         };
3973
3974     interface SpeechRecognitionError : <ref>Event</ref> {
3975         readonly attribute <ref>ErrorCode</ref> error;
3976         readonly attribute DOMString message;
3977     };
3978
3979     interface SpeechRecognitionAlternative {
3980         readonly attribute DOMString transcript;
3981         readonly attribute float confidence;
3982     };
3983
3984     interface SpeechRecognitionResult {
3985         readonly attribute unsigned long length;
3986         getter <ref>SpeechRecognitionAlternative</ref> item(unsigned long index);
3987         readonly attribute boolean final;
3988     };
3989
3990     interface SpeechRecognitionResultList {
3991         readonly attribute unsigned long length;
3992         getter <ref>SpeechRecognitionResult</ref> item(unsigned long index);
3993     };
3994
3995     interface SpeechRecognitionEvent : <ref>Event</ref> {
3996         readonly attribute unsigned long resultIndex;
3997         readonly attribute <ref>SpeechRecognitionResultList</ref> results;
3998         readonly attribute any interpretation;
3999         readonly attribute <ref>Document</ref> emma;
4000     };
4001
4002     [Constructor]
4003     interface SpeechGrammar {
4004         attribute DOMString src;
4005         attribute float weight;
4006     };
4007
4008     [Constructor]
4009     interface SpeechGrammarList {
4010         readonly attribute unsigned long length;
4011         getter <ref>SpeechGrammar</ref> item(unsigned long index);
4012         void addFromURI(DOMString src, optional float weight);
4013         void addFromString(DOMString string, optional float weight);
4014     };
4015 };</webidl>
4016   <Interface name="SpeechManagerObject" id="::SpeechManagerObject">
4017     <webidl>   [NoInterfaceObject]
4018    interface SpeechManagerObject {
4019                readonly attribute <ref>SpeechManager</ref> speech;
4020    };</webidl>
4021     <ExtendedAttributeList>
4022       <ExtendedAttribute name="NoInterfaceObject">
4023         <webidl>NoInterfaceObject</webidl>
4024       </ExtendedAttribute>
4025     </ExtendedAttributeList>
4026     <Attribute readonly="readonly" name="speech" id="::SpeechManagerObject::speech">
4027       <webidl>               readonly attribute <ref>SpeechManager</ref> speech;</webidl>
4028       <Type name="SpeechManager"/>
4029     </Attribute>
4030   </Interface>
4031   <Implements name1="Tizen" name2="SpeechManagerObject">
4032     <webidl>   <ref>Tizen</ref> implements <ref>SpeechManagerObject</ref>;</webidl>
4033   </Implements>
4034   <Interface name="SpeechManager" id="::SpeechManager">
4035     <webidl>   [NoInterfaceObject]
4036    interface SpeechManager { 
4037                    void vocalizeString(DOMString speakString);
4038    };</webidl>
4039     <ExtendedAttributeList>
4040       <ExtendedAttribute name="NoInterfaceObject">
4041         <webidl>NoInterfaceObject</webidl>
4042       </ExtendedAttribute>
4043     </ExtendedAttributeList>
4044     <Operation name="vocalizeString" id="::SpeechManager::vocalizeString">
4045       <webidl>                   void vocalizeString(DOMString speakString);</webidl>
4046       <Type type="void"/>
4047       <ArgumentList>
4048         <Argument name="speakString">
4049           <Type type="DOMString"/>
4050         </Argument>
4051       </ArgumentList>
4052     </Operation>
4053   </Interface>
4054   <Interface name="SpeechRecognition" id="::SpeechRecognition">
4055     <webidl>   [Constructor]
4056     interface SpeechRecognition : <ref>EventTarget</ref> {
4057         attribute <ref>SpeechGrammarList</ref> grammars;
4058         attribute DOMString lang;
4059         attribute boolean continuous;
4060         attribute boolean interimResults;
4061         attribute unsigned long maxAlternatives;
4062         attribute DOMString serviceURI;
4063
4064         void start();
4065         void stop();
4066         void abort();
4067
4068         attribute <ref>EventHandler</ref> onaudiostart;
4069         attribute <ref>EventHandler</ref> onsoundstart;
4070         attribute <ref>EventHandler</ref> onspeechstart;
4071         attribute <ref>EventHandler</ref> onspeechend;
4072         attribute <ref>EventHandler</ref> onsoundend;
4073         attribute <ref>EventHandler</ref> onaudioend;
4074         attribute <ref>EventHandler</ref> onresult;
4075         attribute <ref>EventHandler</ref> onnomatch;
4076         attribute <ref>EventHandler</ref> onerror;
4077         attribute <ref>EventHandler</ref> onstart;
4078         attribute <ref>EventHandler</ref> onend;
4079     };</webidl>
4080     <ExtendedAttributeList>
4081       <ExtendedAttribute name="Constructor">
4082         <webidl>Constructor</webidl>
4083       </ExtendedAttribute>
4084     </ExtendedAttributeList>
4085     <InterfaceInheritance>
4086       <Name name="EventTarget"/>
4087     </InterfaceInheritance>
4088     <Attribute name="grammars" id="::SpeechRecognition::grammars">
4089       <webidl>        attribute <ref>SpeechGrammarList</ref> grammars;</webidl>
4090       <Type name="SpeechGrammarList"/>
4091     </Attribute>
4092     <Attribute name="lang" id="::SpeechRecognition::lang">
4093       <webidl>        attribute DOMString lang;</webidl>
4094       <Type type="DOMString"/>
4095     </Attribute>
4096     <Attribute name="continuous" id="::SpeechRecognition::continuous">
4097       <webidl>        attribute boolean continuous;</webidl>
4098       <Type type="boolean"/>
4099     </Attribute>
4100     <Attribute name="interimResults" id="::SpeechRecognition::interimResults">
4101       <webidl>        attribute boolean interimResults;</webidl>
4102       <Type type="boolean"/>
4103     </Attribute>
4104     <Attribute name="maxAlternatives" id="::SpeechRecognition::maxAlternatives">
4105       <webidl>        attribute unsigned long maxAlternatives;</webidl>
4106       <Type type="unsigned long"/>
4107     </Attribute>
4108     <Attribute name="serviceURI" id="::SpeechRecognition::serviceURI">
4109       <webidl>        attribute DOMString serviceURI;</webidl>
4110       <Type type="DOMString"/>
4111     </Attribute>
4112     <Operation name="start" id="::SpeechRecognition::start">
4113       <webidl>        void start();</webidl>
4114       <Type type="void"/>
4115       <ArgumentList/>
4116     </Operation>
4117     <Operation name="stop" id="::SpeechRecognition::stop">
4118       <webidl>        void stop();</webidl>
4119       <Type type="void"/>
4120       <ArgumentList/>
4121     </Operation>
4122     <Operation name="abort" id="::SpeechRecognition::abort">
4123       <webidl>        void abort();</webidl>
4124       <Type type="void"/>
4125       <ArgumentList/>
4126     </Operation>
4127     <Attribute name="onaudiostart" id="::SpeechRecognition::onaudiostart">
4128       <webidl>        attribute <ref>EventHandler</ref> onaudiostart;</webidl>
4129       <Type name="EventHandler"/>
4130     </Attribute>
4131     <Attribute name="onsoundstart" id="::SpeechRecognition::onsoundstart">
4132       <webidl>        attribute <ref>EventHandler</ref> onsoundstart;</webidl>
4133       <Type name="EventHandler"/>
4134     </Attribute>
4135     <Attribute name="onspeechstart" id="::SpeechRecognition::onspeechstart">
4136       <webidl>        attribute <ref>EventHandler</ref> onspeechstart;</webidl>
4137       <Type name="EventHandler"/>
4138     </Attribute>
4139     <Attribute name="onspeechend" id="::SpeechRecognition::onspeechend">
4140       <webidl>        attribute <ref>EventHandler</ref> onspeechend;</webidl>
4141       <Type name="EventHandler"/>
4142     </Attribute>
4143     <Attribute name="onsoundend" id="::SpeechRecognition::onsoundend">
4144       <webidl>        attribute <ref>EventHandler</ref> onsoundend;</webidl>
4145       <Type name="EventHandler"/>
4146     </Attribute>
4147     <Attribute name="onaudioend" id="::SpeechRecognition::onaudioend">
4148       <webidl>        attribute <ref>EventHandler</ref> onaudioend;</webidl>
4149       <Type name="EventHandler"/>
4150     </Attribute>
4151     <Attribute name="onresult" id="::SpeechRecognition::onresult">
4152       <webidl>        attribute <ref>EventHandler</ref> onresult;</webidl>
4153       <Type name="EventHandler"/>
4154     </Attribute>
4155     <Attribute name="onnomatch" id="::SpeechRecognition::onnomatch">
4156       <webidl>        attribute <ref>EventHandler</ref> onnomatch;</webidl>
4157       <Type name="EventHandler"/>
4158     </Attribute>
4159     <Attribute name="onerror" id="::SpeechRecognition::onerror">
4160       <webidl>        attribute <ref>EventHandler</ref> onerror;</webidl>
4161       <Type name="EventHandler"/>
4162     </Attribute>
4163     <Attribute name="onstart" id="::SpeechRecognition::onstart">
4164       <webidl>        attribute <ref>EventHandler</ref> onstart;</webidl>
4165       <Type name="EventHandler"/>
4166     </Attribute>
4167     <Attribute name="onend" id="::SpeechRecognition::onend">
4168       <webidl>        attribute <ref>EventHandler</ref> onend;</webidl>
4169       <Type name="EventHandler"/>
4170     </Attribute>
4171   </Interface>
4172   <Enum name="ErrorCode" id="::ErrorCode">
4173     <webidl>        enum ErrorCode {
4174           &quot;no-speech&quot;,
4175           &quot;aborted&quot;,
4176           &quot;audio-capture&quot;,
4177           &quot;network&quot;,
4178           &quot;not-allowed&quot;,
4179           &quot;service-not-allowed&quot;,
4180           &quot;bad-grammar&quot;,
4181           &quot;language-not-supported&quot;
4182         };</webidl>
4183     <EnumValue stringvalue="no-speech">
4184       <webidl>          &quot;no-speech</webidl>
4185     </EnumValue>
4186     <EnumValue stringvalue="aborted">
4187       <webidl>          &quot;aborted</webidl>
4188     </EnumValue>
4189     <EnumValue stringvalue="audio-capture">
4190       <webidl>          &quot;audio-capture</webidl>
4191     </EnumValue>
4192     <EnumValue stringvalue="network">
4193       <webidl>          &quot;network</webidl>
4194     </EnumValue>
4195     <EnumValue stringvalue="not-allowed">
4196       <webidl>          &quot;not-allowed</webidl>
4197     </EnumValue>
4198     <EnumValue stringvalue="service-not-allowed">
4199       <webidl>          &quot;service-not-allowed</webidl>
4200     </EnumValue>
4201     <EnumValue stringvalue="bad-grammar">
4202       <webidl>          &quot;bad-grammar</webidl>
4203     </EnumValue>
4204     <EnumValue stringvalue="language-not-supported">
4205       <webidl>          &quot;language-not-supported</webidl>
4206     </EnumValue>
4207   </Enum>
4208   <Interface name="SpeechRecognitionError" id="::SpeechRecognitionError">
4209     <webidl>    interface SpeechRecognitionError : <ref>Event</ref> {
4210         readonly attribute <ref>ErrorCode</ref> error;
4211         readonly attribute DOMString message;
4212     };</webidl>
4213     <InterfaceInheritance>
4214       <Name name="Event"/>
4215     </InterfaceInheritance>
4216     <Attribute readonly="readonly" name="error" id="::SpeechRecognitionError::error">
4217       <webidl>        readonly attribute <ref>ErrorCode</ref> error;</webidl>
4218       <Type name="ErrorCode"/>
4219     </Attribute>
4220     <Attribute readonly="readonly" name="message" id="::SpeechRecognitionError::message">
4221       <webidl>        readonly attribute DOMString message;</webidl>
4222       <Type type="DOMString"/>
4223     </Attribute>
4224   </Interface>
4225   <Interface name="SpeechRecognitionAlternative" id="::SpeechRecognitionAlternative">
4226     <webidl>    interface SpeechRecognitionAlternative {
4227         readonly attribute DOMString transcript;
4228         readonly attribute float confidence;
4229     };</webidl>
4230     <Attribute readonly="readonly" name="transcript" id="::SpeechRecognitionAlternative::transcript">
4231       <webidl>        readonly attribute DOMString transcript;</webidl>
4232       <Type type="DOMString"/>
4233     </Attribute>
4234     <Attribute readonly="readonly" name="confidence" id="::SpeechRecognitionAlternative::confidence">
4235       <webidl>        readonly attribute float confidence;</webidl>
4236       <Type type="float"/>
4237     </Attribute>
4238   </Interface>
4239   <Interface name="SpeechRecognitionResult" id="::SpeechRecognitionResult">
4240     <webidl>    interface SpeechRecognitionResult {
4241         readonly attribute unsigned long length;
4242         getter <ref>SpeechRecognitionAlternative</ref> item(unsigned long index);
4243         readonly attribute boolean final;
4244     };</webidl>
4245     <Attribute readonly="readonly" name="length" id="::SpeechRecognitionResult::length">
4246       <webidl>        readonly attribute unsigned long length;</webidl>
4247       <Type type="unsigned long"/>
4248     </Attribute>
4249     <Operation getter="getter" name="item" id="::SpeechRecognitionResult::item">
4250       <webidl>        getter <ref>SpeechRecognitionAlternative</ref> item(unsigned long index);</webidl>
4251       <Type name="SpeechRecognitionAlternative"/>
4252       <ArgumentList>
4253         <Argument name="index">
4254           <Type type="unsigned long"/>
4255         </Argument>
4256       </ArgumentList>
4257     </Operation>
4258     <Attribute readonly="readonly" name="final" id="::SpeechRecognitionResult::final">
4259       <webidl>        readonly attribute boolean final;</webidl>
4260       <Type type="boolean"/>
4261     </Attribute>
4262   </Interface>
4263   <Interface name="SpeechRecognitionResultList" id="::SpeechRecognitionResultList">
4264     <webidl>    interface SpeechRecognitionResultList {
4265         readonly attribute unsigned long length;
4266         getter <ref>SpeechRecognitionResult</ref> item(unsigned long index);
4267     };</webidl>
4268     <Attribute readonly="readonly" name="length" id="::SpeechRecognitionResultList::length">
4269       <webidl>        readonly attribute unsigned long length;</webidl>
4270       <Type type="unsigned long"/>
4271     </Attribute>
4272     <Operation getter="getter" name="item" id="::SpeechRecognitionResultList::item">
4273       <webidl>        getter <ref>SpeechRecognitionResult</ref> item(unsigned long index);</webidl>
4274       <Type name="SpeechRecognitionResult"/>
4275       <ArgumentList>
4276         <Argument name="index">
4277           <Type type="unsigned long"/>
4278         </Argument>
4279       </ArgumentList>
4280     </Operation>
4281   </Interface>
4282   <Interface name="SpeechRecognitionEvent" id="::SpeechRecognitionEvent">
4283     <webidl>    interface SpeechRecognitionEvent : <ref>Event</ref> {
4284         readonly attribute unsigned long resultIndex;
4285         readonly attribute <ref>SpeechRecognitionResultList</ref> results;
4286         readonly attribute any interpretation;
4287         readonly attribute <ref>Document</ref> emma;
4288     };</webidl>
4289     <InterfaceInheritance>
4290       <Name name="Event"/>
4291     </InterfaceInheritance>
4292     <Attribute readonly="readonly" name="resultIndex" id="::SpeechRecognitionEvent::resultIndex">
4293       <webidl>        readonly attribute unsigned long resultIndex;</webidl>
4294       <Type type="unsigned long"/>
4295     </Attribute>
4296     <Attribute readonly="readonly" name="results" id="::SpeechRecognitionEvent::results">
4297       <webidl>        readonly attribute <ref>SpeechRecognitionResultList</ref> results;</webidl>
4298       <Type name="SpeechRecognitionResultList"/>
4299     </Attribute>
4300     <Attribute readonly="readonly" name="interpretation" id="::SpeechRecognitionEvent::interpretation">
4301       <webidl>        readonly attribute any interpretation;</webidl>
4302       <Type type="any"/>
4303     </Attribute>
4304     <Attribute readonly="readonly" name="emma" id="::SpeechRecognitionEvent::emma">
4305       <webidl>        readonly attribute <ref>Document</ref> emma;</webidl>
4306       <Type name="Document"/>
4307     </Attribute>
4308   </Interface>
4309   <Interface name="SpeechGrammar" id="::SpeechGrammar">
4310     <webidl>    [Constructor]
4311     interface SpeechGrammar {
4312         attribute DOMString src;
4313         attribute float weight;
4314     };</webidl>
4315     <ExtendedAttributeList>
4316       <ExtendedAttribute name="Constructor">
4317         <webidl>Constructor</webidl>
4318       </ExtendedAttribute>
4319     </ExtendedAttributeList>
4320     <Attribute name="src" id="::SpeechGrammar::src">
4321       <webidl>        attribute DOMString src;</webidl>
4322       <Type type="DOMString"/>
4323     </Attribute>
4324     <Attribute name="weight" id="::SpeechGrammar::weight">
4325       <webidl>        attribute float weight;</webidl>
4326       <Type type="float"/>
4327     </Attribute>
4328   </Interface>
4329   <Interface name="SpeechGrammarList" id="::SpeechGrammarList">
4330     <webidl>    [Constructor]
4331     interface SpeechGrammarList {
4332         readonly attribute unsigned long length;
4333         getter <ref>SpeechGrammar</ref> item(unsigned long index);
4334         void addFromURI(DOMString src, optional float weight);
4335         void addFromString(DOMString string, optional float weight);
4336     };</webidl>
4337     <ExtendedAttributeList>
4338       <ExtendedAttribute name="Constructor">
4339         <webidl>Constructor</webidl>
4340       </ExtendedAttribute>
4341     </ExtendedAttributeList>
4342     <Attribute readonly="readonly" name="length" id="::SpeechGrammarList::length">
4343       <webidl>        readonly attribute unsigned long length;</webidl>
4344       <Type type="unsigned long"/>
4345     </Attribute>
4346     <Operation getter="getter" name="item" id="::SpeechGrammarList::item">
4347       <webidl>        getter <ref>SpeechGrammar</ref> item(unsigned long index);</webidl>
4348       <Type name="SpeechGrammar"/>
4349       <ArgumentList>
4350         <Argument name="index">
4351           <Type type="unsigned long"/>
4352         </Argument>
4353       </ArgumentList>
4354     </Operation>
4355     <Operation name="addFromURI" id="::SpeechGrammarList::addFromURI">
4356       <webidl>        void addFromURI(DOMString src, optional float weight);</webidl>
4357       <Type type="void"/>
4358       <ArgumentList>
4359         <Argument name="src">
4360           <Type type="DOMString"/>
4361         </Argument>
4362         <Argument optional="optional" name="weight">
4363           <Type type="float"/>
4364         </Argument>
4365       </ArgumentList>
4366     </Operation>
4367     <Operation name="addFromString" id="::SpeechGrammarList::addFromString">
4368       <webidl>        void addFromString(DOMString string, optional float weight);</webidl>
4369       <Type type="void"/>
4370       <ArgumentList>
4371         <Argument name="string">
4372           <Type type="DOMString"/>
4373         </Argument>
4374         <Argument optional="optional" name="weight">
4375           <Type type="float"/>
4376         </Argument>
4377       </ArgumentList>
4378     </Operation>
4379   </Interface>
4380 </Module>
4381 <Module name="MediaServer" id="::MediaServer">
4382     <webidl>module MediaServer {
4383
4384
4385
4386 partial interface Navigator   {
4387          readonly attribute <ref>MediaServerManager</ref> mediaserver;
4388 };
4389
4390
4391
4392 [NoInterfaceObject]
4393 interface MediaServerManager  {
4394
4395         <ref>scanNetwork</ref>(<ref>MediaServerFoundServerCallback</ref> successCallback, optional <ref>MediaServerErrorCallback</ref> errorCallback);
4396 };
4397
4398
4399
4400 [NoInterfaceObject]
4401 interface MediaServer  {
4402
4403          readonly attribute DOMString id;
4404
4405          readonly attribute DOMString friendlyName;
4406
4407          readonly attribute object root;
4408
4409         <ref>browse</ref>(DOMString containerId, DOMString sortMode, unsigned long count, unsigned long offset, <ref>MediaServerBrowseFindCallback</ref> successCallback, optional <ref>MediaServerErrorCallback</ref> errorCallback);
4410
4411         <ref>find</ref>(DOMString containerId, DOMString searchFilter, DOMString sortMode, unsigned long count, unsigned long offset, <ref>MediaServerBrowseFindCallback</ref> successCallback, optional <ref>MediaServerErrorCallback</ref> errorCallback);
4412 };
4413
4414
4415
4416 [NoInterfaceObject]
4417 interface MediaServerError   {
4418         const unsigned short GENERIC = 1;
4419
4420          attribute unsigned short code;
4421
4422          attribute DOMString message;
4423 };
4424
4425
4426
4427 callback MediaServerFoundServerCallback = void (<ref>MediaServer</ref> value);
4428
4429 callback MediaServerBrowseFindCallback = void (sequence&lt;object> value);
4430
4431 callback MediaServerErrorCallback = void (<ref>MediaServerError</ref> error);
4432
4433 };</webidl>
4434     <descriptive>
4435        <description>
4436         <p>
4437 Details.
4438         </p>
4439        </description>
4440         <def-api-feature identifier="http://tizen.org/api/mediaserver">
4441           <descriptive>
4442             <brief>
4443  Allows access to the mediaserver API
4444             </brief>
4445           </descriptive>
4446         </def-api-feature>
4447     </descriptive>
4448     <Interface name="Navigator" partial="partial" id="::MediaServer::Navigator">
4449       <webidl>partial interface Navigator   {
4450          readonly attribute <ref>MediaServerManager</ref> mediaserver;
4451 };</webidl>
4452       <Attribute readonly="readonly" name="mediaserver" id="::MediaServer::Navigator::mediaserver">
4453         <webidl>         readonly attribute <ref>MediaServerManager</ref> mediaserver;</webidl>
4454         <Type name="MediaServerManager"/>
4455       </Attribute>
4456     </Interface>
4457     <Interface name="MediaServerManager" id="::MediaServer::MediaServerManager">
4458       <webidl>[NoInterfaceObject]
4459 interface MediaServerManager  {
4460
4461         <ref>scanNetwork</ref>(<ref>MediaServerFoundServerCallback</ref> successCallback, optional <ref>MediaServerErrorCallback</ref> errorCallback);
4462 };</webidl>
4463       <ExtendedAttributeList>
4464         <ExtendedAttribute name="NoInterfaceObject">
4465           <webidl>NoInterfaceObject</webidl>
4466         </ExtendedAttribute>
4467       </ExtendedAttributeList>
4468       <Operation>
4469         <webidl>        <ref>scanNetwork</ref>(<ref>MediaServerFoundServerCallback</ref> successCallback, optional <ref>MediaServerErrorCallback</ref> errorCallback);</webidl>
4470         <descriptive>
4471             <brief>
4472  Scans local network for MediaServers.
4473             </brief>
4474         </descriptive>
4475         <Type name="scanNetwork"/>
4476         <ArgumentList>
4477           <Argument name="successCallback">
4478             <descriptive>
4479                 <description><p>
4480  callback invoqued for each MediaServer discovered.
4481                 </p></description>
4482             </descriptive>
4483             <Type name="MediaServerFoundServerCallback"/>
4484           </Argument>
4485           <Argument optional="optional" name="errorCallback">
4486             <descriptive>
4487                 <description><p>
4488                 </p></description>
4489             </descriptive>
4490             <Type name="MediaServerErrorCallback"/>
4491           </Argument>
4492         </ArgumentList>
4493       </Operation>
4494     </Interface>
4495     <Interface name="MediaServer" id="::MediaServer::MediaServer">
4496       <webidl>[NoInterfaceObject]
4497 interface MediaServer  {
4498
4499          readonly attribute DOMString id;
4500
4501          readonly attribute DOMString friendlyName;
4502
4503          readonly attribute object root;
4504
4505         <ref>browse</ref>(DOMString containerId, DOMString sortMode, unsigned long count, unsigned long offset, <ref>MediaServerBrowseFindCallback</ref> successCallback, optional <ref>MediaServerErrorCallback</ref> errorCallback);
4506
4507         <ref>find</ref>(DOMString containerId, DOMString searchFilter, DOMString sortMode, unsigned long count, unsigned long offset, <ref>MediaServerBrowseFindCallback</ref> successCallback, optional <ref>MediaServerErrorCallback</ref> errorCallback);
4508 };</webidl>
4509       <ExtendedAttributeList>
4510         <ExtendedAttribute name="NoInterfaceObject">
4511           <webidl>NoInterfaceObject</webidl>
4512         </ExtendedAttribute>
4513       </ExtendedAttributeList>
4514       <Attribute readonly="readonly" name="id" id="::MediaServer::MediaServer::id">
4515         <webidl>         readonly attribute DOMString id;</webidl>
4516         <descriptive>
4517            <description>
4518             <p>
4519 id
4520             </p>
4521            </description>
4522             <brief>
4523  An opaque unique ID.
4524             </brief>
4525         </descriptive>
4526         <Type type="DOMString"/>
4527       </Attribute>
4528       <Attribute readonly="readonly" name="friendlyName" id="::MediaServer::MediaServer::friendlyName">
4529         <webidl>         readonly attribute DOMString friendlyName;</webidl>
4530         <descriptive>
4531            <description>
4532             <p>
4533 friendlyName
4534             </p>
4535            </description>
4536             <brief>
4537  A user-friendly name for the device.
4538             </brief>
4539         </descriptive>
4540         <Type type="DOMString"/>
4541       </Attribute>
4542       <Attribute readonly="readonly" name="root" id="::MediaServer::MediaServer::root">
4543         <webidl>         readonly attribute object root;</webidl>
4544         <descriptive>
4545            <description>
4546             <p>
4547 root
4548             </p>
4549            </description>
4550             <brief>
4551  Media Server root folder.
4552             </brief>
4553         </descriptive>
4554         <Type type="object"/>
4555       </Attribute>
4556       <Operation>
4557         <webidl>        <ref>browse</ref>(DOMString containerId, DOMString sortMode, unsigned long count, unsigned long offset, <ref>MediaServerBrowseFindCallback</ref> successCallback, optional <ref>MediaServerErrorCallback</ref> errorCallback);</webidl>
4558         <descriptive>
4559             <brief>
4560  Browses for media item under a given MediaContainer.
4561             </brief>
4562         </descriptive>
4563         <Type name="browse"/>
4564         <ArgumentList>
4565           <Argument name="containerId">
4566             <descriptive>
4567                 <description><p>
4568                 </p></description>
4569             </descriptive>
4570             <Type type="DOMString"/>
4571           </Argument>
4572           <Argument name="sortMode">
4573             <descriptive>
4574                 <description><p>
4575                 </p></description>
4576             </descriptive>
4577             <Type type="DOMString"/>
4578           </Argument>
4579           <Argument name="count">
4580             <descriptive>
4581                 <description><p>
4582                 </p></description>
4583             </descriptive>
4584             <Type type="unsigned long"/>
4585           </Argument>
4586           <Argument name="offset">
4587             <descriptive>
4588                 <description><p>
4589                 </p></description>
4590             </descriptive>
4591             <Type type="unsigned long"/>
4592           </Argument>
4593           <Argument name="successCallback">
4594             <descriptive>
4595                 <description><p>
4596                 </p></description>
4597             </descriptive>
4598             <Type name="MediaServerBrowseFindCallback"/>
4599           </Argument>
4600           <Argument optional="optional" name="errorCallback">
4601             <descriptive>
4602                 <description><p>
4603                 </p></description>
4604             </descriptive>
4605             <Type name="MediaServerErrorCallback"/>
4606           </Argument>
4607         </ArgumentList>
4608       </Operation>
4609       <Operation>
4610         <webidl>        <ref>find</ref>(DOMString containerId, DOMString searchFilter, DOMString sortMode, unsigned long count, unsigned long offset, <ref>MediaServerBrowseFindCallback</ref> successCallback, optional <ref>MediaServerErrorCallback</ref> errorCallback);</webidl>
4611         <descriptive>
4612             <brief>
4613  Searches for media item under a given MediaContainer.
4614             </brief>
4615         </descriptive>
4616         <Type name="find"/>
4617         <ArgumentList>
4618           <Argument name="containerId">
4619             <descriptive>
4620                 <description><p>
4621                 </p></description>
4622             </descriptive>
4623             <Type type="DOMString"/>
4624           </Argument>
4625           <Argument name="searchFilter">
4626             <descriptive>
4627                 <description><p>
4628                 </p></description>
4629             </descriptive>
4630             <Type type="DOMString"/>
4631           </Argument>
4632           <Argument name="sortMode">
4633             <descriptive>
4634                 <description><p>
4635                 </p></description>
4636             </descriptive>
4637             <Type type="DOMString"/>
4638           </Argument>
4639           <Argument name="count">
4640             <descriptive>
4641                 <description><p>
4642                 </p></description>
4643             </descriptive>
4644             <Type type="unsigned long"/>
4645           </Argument>
4646           <Argument name="offset">
4647             <descriptive>
4648                 <description><p>
4649                 </p></description>
4650             </descriptive>
4651             <Type type="unsigned long"/>
4652           </Argument>
4653           <Argument name="successCallback">
4654             <descriptive>
4655                 <description><p>
4656                 </p></description>
4657             </descriptive>
4658             <Type name="MediaServerBrowseFindCallback"/>
4659           </Argument>
4660           <Argument optional="optional" name="errorCallback">
4661             <descriptive>
4662                 <description><p>
4663                 </p></description>
4664             </descriptive>
4665             <Type name="MediaServerErrorCallback"/>
4666           </Argument>
4667         </ArgumentList>
4668       </Operation>
4669     </Interface>
4670     <Interface name="MediaServerError" id="::MediaServer::MediaServerError">
4671       <webidl>[NoInterfaceObject]
4672 interface MediaServerError   {
4673         const unsigned short GENERIC = 1;
4674
4675          attribute unsigned short code;
4676
4677          attribute DOMString message;
4678 };</webidl>
4679       <ExtendedAttributeList>
4680         <ExtendedAttribute name="NoInterfaceObject">
4681           <webidl>NoInterfaceObject</webidl>
4682         </ExtendedAttribute>
4683       </ExtendedAttributeList>
4684       <Const name="GENERIC" value="1" id="::MediaServer::MediaServerError::GENERIC">
4685         <webidl>        const unsigned short GENERIC = 1;</webidl>
4686         <Type type="unsigned short"/>
4687       </Const>
4688       <Attribute name="code" id="::MediaServer::MediaServerError::code">
4689         <webidl>         attribute unsigned short code;</webidl>
4690         <descriptive>
4691            <description>
4692             <p>
4693 code
4694 MUST return error code.
4695             </p>
4696            </description>
4697         </descriptive>
4698         <Type type="unsigned short"/>
4699       </Attribute>
4700       <Attribute name="message" id="::MediaServer::MediaServerError::message">
4701         <webidl>         attribute DOMString message;</webidl>
4702         <descriptive>
4703            <description>
4704             <p>
4705 message
4706 MUST return error message
4707             </p>
4708            </description>
4709         </descriptive>
4710         <Type type="DOMString"/>
4711       </Attribute>
4712     </Interface>
4713     <Callback name="MediaServerFoundServerCallback" id="::MediaServer::MediaServerFoundServerCallback">
4714       <webidl>callback MediaServerFoundServerCallback = void (<ref>MediaServer</ref> value);</webidl>
4715       <Type type="void"/>
4716       <ArgumentList>
4717         <Argument name="value">
4718           <Type name="MediaServer"/>
4719         </Argument>
4720       </ArgumentList>
4721     </Callback>
4722     <Callback name="MediaServerBrowseFindCallback" id="::MediaServer::MediaServerBrowseFindCallback">
4723       <webidl>callback MediaServerBrowseFindCallback = void (sequence&lt;object> value);</webidl>
4724       <Type type="void"/>
4725       <ArgumentList>
4726         <Argument name="value">
4727           <Type type="sequence">
4728             <Type type="object"/>
4729           </Type>
4730         </Argument>
4731       </ArgumentList>
4732     </Callback>
4733     <Callback name="MediaServerErrorCallback" id="::MediaServer::MediaServerErrorCallback">
4734       <webidl>callback MediaServerErrorCallback = void (<ref>MediaServerError</ref> error);</webidl>
4735       <Type type="void"/>
4736       <ArgumentList>
4737         <Argument name="error">
4738           <Type name="MediaServerError"/>
4739         </Argument>
4740       </ArgumentList>
4741     </Callback>
4742   </Module>
4743   <Module name="Alarm" id="::Alarm">
4744     <webidl>module Alarm {&#13;
4745 &#13;
4746     typedef DOMString AlarmId;&#13;
4747 &#13;
4748 &#13;
4749 &#13;
4750     [NoInterfaceObject] interface AlarmManagerObject {&#13;
4751         readonly attribute <ref>AlarmManager</ref> alarm;&#13;
4752     };&#13;
4753     <ref>Tizen</ref> implements <ref>AlarmManagerObject</ref>;&#13;
4754 &#13;
4755 &#13;
4756     [NoInterfaceObject] interface AlarmManager {&#13;
4757 &#13;
4758         const long PERIOD_MINUTE = 60;&#13;
4759         &#13;
4760 &#13;
4761         const long PERIOD_HOUR = 3600;&#13;
4762          &#13;
4763 &#13;
4764         const long PERIOD_DAY = 86400;&#13;
4765         &#13;
4766 &#13;
4767         const long PERIOD_WEEK = 604800;&#13;
4768 &#13;
4769 &#13;
4770         void add(<ref>Alarm</ref> alarm, <ref>ApplicationId</ref> applicationId, optional <ref>ApplicationControl</ref>? appControl) raises(<ref>WebAPIException</ref>);&#13;
4771 &#13;
4772 &#13;
4773         void remove(<ref>AlarmId</ref> id) raises(<ref>WebAPIException</ref>);&#13;
4774 &#13;
4775 &#13;
4776         void removeAll() raises(<ref>WebAPIException</ref>);&#13;
4777 &#13;
4778 &#13;
4779         <ref>Alarm</ref> get(<ref>AlarmId</ref> id) raises(<ref>WebAPIException</ref>);&#13;
4780 &#13;
4781 &#13;
4782         <ref>Alarm</ref>[] getAll() raises(<ref>WebAPIException</ref>);&#13;
4783     };&#13;
4784 &#13;
4785 &#13;
4786     [NoInterfaceObject] interface Alarm {&#13;
4787 &#13;
4788         readonly attribute <ref>AlarmId</ref>? id;&#13;
4789     };&#13;
4790  &#13;
4791     [Constructor(long delay, optional long? period)]&#13;
4792 &#13;
4793     interface AlarmRelative : <ref>Alarm</ref> {&#13;
4794 &#13;
4795         readonly attribute long delay;&#13;
4796         &#13;
4797 &#13;
4798         readonly attribute long? period;&#13;
4799 &#13;
4800 &#13;
4801         long? getRemainingSeconds() raises(<ref>WebAPIException</ref>);&#13;
4802     };&#13;
4803 &#13;
4804     [Constructor(Date date),&#13;
4805 &#13;
4806      Constructor(Date date, <ref>ByDayValue</ref>[] daysOfTheWeek),&#13;
4807 &#13;
4808      Constructor(Date date, long period)]&#13;
4809 &#13;
4810     interface AlarmAbsolute : <ref>Alarm</ref> {&#13;
4811 &#13;
4812         readonly attribute Date date;&#13;
4813 &#13;
4814 &#13;
4815         readonly attribute long? period;&#13;
4816 &#13;
4817 &#13;
4818         readonly attribute <ref>ByDayValue</ref>[] daysOfTheWeek;&#13;
4819 &#13;
4820 &#13;
4821         Date? getNextScheduledDate() raises(<ref>WebAPIException</ref>);&#13;
4822     };&#13;
4823 };</webidl>
4824     <descriptive>
4825         <brief>
4826  This API provides the functionality for scheduling the system alarm. 
4827 It allows you to run other applications and have them perform operations at the specific time. 
4828 You can schedule an alarm to go off once or to repeat at specific intervals. 
4829         </brief>
4830        <description>
4831         <p>
4832 Each application has its own individual alarm storage, that is, applications cannot view or edit alarms set by other applications.
4833         </p>
4834         <p>
4835 Once an alarm goes off, it will be removed from the alarm storage automatically.
4836 <em>AlarmManager</em> provides methods to manage alarms such as adding and removing. 
4837 For more information on the Alarm features, see <a href="../../org.tizen.web.appprogramming/html/guide/app_guide/alarm.htm">Alarm Guide</a>.
4838         </p>
4839        </description>
4840         <version>
4841  1.0
4842         </version>
4843     </descriptive>
4844     <Typedef name="AlarmId" id="::Alarm::AlarmId">
4845       <webidl>    typedef DOMString AlarmId;</webidl>
4846       <descriptive>
4847           <brief>
4848  An alarm identifier.
4849           </brief>
4850           <version>
4851  1.0
4852           </version>
4853       </descriptive>
4854       <Type type="DOMString"/>
4855     </Typedef>
4856     <Interface name="AlarmManagerObject" id="::Alarm::AlarmManagerObject">
4857       <webidl>    [NoInterfaceObject] interface AlarmManagerObject {&#13;
4858         readonly attribute <ref>AlarmManager</ref> alarm;&#13;
4859     };</webidl>
4860       <descriptive>
4861           <brief>
4862  This interface defines what is instantiated by the <em>Tizen </em>object from the Tizen Platform.
4863 There will be a <em>tizen.alarm </em>object that allows access to the functionality of the Alarm API.
4864           </brief>
4865           <version>
4866  1.0
4867           </version>
4868       </descriptive>
4869       <ExtendedAttributeList>
4870         <ExtendedAttribute name="NoInterfaceObject">
4871           <webidl>NoInterfaceObject</webidl>
4872         </ExtendedAttribute>
4873       </ExtendedAttributeList>
4874       <Attribute readonly="readonly" name="alarm" id="::Alarm::AlarmManagerObject::alarm">
4875         <webidl>        readonly attribute <ref>AlarmManager</ref> alarm;</webidl>
4876         <Type name="AlarmManager"/>
4877       </Attribute>
4878     </Interface>
4879     <Implements name1="Tizen" name2="AlarmManagerObject">
4880       <webidl>    <ref>Tizen</ref> implements <ref>AlarmManagerObject</ref>;</webidl>
4881     </Implements>
4882     <Interface name="AlarmManager" id="::Alarm::AlarmManager">
4883       <webidl>    [NoInterfaceObject] interface AlarmManager {&#13;
4884 &#13;
4885         const long PERIOD_MINUTE = 60;&#13;
4886         &#13;
4887 &#13;
4888         const long PERIOD_HOUR = 3600;&#13;
4889          &#13;
4890 &#13;
4891         const long PERIOD_DAY = 86400;&#13;
4892         &#13;
4893 &#13;
4894         const long PERIOD_WEEK = 604800;&#13;
4895 &#13;
4896 &#13;
4897         void add(<ref>Alarm</ref> alarm, <ref>ApplicationId</ref> applicationId, optional <ref>ApplicationControl</ref>? appControl) raises(<ref>WebAPIException</ref>);&#13;
4898 &#13;
4899 &#13;
4900         void remove(<ref>AlarmId</ref> id) raises(<ref>WebAPIException</ref>);&#13;
4901 &#13;
4902 &#13;
4903         void removeAll() raises(<ref>WebAPIException</ref>);&#13;
4904 &#13;
4905 &#13;
4906         <ref>Alarm</ref> get(<ref>AlarmId</ref> id) raises(<ref>WebAPIException</ref>);&#13;
4907 &#13;
4908 &#13;
4909         <ref>Alarm</ref>[] getAll() raises(<ref>WebAPIException</ref>);&#13;
4910     };</webidl>
4911       <descriptive>
4912           <brief>
4913  This interface provides methods to manage alarms.
4914           </brief>
4915           <version>
4916  1.0
4917           </version>
4918       </descriptive>
4919       <ExtendedAttributeList>
4920         <ExtendedAttribute name="NoInterfaceObject">
4921           <webidl>NoInterfaceObject</webidl>
4922         </ExtendedAttribute>
4923       </ExtendedAttributeList>
4924       <Const name="PERIOD_MINUTE" value="60" id="::Alarm::AlarmManager::PERIOD_MINUTE">
4925         <webidl>        const long PERIOD_MINUTE = 60;</webidl>
4926         <descriptive>
4927             <brief>
4928  The period of a minute.
4929 It defines the number of seconds per minute.
4930             </brief>
4931             <version>
4932  1.0
4933             </version>
4934         </descriptive>
4935         <Type type="long"/>
4936       </Const>
4937       <Const name="PERIOD_HOUR" value="3600" id="::Alarm::AlarmManager::PERIOD_HOUR">
4938         <webidl>        const long PERIOD_HOUR = 3600;</webidl>
4939         <descriptive>
4940             <brief>
4941  The period of an hour.
4942 It defines the number of seconds per hour.
4943             </brief>
4944             <version>
4945  1.0
4946             </version>
4947         </descriptive>
4948         <Type type="long"/>
4949       </Const>
4950       <Const name="PERIOD_DAY" value="86400" id="::Alarm::AlarmManager::PERIOD_DAY">
4951         <webidl>        const long PERIOD_DAY = 86400;</webidl>
4952         <descriptive>
4953             <brief>
4954  The period of a day.
4955 It defines the number of seconds per day.
4956             </brief>
4957             <version>
4958  1.0
4959             </version>
4960         </descriptive>
4961         <Type type="long"/>
4962       </Const>
4963       <Const name="PERIOD_WEEK" value="604800" id="::Alarm::AlarmManager::PERIOD_WEEK">
4964         <webidl>        const long PERIOD_WEEK = 604800;</webidl>
4965         <descriptive>
4966             <brief>
4967  The period of a week.
4968 It defines the number of seconds in a week.
4969             </brief>
4970             <version>
4971  1.0
4972             </version>
4973         </descriptive>
4974         <Type type="long"/>
4975       </Const>
4976       <Operation name="add" id="::Alarm::AlarmManager::add">
4977         <webidl>        void add(<ref>Alarm</ref> alarm, <ref>ApplicationId</ref> applicationId, optional <ref>ApplicationControl</ref>? appControl) raises(<ref>WebAPIException</ref>);</webidl>
4978         <descriptive>
4979             <brief>
4980  Adds an alarm to the storage.
4981             </brief>
4982            <description>
4983             <p>
4984 Set an alarm with the application ID to be run. You should definitely provide the application ID to run 
4985 and the <a href=" ../../org.tizen.web.appprogramming/html/guide/app_guide/application_service.htm">application control </a>information if it is necessary. 
4986 For more information about the application contorl, see <a href="../../org.tizen.web.device.apireference/tizen/application.html">The Application API</a>.
4987             </p>
4988            </description>
4989             <version>
4990  1.0
4991             </version>
4992             <privilegelevel>
4993  public
4994             </privilegelevel>
4995             <privilege>
4996  http://tizen.org/privilege/alarm
4997             </privilege>
4998             <Code> // Triggers an alarm on a given date/time
4999  var alarm = new tizen.AlarmAbsolute(new Date(2014, 10, 4, 8, 0));
5000  var appControl = new tizen.ApplicationControl(&quot;http://tizen.org/appcontrol/operation/view&quot;);
5001  tizen.alarm.add(alarm, tizen.application.getCurrentApplication().appInfo.id, appControl);
5002  console.log(&quot;Alarm added with id: &quot; + alarm.id);
5003  </Code>
5004         </descriptive>
5005         <Type type="void"/>
5006         <ArgumentList>
5007           <Argument name="alarm">
5008             <descriptive>
5009                 <description><p>
5010  An alarm to add. It can be either <em>AlarmRelative </em> or <em>AlarmAbsolute</em>.
5011                 </p></description>
5012             </descriptive>
5013             <Type name="Alarm"/>
5014           </Argument>
5015           <Argument name="applicationId">
5016             <descriptive>
5017                 <description><p>
5018  The application ID to run when the alarm is triggered.
5019                 </p></description>
5020             </descriptive>
5021             <Type name="ApplicationId"/>
5022           </Argument>
5023           <Argument optional="optional" name="appControl">
5024             <descriptive>
5025                 <description><p>
5026  The data structure describing application control details.
5027                 </p></description>
5028             </descriptive>
5029             <Type name="ApplicationControl" nullable="nullable"/>
5030           </Argument>
5031         </ArgumentList>
5032         <Raises>
5033           <RaiseException name="WebAPIException">
5034             <descriptive>
5035                 <description><p>
5036  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
5037                 </p></description>
5038                 <description><p>
5039  with error type InvalidValuesError, if any input parameter does not contain a valid value.
5040                 </p></description>
5041                 <description><p>
5042  with error type SecurityError, if the application does not have the privilege to call this method.
5043                 </p></description>
5044                 <description><p>
5045  with error type UnknownError, if any other error occurs.
5046                 </p></description>
5047             </descriptive>
5048           </RaiseException>
5049         </Raises>
5050       </Operation>
5051       <Operation name="remove" id="::Alarm::AlarmManager::remove">
5052         <webidl>        void remove(<ref>AlarmId</ref> id) raises(<ref>WebAPIException</ref>);</webidl>
5053         <descriptive>
5054             <brief>
5055  Removes an alarm from the storage.
5056             </brief>
5057            <description>
5058             <p>
5059 If an alarm goes off, it will be removed from the storage automatically.
5060             </p>
5061            </description>
5062             <version>
5063  1.0
5064             </version>
5065             <privilegelevel>
5066  public
5067             </privilegelevel>
5068             <privilege>
5069  http://tizen.org/privilege/alarm
5070             </privilege>
5071             <Code> var alarms = tizen.alarm.getAll();
5072
5073  // Removes the first alarm
5074  if (alarms.length > 0) {
5075    try {
5076      tizen.alarm.remove(alarms[0].id);
5077      console.log(&quot;Successfully removed the first alarm.&quot;);
5078    } catch(error) {
5079      console.log(&quot;Failed to remove the first alarm.&quot;);
5080    }
5081  }
5082  </Code>
5083         </descriptive>
5084         <Type type="void"/>
5085         <ArgumentList>
5086           <Argument name="id">
5087             <descriptive>
5088                 <description><p>
5089  The ID of the alarm to remove
5090                 </p></description>
5091             </descriptive>
5092             <Type name="AlarmId"/>
5093           </Argument>
5094         </ArgumentList>
5095         <Raises>
5096           <RaiseException name="WebAPIException">
5097             <descriptive>
5098                 <description><p>
5099  with error type NotFoundError, if this alarm identifier cannot be found in the storage.
5100                 </p></description>
5101                 <description><p>
5102  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
5103                 </p></description>
5104                 <description><p>
5105  with error type InvalidValuesError, if any input parameter does not contain a valid value.
5106                 </p></description>
5107                 <description><p>
5108  with error type SecurityError, if the application does not have the privilege to call this method.
5109                 </p></description>
5110                 <description><p>
5111  with error type UnknownError, if the method cannot be completed because of an unknown error.
5112                 </p></description>
5113             </descriptive>
5114           </RaiseException>
5115         </Raises>
5116       </Operation>
5117       <Operation name="removeAll" id="::Alarm::AlarmManager::removeAll">
5118         <webidl>        void removeAll() raises(<ref>WebAPIException</ref>);</webidl>
5119         <descriptive>
5120             <brief>
5121  Removes all alarms added by an application.
5122             </brief>
5123            <description>
5124             <p>
5125 Because each application has its own alarm storage, this method removes alarms only added by the calling application.
5126             </p>
5127            </description>
5128             <version>
5129  1.0
5130             </version>
5131             <privilegelevel>
5132  public
5133             </privilegelevel>
5134             <privilege>
5135  http://tizen.org/privilege/alarm
5136             </privilege>
5137             <Code> tizen.alarm.removeAll();
5138  console.log(&quot;remove all registered alarms in the storage.&quot;);
5139  </Code>
5140         </descriptive>
5141         <Type type="void"/>
5142         <ArgumentList/>
5143         <Raises>
5144           <RaiseException name="WebAPIException">
5145             <descriptive>
5146                 <description><p>
5147  with error type SecurityError, if the application does not have the privilege to call this method.
5148                 </p></description>
5149                 <description><p>
5150  with error type UnknownError, if the method cannot be completed because of an unknown error.
5151                 </p></description>
5152             </descriptive>
5153           </RaiseException>
5154         </Raises>
5155       </Operation>
5156       <Operation name="get" id="::Alarm::AlarmManager::get">
5157         <webidl>        <ref>Alarm</ref> get(<ref>AlarmId</ref> id) raises(<ref>WebAPIException</ref>);</webidl>
5158         <descriptive>
5159             <brief>
5160  Returns an alarm as per the specified identifier.
5161             </brief>
5162             <version>
5163  1.0
5164             </version>
5165             <Code> // Sets an alarm
5166  var date = new Date();
5167  date.setHours(date.getHours()+1);
5168  var abs_alarm = new tizen.AlarmAbsolute(date);
5169
5170  // Adds an alarm
5171  tizen.alarm.add(abs_alarm, tizen.application.getCurrentApplication().appInfo.id);
5172
5173  // Gets an alarm
5174  var alarm = tizen.alarm.get(abs_alarm.id);
5175  console.log(&quot;The alarm will trigger at &quot; + alarm.getNextScheduledDate());
5176  </Code>
5177         </descriptive>
5178         <Type name="Alarm">
5179           <descriptive>
5180               <description><p>
5181  Alarm An alarm object with the specified ID.
5182               </p></description>
5183           </descriptive>
5184         </Type>
5185         <ArgumentList>
5186           <Argument name="id">
5187             <descriptive>
5188                 <description><p>
5189  The alarm ID to retrieve.
5190                 </p></description>
5191             </descriptive>
5192             <Type name="AlarmId"/>
5193           </Argument>
5194         </ArgumentList>
5195         <Raises>
5196           <RaiseException name="WebAPIException">
5197             <descriptive>
5198                 <description><p>
5199  with error type NotFoundError, if this alarm identifier cannot be found in the storage.
5200                 </p></description>
5201                 <description><p>
5202  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
5203                 </p></description>
5204                 <description><p>
5205  with error type InvalidValuesError, if any input parameter does not contain a valid value.
5206                 </p></description>
5207                 <description><p>
5208  with error type UnknownError, if the method cannot be completed because of an unknown error.
5209                 </p></description>
5210             </descriptive>
5211           </RaiseException>
5212         </Raises>
5213       </Operation>
5214       <Operation name="getAll" id="::Alarm::AlarmManager::getAll">
5215         <webidl>        <ref>Alarm</ref>[] getAll() raises(<ref>WebAPIException</ref>);</webidl>
5216         <descriptive>
5217             <brief>
5218  Retrieves all alarms in an application storage.. 
5219             </brief>
5220            <description>
5221             <p>
5222 Alarms that have already been triggered are removed automatically from the storage.
5223             </p>
5224            </description>
5225             <version>
5226  1.0
5227             </version>
5228             <Code> var alarms = tizen.alarm.getAll();
5229  console.log(alarms.length + &quot; alarms present in the storage.&quot;);
5230  </Code>
5231         </descriptive>
5232         <Type type="array">
5233           <descriptive>
5234               <description><p>
5235  Alarm[] All Alarm objects.
5236               </p></description>
5237           </descriptive>
5238           <Type name="Alarm"/>
5239         </Type>
5240         <ArgumentList/>
5241         <Raises>
5242           <RaiseException name="WebAPIException">
5243             <descriptive>
5244                 <description><p>
5245  with error type UnknownError, if the method cannot be completed because of an unknown error.
5246                 </p></description>
5247             </descriptive>
5248           </RaiseException>
5249         </Raises>
5250       </Operation>
5251     </Interface>
5252     <Interface name="Alarm" id="::Alarm::Alarm">
5253       <webidl>    [NoInterfaceObject] interface Alarm {&#13;
5254 &#13;
5255         readonly attribute <ref>AlarmId</ref>? id;&#13;
5256     };</webidl>
5257       <descriptive>
5258           <brief>
5259  This interface is an abstract interface for alarm types.
5260           </brief>
5261           <version>
5262  1.0
5263           </version>
5264       </descriptive>
5265       <ExtendedAttributeList>
5266         <ExtendedAttribute name="NoInterfaceObject">
5267           <webidl>NoInterfaceObject</webidl>
5268         </ExtendedAttribute>
5269       </ExtendedAttributeList>
5270       <Attribute readonly="readonly" name="id" id="::Alarm::Alarm::id">
5271         <webidl>        readonly attribute <ref>AlarmId</ref>? id;</webidl>
5272         <descriptive>
5273             <brief>
5274  The alarm identifier.
5275             </brief>
5276             <version>
5277  1.0
5278             </version>
5279         </descriptive>
5280         <Type name="AlarmId" nullable="nullable"/>
5281       </Attribute>
5282     </Interface>
5283     <Interface name="AlarmRelative" id="::Alarm::AlarmRelative">
5284       <webidl>    [Constructor(long delay, optional long? period)]&#13;
5285 &#13;
5286     interface AlarmRelative : <ref>Alarm</ref> {&#13;
5287 &#13;
5288         readonly attribute long delay;&#13;
5289         &#13;
5290 &#13;
5291         readonly attribute long? period;&#13;
5292 &#13;
5293 &#13;
5294         long? getRemainingSeconds() raises(<ref>WebAPIException</ref>);&#13;
5295     };</webidl>
5296       <descriptive>
5297           <brief>
5298  This interface provides the relative alarm, which occurs at a fixed interval in future.
5299           </brief>
5300          <description>
5301           <p>
5302 This alarm triggers after a duration mentioned in <em>delay</em> attribute from the moment the alarm is added. 
5303 If a <em>period</em> is provided, the alarm keeps triggering for the given interval.
5304           </p>
5305          </description>
5306           <version>
5307  1.0
5308           </version>
5309           <Code> // Gets the current application id.
5310  var appId = tizen.application.getCurrentApplication().appInfo.id;
5311
5312  // Sets an alarm in 3 hours from now
5313  var alarm1 = new tizen.AlarmRelative(3 * tizen.alarm.PERIOD_HOUR);
5314  tizen.alarm.add(alarm1, appId);
5315
5316  // Sets an alarm in one hour, recurring after every 2 minutes
5317  var alarm2 = new tizen.AlarmRelative(tizen.alarm.PERIOD_HOUR, 2 * tizen.alarm.PERIOD_MINUTE);
5318  tizen.alarm.add(alarm2, appId);
5319  </Code>
5320       </descriptive>
5321       <ExtendedAttributeList>
5322         <ExtendedAttribute name="Constructor">
5323           <webidl>Constructor(long delay, optional long? period)</webidl>
5324           <ArgumentList>
5325             <Argument name="delay">
5326               <Type type="long"/>
5327             </Argument>
5328             <Argument optional="optional" name="period">
5329               <Type type="long" nullable="nullable"/>
5330             </Argument>
5331           </ArgumentList>
5332         </ExtendedAttribute>
5333       </ExtendedAttributeList>
5334       <InterfaceInheritance>
5335         <Name name="Alarm"/>
5336       </InterfaceInheritance>
5337       <Attribute readonly="readonly" name="delay" id="::Alarm::AlarmRelative::delay">
5338         <webidl>        readonly attribute long delay;</webidl>
5339         <descriptive>
5340             <brief>
5341  An attribute to store the difference in time (in seconds) between when an alarm is added and it is triggered.
5342             </brief>
5343             <version>
5344  1.0
5345             </version>
5346         </descriptive>
5347         <Type type="long"/>
5348       </Attribute>
5349       <Attribute readonly="readonly" name="period" id="::Alarm::AlarmRelative::period">
5350         <webidl>        readonly attribute long? period;</webidl>
5351         <descriptive>
5352             <brief>
5353  An attribute to store the duration in seconds between each trigger of an alarm.
5354 By default, this attribute is set to <var>null</var>, indicating that this alarm does not repeat.
5355             </brief>
5356             <version>
5357  1.0
5358             </version>
5359         </descriptive>
5360         <Type type="long" nullable="nullable"/>
5361       </Attribute>
5362       <Operation name="getRemainingSeconds" id="::Alarm::AlarmRelative::getRemainingSeconds">
5363         <webidl>        long? getRemainingSeconds() raises(<ref>WebAPIException</ref>);</webidl>
5364         <descriptive>
5365             <brief>
5366  Returns duration in seconds before the next alarm is triggered.
5367             </brief>
5368            <description>
5369             <p>
5370 If the alarm has expired, this method returns <var>null</var>.
5371             </p>
5372            </description>
5373             <version>
5374  1.0
5375             </version>
5376             <Code> // Gets the current application id.
5377  var appId = tizen.application.getCurrentApplication().appInfo.id; 
5378
5379  // Sets an alarm in 3 hours from now
5380  var alarm = new tizen.AlarmRelative(3 * tizen.alarm.PERIOD_HOUR);
5381  tizen.alarm.add(alarm, appId);
5382  
5383  var sec = alarm.getRemainingSeconds();
5384  console.log(&quot;remaining time is &quot; + sec);
5385  </Code>
5386         </descriptive>
5387         <Type type="long" nullable="nullable">
5388           <descriptive>
5389               <description><p>
5390  long The duration before the next alarm trigger.
5391               </p></description>
5392           </descriptive>
5393         </Type>
5394         <ArgumentList/>
5395         <Raises>
5396           <RaiseException name="WebAPIException">
5397             <descriptive>
5398                 <description><p>
5399  with error type UnknownError, if the method cannot be completed because of an unknown error.
5400                 </p></description>
5401             </descriptive>
5402           </RaiseException>
5403         </Raises>
5404       </Operation>
5405     </Interface>
5406     <Interface name="AlarmAbsolute" id="::Alarm::AlarmAbsolute">
5407       <webidl>    [Constructor(Date date),&#13;
5408 &#13;
5409      Constructor(Date date, <ref>ByDayValue</ref>[] daysOfTheWeek),&#13;
5410 &#13;
5411      Constructor(Date date, long period)]&#13;
5412 &#13;
5413     interface AlarmAbsolute : <ref>Alarm</ref> {&#13;
5414 &#13;
5415         readonly attribute Date date;&#13;
5416 &#13;
5417 &#13;
5418         readonly attribute long? period;&#13;
5419 &#13;
5420 &#13;
5421         readonly attribute <ref>ByDayValue</ref>[] daysOfTheWeek;&#13;
5422 &#13;
5423 &#13;
5424         Date? getNextScheduledDate() raises(<ref>WebAPIException</ref>);&#13;
5425     };</webidl>
5426       <descriptive>
5427           <brief>
5428  This interface provides an absolute alarm, which triggers at a specified absolute date.
5429           </brief>
5430          <description>
5431           <p>
5432 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.
5433           </p>
5434          </description>
5435           <version>
5436  1.0
5437           </version>
5438           <Code> // Gets the current application id.
5439  var appId = tizen.application.getCurrentApplication().appInfo.id;
5440
5441  // Sets an alarm on January 1st 2014 08:00
5442  var date = new Date(2014, 0, 1, 8, 0);
5443  var alarm1 = new tizen.AlarmAbsolute(date);
5444  tizen.alarm.add(alarm1, appId);
5445
5446  // Sets an alarm on January 1st 2014 08:00, repeating every 2 days
5447  var alarm2 = new tizen.AlarmAbsolute(date, 2 * tizen.alarm.PERIOD_DAY);
5448  tizen.alarm.add(alarm2, appId);
5449
5450  // Sets an alarm occurring on every Saturday and Sunday, at 08:00, starting from January 1st 2014
5451  var alarm3 = new tizen.AlarmAbsolute(date, [&quot;SA&quot;, &quot;SU&quot;]);
5452  tizen.alarm.add(alarm3, appId);
5453  </Code>
5454       </descriptive>
5455       <ExtendedAttributeList>
5456         <ExtendedAttribute name="Constructor">
5457           <webidl>Constructor(Date date)</webidl>
5458           <ArgumentList>
5459             <Argument name="date">
5460               <Type type="Date"/>
5461             </Argument>
5462           </ArgumentList>
5463         </ExtendedAttribute>
5464         <ExtendedAttribute name="Constructor">
5465           <webidl>     Constructor(Date date, <ref>ByDayValue</ref>[] daysOfTheWeek)</webidl>
5466           <ArgumentList>
5467             <Argument name="date">
5468               <Type type="Date"/>
5469             </Argument>
5470             <Argument name="daysOfTheWeek">
5471               <Type type="array">
5472                 <Type name="ByDayValue"/>
5473               </Type>
5474             </Argument>
5475           </ArgumentList>
5476         </ExtendedAttribute>
5477         <ExtendedAttribute name="Constructor">
5478           <webidl>     Constructor(Date date, long period)</webidl>
5479           <ArgumentList>
5480             <Argument name="date">
5481               <Type type="Date"/>
5482             </Argument>
5483             <Argument name="period">
5484               <Type type="long"/>
5485             </Argument>
5486           </ArgumentList>
5487         </ExtendedAttribute>
5488       </ExtendedAttributeList>
5489       <InterfaceInheritance>
5490         <Name name="Alarm"/>
5491       </InterfaceInheritance>
5492       <Attribute readonly="readonly" name="date" id="::Alarm::AlarmAbsolute::date">
5493         <webidl>        readonly attribute Date date;</webidl>
5494         <descriptive>
5495             <brief>
5496  An attribute to store the absolute date/time when the alarm is initially triggered.
5497             </brief>
5498            <description>
5499             <p>
5500 This attribute is precise to the second. Milliseconds will be ignored.
5501             </p>
5502            </description>
5503             <version>
5504  1.0
5505             </version>
5506         </descriptive>
5507         <Type type="Date"/>
5508       </Attribute>
5509       <Attribute readonly="readonly" name="period" id="::Alarm::AlarmAbsolute::period">
5510         <webidl>        readonly attribute long? period;</webidl>
5511         <descriptive>
5512             <brief>
5513  An attribute to store the duration in seconds between each trigger of the alarm.
5514             </brief>
5515            <description>
5516             <p>
5517 By default, this attribute is set to <var>null</var>, indicating that this alarm does not repeat.
5518 The <em>period</em> and <em>daysOfTheWeek</em> attributes are mutually exclusive.
5519             </p>
5520            </description>
5521             <version>
5522  1.0
5523             </version>
5524         </descriptive>
5525         <Type type="long" nullable="nullable"/>
5526       </Attribute>
5527       <Attribute readonly="readonly" name="daysOfTheWeek" id="::Alarm::AlarmAbsolute::daysOfTheWeek">
5528         <webidl>        readonly attribute <ref>ByDayValue</ref>[] daysOfTheWeek;</webidl>
5529         <descriptive>
5530             <brief>
5531  An attribute to store the days of the week associated with the recurrence rule.
5532             </brief>
5533            <description>
5534             <p>
5535 By default, this attribute is set to an empty array.
5536 The <em>period</em> and <em>daysOfTheWeek</em> attributes are mutually exclusive.
5537             </p>
5538            </description>
5539             <version>
5540  1.0
5541             </version>
5542         </descriptive>
5543         <Type type="array">
5544           <Type name="ByDayValue"/>
5545         </Type>
5546       </Attribute>
5547       <Operation name="getNextScheduledDate" id="::Alarm::AlarmAbsolute::getNextScheduledDate">
5548         <webidl>        Date? getNextScheduledDate() raises(<ref>WebAPIException</ref>);</webidl>
5549         <descriptive>
5550             <brief>
5551  Returns the date / time of the next alarm trigger.
5552             </brief>
5553            <description>
5554             <p>
5555 If the alarm has expired, this method returns <var>null</var>. The returned date is precise to the second.
5556             </p>
5557            </description>
5558             <version>
5559  1.0
5560             </version>
5561             <Code> // Gets the current application id.
5562  var appId = tizen.application.getCurrentApplication().appInfo.id;
5563
5564  // Sets an alarm on January 1st 2014 08:00
5565  var date = new Date(2014, 0, 1, 8, 0);
5566  var alarm1 = new tizen.AlarmAbsolute(date);
5567  tizen.alarm.add(alarm1, appId);
5568  
5569  var date = alarm1.getNextScheduledDate();
5570  console.log(&quot;next scheduled time is &quot; + date);
5571  </Code>
5572         </descriptive>
5573         <Type type="Date" nullable="nullable">
5574           <descriptive>
5575               <description><p>
5576  Date The date/time of the next alarm trigger.
5577               </p></description>
5578           </descriptive>
5579         </Type>
5580         <ArgumentList/>
5581         <Raises>
5582           <RaiseException name="WebAPIException">
5583             <descriptive>
5584                 <description><p>
5585  with error type UnknownError, if the method cannot be completed because of an unknown error.    
5586                 </p></description>
5587             </descriptive>
5588           </RaiseException>
5589         </Raises>
5590       </Operation>
5591     </Interface>
5592   </Module>
5593   <Module name="Application" id="::Application">
5594     <webidl>module Application {
5595
5596   typedef DOMString ApplicationId;
5597
5598   typedef DOMString ApplicationContextId;
5599
5600   [NoInterfaceObject] interface ApplicationManagerObject {
5601     readonly attribute <ref>ApplicationManager</ref> application;
5602   };
5603   <ref>Tizen</ref> implements <ref>ApplicationManagerObject</ref>;
5604
5605   [NoInterfaceObject] interface ApplicationManager {
5606
5607     <ref>Application</ref> getCurrentApplication() raises(<ref>WebAPIException</ref>);
5608         
5609     void kill(<ref>ApplicationContextId</ref> contextId,
5610               optional <ref>SuccessCallback</ref>? successCallback,
5611               optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
5612         
5613     void launch(<ref>ApplicationId</ref> id,
5614                 optional <ref>SuccessCallback</ref>? successCallback,
5615                 optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
5616
5617     void launchAppControl(<ref>ApplicationControl</ref> appControl,
5618                           optional <ref>ApplicationId</ref>? id,
5619                           optional <ref>SuccessCallback</ref>? successCallback,
5620                           optional <ref>ErrorCallback</ref>? errorCallback,
5621                           optional <ref>ApplicationControlDataArrayReplyCallback</ref>? replyCallback) raises(<ref>WebAPIException</ref>);
5622
5623     void findAppControl(<ref>ApplicationControl</ref> appControl,
5624                         <ref>FindAppControlSuccessCallback</ref> successCallback,
5625                         optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
5626
5627     void getAppsContext(<ref>ApplicationContextArraySuccessCallback</ref> successCallback,
5628                         optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
5629
5630     <ref>ApplicationContext</ref> getAppContext(optional <ref>ApplicationContextId</ref>? contextId) raises(<ref>WebAPIException</ref>);
5631
5632     void getAppsInfo(<ref>ApplicationInformationArraySuccessCallback</ref> successCallback,
5633                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
5634
5635     <ref>ApplicationInformation</ref> getAppInfo(optional <ref>ApplicationId</ref>? id) raises(<ref>WebAPIException</ref>);
5636
5637     <ref>ApplicationCertificate</ref>[] getAppCerts(optional <ref>ApplicationId</ref>? id) raises(<ref>WebAPIException</ref>);
5638
5639     DOMString getAppSharedURI(optional <ref>ApplicationId</ref>? id) raises(<ref>WebAPIException</ref>);
5640
5641     <ref>ApplicationMetaData</ref>[] getAppMetaData(optional <ref>ApplicationId</ref>? id) raises(<ref>WebAPIException</ref>);
5642
5643     long addAppInfoEventListener(<ref>ApplicationInformationEventCallback</ref> eventCallback) raises(<ref>WebAPIException</ref>);
5644
5645     void removeAppInfoEventListener(long watchId) raises(<ref>WebAPIException</ref>);
5646
5647   };
5648
5649   [NoInterfaceObject] interface Application {
5650
5651     readonly attribute <ref>ApplicationInformation</ref> appInfo;
5652
5653     readonly attribute <ref>ApplicationContextId</ref> contextId;
5654
5655     void exit() raises(<ref>WebAPIException</ref>);
5656
5657     void hide() raises(<ref>WebAPIException</ref>);
5658
5659     <ref>RequestedApplicationControl</ref> getRequestedAppControl() raises(<ref>WebAPIException</ref>);
5660   };
5661
5662
5663   [NoInterfaceObject] interface ApplicationInformation {
5664
5665     readonly attribute <ref>ApplicationId</ref> id;
5666
5667     readonly attribute DOMString name;
5668
5669     readonly attribute DOMString iconPath;
5670
5671     readonly attribute DOMString version;
5672
5673     readonly attribute boolean show;
5674
5675     readonly attribute DOMString[] categories;
5676
5677     readonly attribute Date installDate;
5678
5679     readonly attribute long size raises(<ref>WebAPIException</ref>);
5680
5681     readonly attribute <ref>PackageId</ref> packageId;
5682   };
5683
5684   [NoInterfaceObject] interface ApplicationContext {
5685
5686     readonly attribute <ref>ApplicationContextId</ref> id;
5687
5688     readonly attribute <ref>ApplicationId</ref> appId;
5689
5690   };
5691
5692   [Constructor(DOMString key, DOMString[] value)]
5693   interface ApplicationControlData {
5694
5695     attribute DOMString key;
5696
5697     attribute DOMString[] value;
5698
5699   };
5700
5701   [Constructor(DOMString operation, optional DOMString? uri,
5702                optional DOMString? mime, optional DOMString? category,
5703                optional <ref>ApplicationControlData</ref>[]? data)]
5704   interface ApplicationControl {
5705
5706     attribute DOMString operation;
5707
5708     attribute DOMString? uri;
5709
5710     attribute DOMString? mime;
5711
5712     attribute DOMString? category;
5713
5714     attribute <ref>ApplicationControlData</ref>[] data;
5715
5716   };
5717
5718   [NoInterfaceObject] interface RequestedApplicationControl {
5719
5720     readonly attribute <ref>ApplicationControl</ref> appControl;
5721
5722     readonly attribute <ref>ApplicationId</ref> callerAppId;
5723
5724     void replyResult(optional <ref>ApplicationControlData</ref>[]? data) raises(<ref>WebAPIException</ref>);
5725
5726     void replyFailure() raises(<ref>WebAPIException</ref>);
5727
5728   };
5729
5730   
5731   [NoInterfaceObject] interface ApplicationCertificate {
5732
5733     readonly attribute DOMString type;
5734
5735     readonly attribute DOMString value;
5736
5737   };
5738   
5739
5740   [NoInterfaceObject] interface ApplicationMetaData {
5741
5742     readonly attribute DOMString key;
5743
5744     readonly attribute DOMString value;
5745
5746   };
5747
5748
5749   [Callback=FunctionOnly, NoInterfaceObject] interface ApplicationInformationArraySuccessCallback {
5750     void onsuccess(<ref>ApplicationInformation</ref>[] informationArray);
5751   };
5752
5753   [Callback=FunctionOnly, NoInterfaceObject] interface FindAppControlSuccessCallback {
5754     void onsuccess(<ref>ApplicationInformation</ref>[] informationArray, <ref>ApplicationControl</ref> appControl);
5755   };
5756
5757   [Callback=FunctionOnly, NoInterfaceObject] interface ApplicationContextArraySuccessCallback {
5758     void onsuccess(<ref>ApplicationContext</ref>[] contexts);
5759   };
5760
5761   [Callback, NoInterfaceObject] interface ApplicationControlDataArrayReplyCallback {
5762     void onsuccess(optional <ref>ApplicationControlData</ref>[]? data);
5763
5764     void onfailure();
5765   };
5766
5767   [Callback, NoInterfaceObject] interface ApplicationInformationEventCallback {
5768     void oninstalled(<ref>ApplicationInformation</ref> info);
5769
5770     void onupdated(<ref>ApplicationInformation</ref> info);
5771
5772     void onuninstalled(<ref>ApplicationId</ref> id);
5773   };
5774
5775 };</webidl>
5776     <descriptive>
5777         <brief>
5778  This API provides a way to launch other applications and access
5779 application management.
5780         </brief>
5781        <description>
5782         <p>
5783 The <em>ApplicationManager</em> interface also provides methods to launch other applications
5784 explicitly and implicitly through the <em>ApplicationControl</em> interface.
5785 The <em>ApplicationControl</em> interface consists of an operation, URI, and MIME type
5786 and also describes an action to be performed by other
5787 applications and can carry the result from the subsequent application.
5788 The <em>ApplicationManager</em> interface also provides methods to handle the application
5789 lifecycle, to access the installed applications on the device, and to let
5790 an application be notified of a change in the application list.
5791         </p>
5792         <p>
5793 The <em>Application</em> interface defines the current application's information and
5794 the basic operations for current application such as exit or hide.
5795         </p>
5796         <p>
5797 For more information on the Application features, see <a href="../../org.tizen.web.appprogramming/html/guide/app_guide/application.htm">Application Guide</a>.
5798         </p>
5799        </description>
5800         <version>
5801  1.0
5802         </version>
5803     </descriptive>
5804     <Typedef name="ApplicationId" id="::Application::ApplicationId">
5805       <webidl>  typedef DOMString ApplicationId;</webidl>
5806       <descriptive>
5807           <brief>
5808  The unique ID for an installed application.
5809           </brief>
5810           <version>
5811  1.0
5812           </version>
5813       </descriptive>
5814       <Type type="DOMString"/>
5815     </Typedef>
5816     <Typedef name="ApplicationContextId" id="::Application::ApplicationContextId">
5817       <webidl>  typedef DOMString ApplicationContextId;</webidl>
5818       <descriptive>
5819           <brief>
5820  The unique ID for a running application.
5821           </brief>
5822           <version>
5823  1.0
5824           </version>
5825       </descriptive>
5826       <Type type="DOMString"/>
5827     </Typedef>
5828     <Interface name="ApplicationManagerObject" id="::Application::ApplicationManagerObject">
5829       <webidl>  [NoInterfaceObject] interface ApplicationManagerObject {
5830     readonly attribute <ref>ApplicationManager</ref> application;
5831   };</webidl>
5832       <descriptive>
5833           <brief>
5834  This interface defines what is instantiated by the <em>Tizen </em>object by the Tizen Platform.
5835           </brief>
5836          <description>
5837           <p>
5838 There will be a <em>tizen.application </em>object that allows access to Application API functionality.
5839           </p>
5840          </description>
5841           <version>
5842  2.0
5843           </version>
5844       </descriptive>
5845       <ExtendedAttributeList>
5846         <ExtendedAttribute name="NoInterfaceObject">
5847           <webidl>NoInterfaceObject</webidl>
5848         </ExtendedAttribute>
5849       </ExtendedAttributeList>
5850       <Attribute readonly="readonly" name="application" id="::Application::ApplicationManagerObject::application">
5851         <webidl>    readonly attribute <ref>ApplicationManager</ref> application;</webidl>
5852         <Type name="ApplicationManager"/>
5853       </Attribute>
5854     </Interface>
5855     <Implements name1="Tizen" name2="ApplicationManagerObject">
5856       <webidl>  <ref>Tizen</ref> implements <ref>ApplicationManagerObject</ref>;</webidl>
5857     </Implements>
5858     <Interface name="ApplicationManager" id="::Application::ApplicationManager">
5859       <webidl>  [NoInterfaceObject] interface ApplicationManager {
5860
5861     <ref>Application</ref> getCurrentApplication() raises(<ref>WebAPIException</ref>);
5862         
5863     void kill(<ref>ApplicationContextId</ref> contextId,
5864               optional <ref>SuccessCallback</ref>? successCallback,
5865               optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
5866         
5867     void launch(<ref>ApplicationId</ref> id,
5868                 optional <ref>SuccessCallback</ref>? successCallback,
5869                 optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
5870
5871     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>);
5876
5877     void findAppControl(<ref>ApplicationControl</ref> appControl,
5878                         <ref>FindAppControlSuccessCallback</ref> successCallback,
5879                         optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
5880
5881     void getAppsContext(<ref>ApplicationContextArraySuccessCallback</ref> successCallback,
5882                         optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
5883
5884     <ref>ApplicationContext</ref> getAppContext(optional <ref>ApplicationContextId</ref>? contextId) raises(<ref>WebAPIException</ref>);
5885
5886     void getAppsInfo(<ref>ApplicationInformationArraySuccessCallback</ref> successCallback,
5887                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
5888
5889     <ref>ApplicationInformation</ref> getAppInfo(optional <ref>ApplicationId</ref>? id) raises(<ref>WebAPIException</ref>);
5890
5891     <ref>ApplicationCertificate</ref>[] getAppCerts(optional <ref>ApplicationId</ref>? id) raises(<ref>WebAPIException</ref>);
5892
5893     DOMString getAppSharedURI(optional <ref>ApplicationId</ref>? id) raises(<ref>WebAPIException</ref>);
5894
5895     <ref>ApplicationMetaData</ref>[] getAppMetaData(optional <ref>ApplicationId</ref>? id) raises(<ref>WebAPIException</ref>);
5896
5897     long addAppInfoEventListener(<ref>ApplicationInformationEventCallback</ref> eventCallback) raises(<ref>WebAPIException</ref>);
5898
5899     void removeAppInfoEventListener(long watchId) raises(<ref>WebAPIException</ref>);
5900
5901   };</webidl>
5902       <descriptive>
5903           <brief>
5904  This section defines the application manager interface.
5905           </brief>
5906           <version>
5907  2.0
5908           </version>
5909       </descriptive>
5910       <ExtendedAttributeList>
5911         <ExtendedAttribute name="NoInterfaceObject">
5912           <webidl>NoInterfaceObject</webidl>
5913         </ExtendedAttribute>
5914       </ExtendedAttributeList>
5915       <Operation name="getCurrentApplication" id="::Application::ApplicationManager::getCurrentApplication">
5916         <webidl>    <ref>Application</ref> getCurrentApplication() raises(<ref>WebAPIException</ref>);</webidl>
5917         <descriptive>
5918             <brief>
5919  Gets the <em>Application </em>object defining the current application.
5920             </brief>
5921             <version>
5922  2.0
5923             </version>
5924             <Code> var app = tizen.application.getCurrentApplication();
5925  console.log(&quot;Current application's app id is &quot; + app.appInfo.id);
5926  </Code>
5927         </descriptive>
5928         <Type name="Application">
5929           <descriptive>
5930               <description><p>
5931  Application The data structure that defines current application.
5932               </p></description>
5933           </descriptive>
5934         </Type>
5935         <ArgumentList/>
5936         <Raises>
5937           <RaiseException name="WebAPIException">
5938             <descriptive>
5939                 <description><p>
5940  with error type UnknownError, if the application cannot be retrieved because of an unknown error.
5941                 </p></description>
5942             </descriptive>
5943           </RaiseException>
5944         </Raises>
5945       </Operation>
5946       <Operation name="kill" id="::Application::ApplicationManager::kill">
5947         <webidl>    void kill(<ref>ApplicationContextId</ref> contextId,
5948               optional <ref>SuccessCallback</ref>? successCallback,
5949               optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
5950         <descriptive>
5951             <brief>
5952  Kills an application with the specified application context ID.
5953             </brief>
5954            <description>
5955             <p>
5956 The <em>ErrorCallback() </em>is launched with these error types:
5957             </p>
5958             <ul>
5959               <li>
5960 NotFoundError - If the context is not found with specified context ID.              </li>
5961               <li>
5962 InvalidValuesError - If any of the input parameters contain an invalid value
5963 or if the specified context ID matches the context ID of the calling application.              </li>
5964               <li>
5965 UnknownError - If any other error occurs.              </li>
5966             </ul>
5967            </description>
5968             <version>
5969  2.0
5970             </version>
5971             <privilegelevel>
5972  partner
5973             </privilegelevel>
5974             <privilege>
5975  http://tizen.org/privilege/appmanager.kill
5976             </privilege>
5977             <Code> function onKillSuccess() {
5978      console.log(&quot;Application terminated successfully&quot;);
5979  }
5980
5981  function onRunningAppsContext(contexts) {
5982     // let's assume that the application &quot;targetApp0.main&quot; has been installed.
5983     var targetId = &quot;targetApp0.main&quot;;
5984
5985     for (var i = 0; i &#60; contexts.length; i++) {
5986         if (contexts[i].appId == targetId) {
5987             tizen.application.kill(contexts[i].id, onKillSuccess);
5988         }
5989     }
5990  }
5991
5992  tizen.application.getAppsContext(onRunningAppsContext);
5993  </Code>
5994         </descriptive>
5995         <Type type="void"/>
5996         <ArgumentList>
5997           <Argument name="contextId">
5998             <descriptive>
5999                 <description><p>
6000  The identifier of the application to kill
6001                 </p></description>
6002             </descriptive>
6003             <Type name="ApplicationContextId"/>
6004           </Argument>
6005           <Argument optional="optional" name="successCallback">
6006             <descriptive>
6007                 <description><p>
6008  The method to invoke when an application is killed successfully.
6009                 </p></description>
6010             </descriptive>
6011             <Type name="SuccessCallback" nullable="nullable"/>
6012           </Argument>
6013           <Argument optional="optional" name="errorCallback">
6014             <descriptive>
6015                 <description><p>
6016  The method to invoke when an error occurs.
6017                 </p></description>
6018             </descriptive>
6019             <Type name="ErrorCallback" nullable="nullable"/>
6020           </Argument>
6021         </ArgumentList>
6022         <Raises>
6023           <RaiseException name="WebAPIException">
6024             <descriptive>
6025                 <description><p>
6026  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
6027                 </p></description>
6028                 <description><p>
6029  with error type SecurityError, if the application does not have the privilege to call this method.
6030                 </p></description>
6031             </descriptive>
6032           </RaiseException>
6033         </Raises>
6034       </Operation>
6035       <Operation name="launch" id="::Application::ApplicationManager::launch">
6036         <webidl>    void launch(<ref>ApplicationId</ref> id,
6037                 optional <ref>SuccessCallback</ref>? successCallback,
6038                 optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
6039         <descriptive>
6040             <brief>
6041  Launches an application with the given application ID.
6042             </brief>
6043            <description>
6044             <p>
6045 The <em>ErrorCallback()</em> is launched with these error types:
6046             </p>
6047             <ul>
6048               <li>
6049 NotFoundError - If the application is not found with given ID.              </li>
6050               <li>
6051 InvalidValuesError - If any of the input parameters contain an invalid value.              </li>
6052               <li>
6053 UnknownError - If any other error occurs.              </li>
6054             </ul>
6055            </description>
6056             <version>
6057  2.0
6058             </version>
6059             <privilegelevel>
6060  public
6061             </privilegelevel>
6062             <privilege>
6063  http://tizen.org/privilege/application.launch
6064             </privilege>
6065             <Code> function onsuccess() {
6066      console.log(&quot;The application has launched successfully&quot;);
6067  }
6068
6069  // let's assume that application &quot;targetApp0.main&quot; has been installed
6070  tizen.application.launch(&quot;targetApp0.main&quot;, onsuccess);
6071  </Code>
6072         </descriptive>
6073         <Type type="void"/>
6074         <ArgumentList>
6075           <Argument name="id">
6076             <descriptive>
6077                 <description><p>
6078  A unique string representing application ID.
6079                 </p></description>
6080             </descriptive>
6081             <Type name="ApplicationId"/>
6082           </Argument>
6083           <Argument optional="optional" name="successCallback">
6084             <descriptive>
6085                 <description><p>
6086  The method to call when the invocation ends successfully.
6087                 </p></description>
6088             </descriptive>
6089             <Type name="SuccessCallback" nullable="nullable"/>
6090           </Argument>
6091           <Argument optional="optional" name="errorCallback">
6092             <descriptive>
6093                 <description><p>
6094  The method to call when an error occurs.
6095                 </p></description>
6096             </descriptive>
6097             <Type name="ErrorCallback" nullable="nullable"/>
6098           </Argument>
6099         </ArgumentList>
6100         <Raises>
6101           <RaiseException name="WebAPIException">
6102             <descriptive>
6103                 <description><p>
6104  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
6105                 </p></description>
6106                 <description><p>
6107  with error type SecurityError, if the application does not have the privilege to call this method.
6108                 </p></description>
6109             </descriptive>
6110           </RaiseException>
6111         </Raises>
6112       </Operation>
6113       <Operation name="launchAppControl" id="::Application::ApplicationManager::launchAppControl">
6114         <webidl>    void launchAppControl(<ref>ApplicationControl</ref> appControl,
6115                           optional <ref>ApplicationId</ref>? id,
6116                           optional <ref>SuccessCallback</ref>? successCallback,
6117                           optional <ref>ErrorCallback</ref>? errorCallback,
6118                           optional <ref>ApplicationControlDataArrayReplyCallback</ref>? replyCallback) raises(<ref>WebAPIException</ref>);</webidl>
6119         <descriptive>
6120             <brief>
6121  Launches an application with the specified application control.
6122             </brief>
6123            <description>
6124             <p>
6125 An application can launch other applications with the application control,
6126 and get back the results from the launched applications.
6127             </p>
6128             <p>
6129 The application control consists of an operation, URI, and MIME type, and describes
6130 the request to be performed by the newly launched application. The
6131 application control is passed to the <em>launchAppControl()</em> method to launch an
6132 application. The system tries to find the proper application
6133 to perform the requested application control, then launches the selected application.
6134             </p>
6135             <p>
6136 The application control request is passed to the newly launched application
6137 and it can be accessed by <em>getRequestedAppControl() </em>method. The passed
6138 application control contains the reason the application was launched and
6139 information about what the application is doing. The launched application
6140 can send a result to the caller application with the <em>replyResult() </em>method of
6141 <em>RequestedApplicationControl</em> interface.
6142             </p>
6143             <p>
6144 The <em>ErrorCallback() </em>is launched with these error types:
6145             </p>
6146             <ul>
6147               <li>
6148 NotFoundError - If system cannot find the application that matches the specified application control.              </li>
6149               <li>
6150 InvalidValuesError - If any of the input parameters contain an invalid value.              </li>
6151               <li>
6152 UnknownError: If any other error occurs.              </li>
6153             </ul>
6154            </description>
6155             <version>
6156  2.0
6157             </version>
6158             <privilegelevel>
6159  public
6160             </privilegelevel>
6161             <privilege>
6162  http://tizen.org/privilege/application.launch
6163             </privilege>
6164             <Code> var appControl = new tizen.ApplicationControl(
6165      &quot;http://tizen.org/appcontrol/operation/pick&quot;,
6166      null,
6167      &quot;image/jpeg&quot;,
6168      null);
6169
6170  var appControlReplyCallback = {
6171      // callee sent a reply
6172      onsuccess: function(data) {
6173          for (var i = 0; i &#60; data.length; i++) {
6174              if (data[i].key == &quot;http://tizen.org/appcontrol/data/selected&quot;) {
6175                  console.log('Selected image is ' + data[i].value[0]);
6176              }
6177          }
6178      },
6179      // callee returned failure
6180      onfailure: function() {
6181          console.log('The launch application control failed');
6182      }
6183  }
6184
6185  tizen.application.launchAppControl(
6186      appControl,
6187      null,
6188      function() {console.log(&quot;launch application control succeed&quot;); },
6189      function(e) {console.log(&quot;launch application control failed. reason: &quot; + e.message); },
6190      appControlReplyCallback );
6191  </Code>
6192         </descriptive>
6193         <Type type="void"/>
6194         <ArgumentList>
6195           <Argument name="appControl">
6196             <descriptive>
6197                 <description><p>
6198  The data structure describing application control details.
6199                 </p></description>
6200             </descriptive>
6201             <Type name="ApplicationControl"/>
6202           </Argument>
6203           <Argument optional="optional" name="id">
6204             <descriptive>
6205                 <description><p>
6206  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.
6207                 </p></description>
6208             </descriptive>
6209             <Type name="ApplicationId" nullable="nullable"/>
6210           </Argument>
6211           <Argument optional="optional" name="successCallback">
6212             <descriptive>
6213                 <description><p>
6214  The method to call when the invocation ends successfully.
6215                 </p></description>
6216             </descriptive>
6217             <Type name="SuccessCallback" nullable="nullable"/>
6218           </Argument>
6219           <Argument optional="optional" name="errorCallback">
6220             <descriptive>
6221                 <description><p>
6222  The method to invoke when an error occurs.
6223                 </p></description>
6224             </descriptive>
6225             <Type name="ErrorCallback" nullable="nullable"/>
6226           </Argument>
6227           <Argument optional="optional" name="replyCallback">
6228             <descriptive>
6229                 <description><p>
6230  The method to invoke when the application gets back results from the launched application.
6231                 </p></description>
6232             </descriptive>
6233             <Type name="ApplicationControlDataArrayReplyCallback" nullable="nullable"/>
6234           </Argument>
6235         </ArgumentList>
6236         <Raises>
6237           <RaiseException name="WebAPIException">
6238             <descriptive>
6239                 <description><p>
6240  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
6241                 </p></description>
6242                 <description><p>
6243  with error type SecurityError, if the application does not have the privilege to call this method.
6244                 </p></description>
6245             </descriptive>
6246           </RaiseException>
6247         </Raises>
6248       </Operation>
6249       <Operation name="findAppControl" id="::Application::ApplicationManager::findAppControl">
6250         <webidl>    void findAppControl(<ref>ApplicationControl</ref> appControl,
6251                         <ref>FindAppControlSuccessCallback</ref> successCallback,
6252                         optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
6253         <descriptive>
6254             <brief>
6255  Finds application information can be launched with the given application control.
6256             </brief>
6257            <description>
6258             <p>
6259 An application can get a list of other applications can be launched with the application control.
6260             </p>
6261             <p>
6262 The <em>ErrorCallback()<em> is launched with these error types:
6263 </em></em>            </p>
6264             <ul>
6265               <li>
6266 InvalidValuesError - If any of the input parameters contain an invalid value.              </li>
6267               <li>
6268 UnknownError - If any other error occurs.              </li>
6269             </ul>
6270            </description>
6271             <version>
6272  2.0
6273             </version>
6274             <Code> var appControl = new tizen.ApplicationControl(
6275      &quot;http://tizen.org/appcontrol/operation/pick&quot;,
6276      null,
6277      &quot;image/jpeg&quot;,
6278      null);
6279
6280  function successCB(appInfos, appControl)
6281  {
6282      // em>appControl/em> is same object with the value passed as first parameter to em>findAppControl()/em>
6283      var appControlReplyCallback = {
6284          // callee sent a reply
6285          onsuccess: function(data) {
6286              for (var i = 0; i &#60; data.length; i++) {
6287                  if (data[i].key == &quot;http://tizen.org/appcontrol/data/selected&quot;) {
6288                      console.log('Selected image is ' + data[i].value[0]);
6289                  }
6290              }
6291          },
6292          // callee returned failure
6293          onfailure: function() {
6294              console.log('The launch application control failed');
6295          }
6296      }
6297
6298      var appId = appInfos[0].id; // select first app's id
6299
6300      tizen.application.launchAppControl(
6301          appControl, 
6302          appId,
6303          function() {console.log(&quot;launch application control succeed&quot;); },
6304         function(e) {console.log(&quot;launch application control failed. reason: &quot; + e.message); },
6305         appControlReplyCallback );
6306  }
6307
6308  tizen.application.findAppControl(appControl, successCB);
6309  </Code>
6310         </descriptive>
6311         <Type type="void"/>
6312         <ArgumentList>
6313           <Argument name="appControl">
6314             <descriptive>
6315                 <description><p>
6316  A data structure describing application control details.
6317                 </p></description>
6318             </descriptive>
6319             <Type name="ApplicationControl"/>
6320           </Argument>
6321           <Argument name="successCallback">
6322             <descriptive>
6323                 <description><p>
6324  The method to call that returns a list of application information.
6325                 </p></description>
6326             </descriptive>
6327             <Type name="FindAppControlSuccessCallback"/>
6328           </Argument>
6329           <Argument optional="optional" name="errorCallback">
6330             <descriptive>
6331                 <description><p>
6332  The method to call when an error occurs.
6333                 </p></description>
6334             </descriptive>
6335             <Type name="ErrorCallback" nullable="nullable"/>
6336           </Argument>
6337         </ArgumentList>
6338         <Raises>
6339           <RaiseException name="WebAPIException">
6340             <descriptive>
6341                 <description><p>
6342  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
6343                 </p></description>
6344             </descriptive>
6345           </RaiseException>
6346         </Raises>
6347       </Operation>
6348       <Operation name="getAppsContext" id="::Application::ApplicationManager::getAppsContext">
6349         <webidl>    void getAppsContext(<ref>ApplicationContextArraySuccessCallback</ref> successCallback,
6350                         optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
6351         <descriptive>
6352             <brief>
6353  Gets a list of application contexts for applications that are currently running on a device.
6354 The information contained for each application corresponds to the application state at the time when the list was generated.
6355             </brief>
6356            <description>
6357             <p>
6358 The <em>errorCallback()</em> is launched with this error type:
6359             </p>
6360             <ul>
6361               <li>
6362 UnknownError - If an unknown error occurs.              </li>
6363             </ul>
6364            </description>
6365             <version>
6366  2.0
6367             </version>
6368             <Code> function onRunningAppsContext(contexts) {
6369      for (var i = 0; i &#60; contexts.length; i++)
6370          console.log(&quot;ID : &quot; + contexts[i].id);
6371  }
6372
6373  tizen.application.getAppsContext(onRunningAppsContext);
6374  </Code>
6375         </descriptive>
6376         <Type type="void"/>
6377         <ArgumentList>
6378           <Argument name="successCallback">
6379             <descriptive>
6380                 <description><p>
6381  The method to call when the invocation ends successfully.
6382                 </p></description>
6383             </descriptive>
6384             <Type name="ApplicationContextArraySuccessCallback"/>
6385           </Argument>
6386           <Argument optional="optional" name="errorCallback">
6387             <descriptive>
6388                 <description><p>
6389  The method to call when an error occurs.
6390                 </p></description>
6391             </descriptive>
6392             <Type name="ErrorCallback" nullable="nullable"/>
6393           </Argument>
6394         </ArgumentList>
6395         <Raises>
6396           <RaiseException name="WebAPIException">
6397             <descriptive>
6398                 <description><p>
6399  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
6400                 </p></description>
6401             </descriptive>
6402           </RaiseException>
6403         </Raises>
6404       </Operation>
6405       <Operation name="getAppContext" id="::Application::ApplicationManager::getAppContext">
6406         <webidl>    <ref>ApplicationContext</ref> getAppContext(optional <ref>ApplicationContextId</ref>? contextId) raises(<ref>WebAPIException</ref>);</webidl>
6407         <descriptive>
6408             <brief>
6409  Gets the application context for the specified application context ID.
6410 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.
6411 The list of running applications and their application IDs is obtained with <em>getAppsContext()</em>.
6412             </brief>
6413             <version>
6414  2.0
6415             </version>
6416             <Code> var appContext = tizen.application.getAppContext(null);
6417  console.log(&quot;Application context retrieved for app &quot; + appContext.appId);
6418  </Code>
6419         </descriptive>
6420         <Type name="ApplicationContext">
6421           <descriptive>
6422               <description><p>
6423  ApplicationContext A data structure that lists running application details.
6424               </p></description>
6425           </descriptive>
6426         </Type>
6427         <ArgumentList>
6428           <Argument optional="optional" name="contextId">
6429             <descriptive>
6430                 <description><p>
6431  A string representing an application context ID. If the ID is not provided, the application context of the calling application will be returned.
6432                 </p></description>
6433             </descriptive>
6434             <Type name="ApplicationContextId" nullable="nullable"/>
6435           </Argument>
6436         </ArgumentList>
6437         <Raises>
6438           <RaiseException name="WebAPIException">
6439             <descriptive>
6440                 <description><p>
6441  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
6442                 </p></description>
6443                 <description><p>
6444  with error type NotFoundError, if the application context is not found with provided ID.
6445                 </p></description>
6446                 <description><p>
6447  with error type UnknownError, if the application context cannot be retrieved because of an unknown error.
6448                 </p></description>
6449             </descriptive>
6450           </RaiseException>
6451         </Raises>
6452       </Operation>
6453       <Operation name="getAppsInfo" id="::Application::ApplicationManager::getAppsInfo">
6454         <webidl>    void getAppsInfo(<ref>ApplicationInformationArraySuccessCallback</ref> successCallback,
6455                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
6456         <descriptive>
6457             <brief>
6458  Gets the list of installed application's information on a device.
6459 The information contained on each application corresponds to the application state at the moment when the list was generated.
6460             </brief>
6461            <description>
6462             <p>
6463 The <em>errorCallback()</em> is launched with this error type:
6464             </p>
6465             <ul>
6466               <li>
6467 UnknownError - If an unknown error occurs.              </li>
6468             </ul>
6469            </description>
6470             <version>
6471  2.0
6472             </version>
6473             <Code> function onListInstalledApps(applications) {
6474      for (var i = 0; i &#60; applications.length; i++)
6475          console.log(&quot;ID : &quot; + applications[i].id);
6476  }
6477
6478  tizen.application.getAppsInfo(onListInstalledApps);
6479  </Code>
6480         </descriptive>
6481         <Type type="void"/>
6482         <ArgumentList>
6483           <Argument name="successCallback">
6484             <descriptive>
6485                 <description><p>
6486  The method to call when the invocation ends successfully.
6487                 </p></description>
6488             </descriptive>
6489             <Type name="ApplicationInformationArraySuccessCallback"/>
6490           </Argument>
6491           <Argument optional="optional" name="errorCallback">
6492             <descriptive>
6493                 <description><p>
6494  The method to call when an error occurs.
6495                 </p></description>
6496             </descriptive>
6497             <Type name="ErrorCallback" nullable="nullable"/>
6498           </Argument>
6499         </ArgumentList>
6500         <Raises>
6501           <RaiseException name="WebAPIException">
6502             <descriptive>
6503                 <description><p>
6504  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
6505                 </p></description>
6506             </descriptive>
6507           </RaiseException>
6508         </Raises>
6509       </Operation>
6510       <Operation name="getAppInfo" id="::Application::ApplicationManager::getAppInfo">
6511         <webidl>    <ref>ApplicationInformation</ref> getAppInfo(optional <ref>ApplicationId</ref>? id) raises(<ref>WebAPIException</ref>);</webidl>
6512         <descriptive>
6513             <brief>
6514  Gets application information for a specified application ID.
6515             </brief>
6516            <description>
6517             <p>
6518 If the ID is set to <var>null</var> or not set at all, it returns application information for the current application.
6519 The list of installed applications and their application IDs is obtained with <em>getAppsInfo()</em>.
6520             </p>
6521            </description>
6522             <version>
6523  2.0
6524             </version>
6525             <Code> var appInfo = tizen.application.getAppInfo(null);
6526  console.log(&quot;Current application name : &quot; + appInfo.name);
6527  </Code>
6528         </descriptive>
6529         <Type name="ApplicationInformation">
6530           <descriptive>
6531               <description><p>
6532  ApplicationInformation The information of an application.
6533               </p></description>
6534           </descriptive>
6535         </Type>
6536         <ArgumentList>
6537           <Argument optional="optional" name="id">
6538             <descriptive>
6539                 <description><p>
6540  A string representing application ID. If the ID is not provided, the application information of the calling application will be returned.
6541                 </p></description>
6542             </descriptive>
6543             <Type name="ApplicationId" nullable="nullable"/>
6544           </Argument>
6545         </ArgumentList>
6546         <Raises>
6547           <RaiseException name="WebAPIException">
6548             <descriptive>
6549                 <description><p>
6550  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
6551                 </p></description>
6552                 <description><p>
6553  with error type NotFoundError, if the application is not found with specified ID.
6554                 </p></description>
6555                 <description><p>
6556  with error type UnknownError, if the application cannot be retrieved because of an unknown error.
6557                 </p></description>
6558             </descriptive>
6559           </RaiseException>
6560         </Raises>
6561       </Operation>
6562       <Operation name="getAppCerts" id="::Application::ApplicationManager::getAppCerts">
6563         <webidl>    <ref>ApplicationCertificate</ref>[] getAppCerts(optional <ref>ApplicationId</ref>? id) raises(<ref>WebAPIException</ref>);</webidl>
6564         <descriptive>
6565             <brief>
6566  Gets application certificates for a specified application ID.
6567             </brief>
6568            <description>
6569             <p>
6570 If the ID is set to <var>null</var> or not set at all, it returns application certificates for the current application.
6571             </p>
6572             <p>
6573 The certificate types are listed below
6574             </p>
6575             <ul>
6576               <li>
6577  AUTHOR_ROOT - Author Root Certificate               </li>
6578               <li>
6579  AUTHOR_INTERMEDIATE - Author Intermediate Certificate               </li>
6580               <li>
6581  AUTHOR_SIGNER - Author Signer Certificate               </li>
6582               <li>
6583  DISTRIBUTOR_ROOT - Distributor Root Certificate               </li>
6584               <li>
6585  DISTRIBUTOR_INTERMEDIATE - Distributor Intermediate Certificate               </li>
6586               <li>
6587  DISTRIBUTOR_SIGNER - Distributor Signer Certificate               </li>
6588               <li>
6589  DISTRIBUTOR2_ROOT - Distributor2 Root Certificate               </li>
6590               <li>
6591  DISTRIBUTOR2_INTERMEDIATE - Distributor2 Intermediate Certificate               </li>
6592               <li>
6593  DISTRIBUTOR2_SIGNER - Distributor2 Signer Certificate               </li>
6594             </ul>
6595            </description>
6596             <version>
6597  2.0
6598             </version>
6599             <privilegelevel>
6600  partner
6601             </privilegelevel>
6602             <privilege>
6603  http://tizen.org/privilege/appmanager.certificate
6604             </privilege>
6605             <Code> var appCerts = tizen.application.getAppCerts(null);
6606
6607  for (var i = 0; i &#60; appCerts.length; i++) {
6608     console.log(&quot;#&quot; + i + &quot; type:&quot; + appCerts[i].type);
6609     console.log(&quot;#&quot; + i + &quot; value:&quot; + appCerts[i].value);
6610  }
6611  </Code>
6612         </descriptive>
6613         <Type type="array">
6614           <descriptive>
6615               <description><p>
6616  ApplicationCertificate[] Array of certificate information of a specified application
6617               </p></description>
6618           </descriptive>
6619           <Type name="ApplicationCertificate"/>
6620         </Type>
6621         <ArgumentList>
6622           <Argument optional="optional" name="id">
6623             <descriptive>
6624                 <description><p>
6625  A string representing application ID. If the ID is not provided, the application certificate of the calling application will be returned.
6626                 </p></description>
6627             </descriptive>
6628             <Type name="ApplicationId" nullable="nullable"/>
6629           </Argument>
6630         </ArgumentList>
6631         <Raises>
6632           <RaiseException name="WebAPIException">
6633             <descriptive>
6634                 <description><p>
6635  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
6636                 </p></description>
6637                 <description><p>
6638  with error type SecurityError, if the application does not have the privilege to call this method.
6639                 </p></description>
6640                 <description><p>
6641  with error type NotFoundError, if the application is not found with specified ID.
6642                 </p></description>
6643                 <description><p>
6644  with error type UnknownError, if the application cannot be retrieved because of an unknown error.
6645                 </p></description>
6646             </descriptive>
6647           </RaiseException>
6648         </Raises>
6649       </Operation>
6650       <Operation name="getAppSharedURI" id="::Application::ApplicationManager::getAppSharedURI">
6651         <webidl>    DOMString getAppSharedURI(optional <ref>ApplicationId</ref>? id) raises(<ref>WebAPIException</ref>);</webidl>
6652         <descriptive>
6653             <brief>
6654  Gets URI of read-only shared directory of application for a specified application ID.
6655             </brief>
6656            <description>
6657             <p>
6658 The shared directory is used to export data to other applications.
6659 If the ID is set to <var>null</var> or not set at all, it returns shared directory URI for the current application.
6660             </p>
6661            </description>
6662             <version>
6663  2.1
6664             </version>
6665             <Code> var sharedDir = tizen.application.getAppSharedURI(null);
6666  console.log(&quot;shared directory : &quot; + sharedDir);
6667  </Code>
6668         </descriptive>
6669         <Type type="DOMString">
6670           <descriptive>
6671               <description><p>
6672  DOMString The shared directory URI of application
6673               </p></description>
6674           </descriptive>
6675         </Type>
6676         <ArgumentList>
6677           <Argument optional="optional" name="id">
6678             <descriptive>
6679                 <description><p>
6680  A string representing application ID. If the ID is not provided, the shared directory URI of the calling application will be returned.
6681                 </p></description>
6682             </descriptive>
6683             <Type name="ApplicationId" nullable="nullable"/>
6684           </Argument>
6685         </ArgumentList>
6686         <Raises>
6687           <RaiseException name="WebAPIException">
6688             <descriptive>
6689                 <description><p>
6690  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
6691                 </p></description>
6692                 <description><p>
6693  with error type NotFoundError, if the application is not found with specified ID.
6694                 </p></description>
6695                 <description><p>
6696  with error type UnknownError, if the application cannot be retrieved because of an unknown error.
6697                 </p></description>
6698             </descriptive>
6699           </RaiseException>
6700         </Raises>
6701       </Operation>
6702       <Operation name="getAppMetaData" id="::Application::ApplicationManager::getAppMetaData">
6703         <webidl>    <ref>ApplicationMetaData</ref>[] getAppMetaData(optional <ref>ApplicationId</ref>? id) raises(<ref>WebAPIException</ref>);</webidl>
6704         <descriptive>
6705             <brief>
6706  Gets application meta data array for a specified application ID.
6707             </brief>
6708            <description>
6709             <p>
6710 If the ID is set to <var>null</var> or not set at all, it returns application meta data array for the current application.
6711             </p>
6712            </description>
6713             <version>
6714  2.2
6715             </version>
6716             <privilegelevel>
6717  public
6718             </privilegelevel>
6719             <privilege>
6720  http://tizen.org/privilege/application.info
6721             </privilege>
6722             <Code> var metaDataArray = tizen.application.getAppMetaData(null);
6723  console.log(&quot;size of metadata : &quot; + metaDataArray.length);
6724
6725  </Code>
6726         </descriptive>
6727         <Type type="array">
6728           <descriptive>
6729               <description><p>
6730  ApplicationMetaData[] Array of meta data of a specified application. If there are no meta data for a specified application, 
6731 empty array will be returned
6732               </p></description>
6733           </descriptive>
6734           <Type name="ApplicationMetaData"/>
6735         </Type>
6736         <ArgumentList>
6737           <Argument optional="optional" name="id">
6738             <descriptive>
6739                 <description><p>
6740  A string representing application ID. If the ID is not provided, the application metadata array of the calling application will be returned.
6741                 </p></description>
6742             </descriptive>
6743             <Type name="ApplicationId" nullable="nullable"/>
6744           </Argument>
6745         </ArgumentList>
6746         <Raises>
6747           <RaiseException name="WebAPIException">
6748             <descriptive>
6749                 <description><p>
6750  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
6751                 </p></description>
6752                 <description><p>
6753  with error type SecurityError, if the application does not have the privilege to call this method.
6754                 </p></description>
6755                 <description><p>
6756  with error type NotFoundError, if the application is not found with specified ID.
6757                 </p></description>
6758                 <description><p>
6759  with error type UnknownError, if the application cannot be retrieved because of an unknown error.
6760                 </p></description>
6761             </descriptive>
6762           </RaiseException>
6763         </Raises>
6764       </Operation>
6765       <Operation name="addAppInfoEventListener" id="::Application::ApplicationManager::addAppInfoEventListener">
6766         <webidl>    long addAppInfoEventListener(<ref>ApplicationInformationEventCallback</ref> eventCallback) raises(<ref>WebAPIException</ref>);</webidl>
6767         <descriptive>
6768             <brief>
6769  Adds a listener for receiving any notification for changes in the list of the installed applications
6770 on a device.
6771             </brief>
6772            <description>
6773             <p>
6774 It install a callback that is triggered every time a change occurs on
6775 the list of installed applications on a device. This change may
6776 be occurred by a new installation, uninstallation, or update of an application.
6777             </p>
6778             <p>
6779 When executed, the implementation must immediately return a listener
6780 ID that identifies the listener. After returning the ID, the change
6781 detection operation is started asynchronously.
6782             </p>
6783             <p>
6784 The <em>ApplicationInformationEventCallback </em>must be invoked every time a new
6785 application is installed, removed, or updated.
6786             </p>
6787             <p>
6788 The change detection must continue until the <em>removeAppInfoEventListener()</em> method is called
6789 with the corresponding listener identifier.
6790             </p>
6791            </description>
6792             <version>
6793  2.0
6794             </version>
6795             <Code> var appEventCallback = {
6796     oninstalled: function(appInfo) {
6797        console.log('The application ' + appInfo.name + ' is installed');
6798     },
6799     onupdated: function(appInfo) {
6800        console.log('The application ' + appInfo.name + ' is updated');
6801     },
6802     onuninstalled: function(appid) {
6803        console.log('The application ' + appid + ' is uninstalled');
6804     }
6805  };
6806  var watchId = tizen.application.addAppInfoEventListener(appEventCallback);
6807  </Code>
6808         </descriptive>
6809         <Type type="long">
6810           <descriptive>
6811               <description><p>
6812  long ID of the listener that can be used to remove the listener later.
6813               </p></description>
6814           </descriptive>
6815         </Type>
6816         <ArgumentList>
6817           <Argument name="eventCallback">
6818             <descriptive>
6819                 <description><p>
6820  The method to call when a change on the installed applications is made.
6821                 </p></description>
6822             </descriptive>
6823             <Type name="ApplicationInformationEventCallback"/>
6824           </Argument>
6825         </ArgumentList>
6826         <Raises>
6827           <RaiseException name="WebAPIException">
6828             <descriptive>
6829                 <description><p>
6830  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
6831                 </p></description>
6832                 <description><p>
6833  with error type UnknownError, if fails to add listener because of an unknown error.
6834                 </p></description>
6835             </descriptive>
6836           </RaiseException>
6837         </Raises>
6838       </Operation>
6839       <Operation name="removeAppInfoEventListener" id="::Application::ApplicationManager::removeAppInfoEventListener">
6840         <webidl>    void removeAppInfoEventListener(long watchId) raises(<ref>WebAPIException</ref>);</webidl>
6841         <descriptive>
6842             <brief>
6843  Removes the listener to stop receiving notifications for changes on the list of installed
6844 applications on a device.
6845             </brief>
6846             <version>
6847  2.0
6848             </version>
6849             <Code> tizen.application.removeAppInfoEventListener(watchId);
6850  </Code>
6851         </descriptive>
6852         <Type type="void"/>
6853         <ArgumentList>
6854           <Argument name="watchId">
6855             <descriptive>
6856                 <description><p>
6857  An ID that identifies the listener.
6858                 </p></description>
6859             </descriptive>
6860             <Type type="long"/>
6861           </Argument>
6862         </ArgumentList>
6863         <Raises>
6864           <RaiseException name="WebAPIException">
6865             <descriptive>
6866                 <description><p>
6867  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
6868                 </p></description>
6869                 <description><p>
6870  with error type InvalidValuesError, if any of the input parameters contain an invalid value.
6871                 </p></description>
6872                 <description><p>
6873  with error type NotFoundError, if the listener is not found with specified ID.
6874                 </p></description>
6875                 <description><p>
6876  with error type UnknownError, if fails to remove listener because of an unknown error.
6877                 </p></description>
6878             </descriptive>
6879           </RaiseException>
6880         </Raises>
6881       </Operation>
6882     </Interface>
6883     <Interface name="Application" id="::Application::Application">
6884       <webidl>  [NoInterfaceObject] interface Application {
6885
6886     readonly attribute <ref>ApplicationInformation</ref> appInfo;
6887
6888     readonly attribute <ref>ApplicationContextId</ref> contextId;
6889
6890     void exit() raises(<ref>WebAPIException</ref>);
6891
6892     void hide() raises(<ref>WebAPIException</ref>);
6893
6894     <ref>RequestedApplicationControl</ref> getRequestedAppControl() raises(<ref>WebAPIException</ref>);
6895   };</webidl>
6896       <descriptive>
6897           <brief>
6898  This interface defines the current application's information and 
6899 the basic operations (such as exit or hide) for the current application .
6900           </brief>
6901           <version>
6902  2.0
6903           </version>
6904       </descriptive>
6905       <ExtendedAttributeList>
6906         <ExtendedAttribute name="NoInterfaceObject">
6907           <webidl>NoInterfaceObject</webidl>
6908         </ExtendedAttribute>
6909       </ExtendedAttributeList>
6910       <Attribute readonly="readonly" name="appInfo" id="::Application::Application::appInfo">
6911         <webidl>    readonly attribute <ref>ApplicationInformation</ref> appInfo;</webidl>
6912         <descriptive>
6913             <brief>
6914  An attribute to store the application information for the current application.
6915             </brief>
6916             <version>
6917  2.0
6918             </version>
6919         </descriptive>
6920         <Type name="ApplicationInformation"/>
6921       </Attribute>
6922       <Attribute readonly="readonly" name="contextId" id="::Application::Application::contextId">
6923         <webidl>    readonly attribute <ref>ApplicationContextId</ref> contextId;</webidl>
6924         <descriptive>
6925             <brief>
6926  An attribute to store the ID of a running application.
6927             </brief>
6928             <version>
6929  2.0
6930             </version>
6931         </descriptive>
6932         <Type name="ApplicationContextId"/>
6933       </Attribute>
6934       <Operation name="exit" id="::Application::Application::exit">
6935         <webidl>    void exit() raises(<ref>WebAPIException</ref>);</webidl>
6936         <descriptive>
6937             <brief>
6938  Exits the current application.
6939             </brief>
6940             <version>
6941  2.0
6942             </version>
6943             <Code> var app = tizen.application.getCurrentApplication();
6944
6945  app.exit();
6946  </Code>
6947         </descriptive>
6948         <Type type="void"/>
6949         <ArgumentList/>
6950         <Raises>
6951           <RaiseException name="WebAPIException">
6952             <descriptive>
6953                 <description><p>
6954  with error type UnknownError, if any other error occurs.
6955                 </p></description>
6956             </descriptive>
6957           </RaiseException>
6958         </Raises>
6959       </Operation>
6960       <Operation name="hide" id="::Application::Application::hide">
6961         <webidl>    void hide() raises(<ref>WebAPIException</ref>);</webidl>
6962         <descriptive>
6963             <brief>
6964  Hides the current application.
6965             </brief>
6966             <version>
6967  2.0
6968             </version>
6969             <Code> var app = tizen.application.getCurrentApplication();
6970
6971  app.hide();
6972  </Code>
6973         </descriptive>
6974         <Type type="void"/>
6975         <ArgumentList/>
6976         <Raises>
6977           <RaiseException name="WebAPIException">
6978             <descriptive>
6979                 <description><p>
6980  with error type UnknownError, if any other error occurs.
6981                 </p></description>
6982             </descriptive>
6983           </RaiseException>
6984         </Raises>
6985       </Operation>
6986       <Operation name="getRequestedAppControl" id="::Application::Application::getRequestedAppControl">
6987         <webidl>    <ref>RequestedApplicationControl</ref> getRequestedAppControl() raises(<ref>WebAPIException</ref>);</webidl>
6988         <descriptive>
6989             <brief>
6990  Gets the requested application control passed to the current application.
6991             </brief>
6992            <description>
6993             <p>
6994 Gets the requested application control that contains the application control
6995 passed by the <em>launchAppControl()</em> method from the calling application.
6996 The requested application control contains the reason the application
6997 was launched and what it has to perform. For example, an application
6998 might be launched to display an image on a page by other
6999 application's request. In all of these cases, the application is
7000 responsible for checking the contents of the application control and responding
7001 appropriately when it is launched.
7002             </p>
7003            </description>
7004             <version>
7005  2.0
7006             </version>
7007             <Code> var reqAppControl = tizen.application.getCurrentApplication().getRequestedAppControl();
7008
7009  if (reqAppControl) {
7010      console.log(&quot;Requester AppID : &quot; + reqAppControl.callerAppId);
7011  }
7012  </Code>
7013         </descriptive>
7014         <Type name="RequestedApplicationControl">
7015           <descriptive>
7016               <description><p>
7017  RequestedApplicationControl The details of an requested application control
7018               </p></description>
7019           </descriptive>
7020         </Type>
7021         <ArgumentList/>
7022         <Raises>
7023           <RaiseException name="WebAPIException">
7024             <descriptive>
7025                 <description><p>
7026  with error type UnknownError, if the application control cannot be retrieved because of an unknown error.
7027                 </p></description>
7028             </descriptive>
7029           </RaiseException>
7030         </Raises>
7031       </Operation>
7032     </Interface>
7033     <Interface name="ApplicationInformation" id="::Application::ApplicationInformation">
7034       <webidl>  [NoInterfaceObject] interface ApplicationInformation {
7035
7036     readonly attribute <ref>ApplicationId</ref> id;
7037
7038     readonly attribute DOMString name;
7039
7040     readonly attribute DOMString iconPath;
7041
7042     readonly attribute DOMString version;
7043
7044     readonly attribute boolean show;
7045
7046     readonly attribute DOMString[] categories;
7047
7048     readonly attribute Date installDate;
7049
7050     readonly attribute long size raises(<ref>WebAPIException</ref>);
7051
7052     readonly attribute <ref>PackageId</ref> packageId;
7053   };</webidl>
7054       <descriptive>
7055           <brief>
7056  This interface defines the general information available to an installed application.
7057           </brief>
7058           <version>
7059  1.0
7060           </version>
7061       </descriptive>
7062       <ExtendedAttributeList>
7063         <ExtendedAttribute name="NoInterfaceObject">
7064           <webidl>NoInterfaceObject</webidl>
7065         </ExtendedAttribute>
7066       </ExtendedAttributeList>
7067       <Attribute readonly="readonly" name="id" id="::Application::ApplicationInformation::id">
7068         <webidl>    readonly attribute <ref>ApplicationId</ref> id;</webidl>
7069         <descriptive>
7070             <brief>
7071  An attribute to store the identifier of an application for application management.
7072             </brief>
7073             <version>
7074  1.0
7075             </version>
7076         </descriptive>
7077         <Type name="ApplicationId"/>
7078       </Attribute>
7079       <Attribute readonly="readonly" name="name" id="::Application::ApplicationInformation::name">
7080         <webidl>    readonly attribute DOMString name;</webidl>
7081         <descriptive>
7082             <brief>
7083  An attribute to store the name of an application.
7084             </brief>
7085             <version>
7086  1.0
7087             </version>
7088         </descriptive>
7089         <Type type="DOMString"/>
7090       </Attribute>
7091       <Attribute readonly="readonly" name="iconPath" id="::Application::ApplicationInformation::iconPath">
7092         <webidl>    readonly attribute DOMString iconPath;</webidl>
7093         <descriptive>
7094             <brief>
7095  An attribute to store the icon path of an application.
7096             </brief>
7097             <version>
7098  1.0
7099             </version>
7100         </descriptive>
7101         <Type type="DOMString"/>
7102       </Attribute>
7103       <Attribute readonly="readonly" name="version" id="::Application::ApplicationInformation::version">
7104         <webidl>    readonly attribute DOMString version;</webidl>
7105         <descriptive>
7106             <brief>
7107  An attribute to store the version of an application.
7108             </brief>
7109             <version>
7110  1.0
7111             </version>
7112         </descriptive>
7113         <Type type="DOMString"/>
7114       </Attribute>
7115       <Attribute readonly="readonly" name="show" id="::Application::ApplicationInformation::show">
7116         <webidl>    readonly attribute boolean show;</webidl>
7117         <descriptive>
7118             <brief>
7119  An attribute that determines whether the application information should
7120 be shown (such as in the menus) or not.
7121             </brief>
7122             <version>
7123  1.0
7124             </version>
7125         </descriptive>
7126         <Type type="boolean"/>
7127       </Attribute>
7128       <Attribute readonly="readonly" name="categories" id="::Application::ApplicationInformation::categories">
7129         <webidl>    readonly attribute DOMString[] categories;</webidl>
7130         <descriptive>
7131             <brief>
7132  An array of attributes to store the categories that the app belongs to.
7133             </brief>
7134             <version>
7135  2.0
7136             </version>
7137         </descriptive>
7138         <Type type="array">
7139           <Type type="DOMString"/>
7140         </Type>
7141       </Attribute>
7142       <Attribute readonly="readonly" name="installDate" id="::Application::ApplicationInformation::installDate">
7143         <webidl>    readonly attribute Date installDate;</webidl>
7144         <descriptive>
7145             <brief>
7146  An attribute to store the application install/update time.
7147             </brief>
7148             <version>
7149  2.0
7150             </version>
7151         </descriptive>
7152         <Type type="Date"/>
7153       </Attribute>
7154       <Attribute readonly="readonly" name="size" id="::Application::ApplicationInformation::size">
7155         <webidl>    readonly attribute long size raises(<ref>WebAPIException</ref>);</webidl>
7156         <descriptive>
7157             <brief>
7158  An attribute to store the application size (installed space).
7159             </brief>
7160             <version>
7161  2.0
7162             </version>
7163             <privilegelevel>
7164  public
7165             </privilegelevel>
7166             <privilege>
7167  http://tizen.org/privilege/application.info
7168             </privilege>
7169         </descriptive>
7170         <Type type="long"/>
7171         <Raises>
7172           <RaiseException name="WebAPIException">
7173             <descriptive>
7174                 <description><p>
7175  with error type SecurityError, if this attribute is not allowed.
7176                 </p></description>
7177             </descriptive>
7178           </RaiseException>
7179         </Raises>
7180       </Attribute>
7181       <Attribute readonly="readonly" name="packageId" id="::Application::ApplicationInformation::packageId">
7182         <webidl>    readonly attribute <ref>PackageId</ref> packageId;</webidl>
7183         <descriptive>
7184             <brief>
7185  An attribute to store the package ID of application.
7186             </brief>
7187             <version>
7188  2.1
7189             </version>
7190         </descriptive>
7191         <Type name="PackageId"/>
7192       </Attribute>
7193     </Interface>
7194     <Interface name="ApplicationContext" id="::Application::ApplicationContext">
7195       <webidl>  [NoInterfaceObject] interface ApplicationContext {
7196
7197     readonly attribute <ref>ApplicationContextId</ref> id;
7198
7199     readonly attribute <ref>ApplicationId</ref> appId;
7200
7201   };</webidl>
7202       <descriptive>
7203           <brief>
7204  This interface defines the information available about a running
7205 application.
7206           </brief>
7207           <version>
7208  1.0
7209           </version>
7210       </descriptive>
7211       <ExtendedAttributeList>
7212         <ExtendedAttribute name="NoInterfaceObject">
7213           <webidl>NoInterfaceObject</webidl>
7214         </ExtendedAttribute>
7215       </ExtendedAttributeList>
7216       <Attribute readonly="readonly" name="id" id="::Application::ApplicationContext::id">
7217         <webidl>    readonly attribute <ref>ApplicationContextId</ref> id;</webidl>
7218         <descriptive>
7219             <brief>
7220  An attribute to store the ID of a running application.
7221             </brief>
7222             <version>
7223  1.0
7224             </version>
7225         </descriptive>
7226         <Type name="ApplicationContextId"/>
7227       </Attribute>
7228       <Attribute readonly="readonly" name="appId" id="::Application::ApplicationContext::appId">
7229         <webidl>    readonly attribute <ref>ApplicationId</ref> appId;</webidl>
7230         <descriptive>
7231             <brief>
7232  An attribute to store the ID of an installed application.
7233             </brief>
7234             <version>
7235  1.0
7236             </version>
7237         </descriptive>
7238         <Type name="ApplicationId"/>
7239       </Attribute>
7240     </Interface>
7241     <Interface name="ApplicationControlData" id="::Application::ApplicationControlData">
7242       <webidl>  [Constructor(DOMString key, DOMString[] value)]
7243   interface ApplicationControlData {
7244
7245     attribute DOMString key;
7246
7247     attribute DOMString[] value;
7248
7249   };</webidl>
7250       <descriptive>
7251           <brief>
7252  This interface defines a key/value pair used to pass data
7253 between applications through the <em>ApplicationControl </em>interface.
7254           </brief>
7255           <version>
7256  2.0
7257           </version>
7258           <Code> var appControlData = new tizen.ApplicationControlData(&quot;image&quot;, [imagedata1]);
7259  </Code>
7260       </descriptive>
7261       <ExtendedAttributeList>
7262         <ExtendedAttribute name="Constructor">
7263           <webidl>Constructor(DOMString key, DOMString[] value)</webidl>
7264           <ArgumentList>
7265             <Argument name="key">
7266               <Type type="DOMString"/>
7267             </Argument>
7268             <Argument name="value">
7269               <Type type="array">
7270                 <Type type="DOMString"/>
7271               </Type>
7272             </Argument>
7273           </ArgumentList>
7274         </ExtendedAttribute>
7275       </ExtendedAttributeList>
7276       <Attribute name="key" id="::Application::ApplicationControlData::key">
7277         <webidl>    attribute DOMString key;</webidl>
7278         <descriptive>
7279             <brief>
7280  An attribute to store the name of a key.
7281             </brief>
7282             <version>
7283  2.0
7284             </version>
7285         </descriptive>
7286         <Type type="DOMString"/>
7287       </Attribute>
7288       <Attribute name="value" id="::Application::ApplicationControlData::value">
7289         <webidl>    attribute DOMString[] value;</webidl>
7290         <descriptive>
7291             <brief>
7292  An attribute to store the value associated with a key.
7293             </brief>
7294             <version>
7295  2.0
7296             </version>
7297         </descriptive>
7298         <Type type="array">
7299           <Type type="DOMString"/>
7300         </Type>
7301       </Attribute>
7302     </Interface>
7303     <Interface name="ApplicationControl" id="::Application::ApplicationControl">
7304       <webidl>  [Constructor(DOMString operation, optional DOMString? uri,
7305                optional DOMString? mime, optional DOMString? category,
7306                optional <ref>ApplicationControlData</ref>[]? data)]
7307   interface ApplicationControl {
7308
7309     attribute DOMString operation;
7310
7311     attribute DOMString? uri;
7312
7313     attribute DOMString? mime;
7314
7315     attribute DOMString? category;
7316
7317     attribute <ref>ApplicationControlData</ref>[] data;
7318
7319   };</webidl>
7320       <descriptive>
7321           <brief>
7322  This interface consists of an operation, URI, MIME type,
7323 and data. It describes an action to be performed by other applications
7324 and is passed to launch other applications.
7325 If the system gets the application control request, it finds
7326 the corresponding application to be launched with the delivered application control
7327 and launches the selected application.
7328           </brief>
7329           <version>
7330  2.0
7331           </version>
7332           <Code> var appControl =
7333        new tizen.ApplicationControl(
7334                   &quot;http://tizen.org/appcontrol/operation/view&quot;,
7335                   null,
7336                   &quot;image/jpeg&quot;,
7337                   null,
7338                   [new tizen.ApplicationControlData(&quot;images&quot;,
7339                                                     [imagedata1, imagedata2])] );
7340  </Code>
7341       </descriptive>
7342       <ExtendedAttributeList>
7343         <ExtendedAttribute name="Constructor">
7344           <webidl>Constructor(DOMString operation, optional DOMString? uri,
7345                optional DOMString? mime, optional DOMString? category,
7346                optional <ref>ApplicationControlData</ref>[]? data)</webidl>
7347           <ArgumentList>
7348             <Argument name="operation">
7349               <Type type="DOMString"/>
7350             </Argument>
7351             <Argument optional="optional" name="uri">
7352               <Type type="DOMString" nullable="nullable"/>
7353             </Argument>
7354             <Argument optional="optional" name="mime">
7355               <Type type="DOMString" nullable="nullable"/>
7356             </Argument>
7357             <Argument optional="optional" name="category">
7358               <Type type="DOMString" nullable="nullable"/>
7359             </Argument>
7360             <Argument optional="optional" name="data">
7361               <Type type="array" nullable="nullable">
7362                 <Type name="ApplicationControlData"/>
7363               </Type>
7364             </Argument>
7365           </ArgumentList>
7366         </ExtendedAttribute>
7367       </ExtendedAttributeList>
7368       <Attribute name="operation" id="::Application::ApplicationControl::operation">
7369         <webidl>    attribute DOMString operation;</webidl>
7370         <descriptive>
7371             <brief>
7372  An attribute to store the string that defines the action to be
7373 performed by an application control.
7374             </brief>
7375             <version>
7376  2.0
7377             </version>
7378         </descriptive>
7379         <Type type="DOMString"/>
7380       </Attribute>
7381       <Attribute name="uri" id="::Application::ApplicationControl::uri">
7382         <webidl>    attribute DOMString? uri;</webidl>
7383         <descriptive>
7384             <brief>
7385  An attribute to store the URI needed by application control.
7386             </brief>
7387             <version>
7388  2.0
7389             </version>
7390         </descriptive>
7391         <Type type="DOMString" nullable="nullable"/>
7392       </Attribute>
7393       <Attribute name="mime" id="::Application::ApplicationControl::mime">
7394         <webidl>    attribute DOMString? mime;</webidl>
7395         <descriptive>
7396             <brief>
7397  An attribute to store the MIME type of a content.
7398             </brief>
7399             <version>
7400  2.0
7401             </version>
7402         </descriptive>
7403         <Type type="DOMString" nullable="nullable"/>
7404       </Attribute>
7405       <Attribute name="category" id="::Application::ApplicationControl::category">
7406         <webidl>    attribute DOMString? category;</webidl>
7407         <descriptive>
7408             <brief>
7409  An attribute to store the category of the application to be launched.
7410             </brief>
7411             <version>
7412  2.0
7413             </version>
7414         </descriptive>
7415         <Type type="DOMString" nullable="nullable"/>
7416       </Attribute>
7417       <Attribute name="data" id="::Application::ApplicationControl::data">
7418         <webidl>    attribute <ref>ApplicationControlData</ref>[] data;</webidl>
7419         <descriptive>
7420             <brief>
7421  An array of attributes to store the data needed for an application control.
7422             </brief>
7423             <version>
7424  2.0
7425             </version>
7426         </descriptive>
7427         <Type type="array">
7428           <Type name="ApplicationControlData"/>
7429         </Type>
7430       </Attribute>
7431     </Interface>
7432     <Interface name="RequestedApplicationControl" id="::Application::RequestedApplicationControl">
7433       <webidl>  [NoInterfaceObject] interface RequestedApplicationControl {
7434
7435     readonly attribute <ref>ApplicationControl</ref> appControl;
7436
7437     readonly attribute <ref>ApplicationId</ref> callerAppId;
7438
7439     void replyResult(optional <ref>ApplicationControlData</ref>[]? data) raises(<ref>WebAPIException</ref>);
7440
7441     void replyFailure() raises(<ref>WebAPIException</ref>);
7442
7443   };</webidl>
7444       <descriptive>
7445           <brief>
7446  This interface has an application control information requested and passed 
7447 from other application and is passed to launch other applications. The newly 
7448 launched application can get the requested application control through <em>getRequestedAppControl()</em> method, and send the results
7449 to the calling application through the <em>replyResult()</em> method after performing the
7450 required action requested the calling application.
7451           </brief>
7452           <version>
7453  2.0
7454           </version>
7455           <Code> var reqAppControl = tizen.application.getCurrentApplication().getRequestedAppControl();
7456  if (reqAppControl) {
7457      console.log(&quot;Requester AppID : &quot; + reqAppControl.callerAppId);
7458
7459      var appControl = reqAppControl.appControl;
7460      if (appControl.operation == &quot;http://tizen.org/appcontrol/operation/pick&quot;) {
7461          var data = new tizen.ApplicationControlData(&quot;http://tizen.org/appcontrol/data/selected&quot;, [&quot;Image1.jpg&quot;]);
7462          reqAppControl.replyResult([data]);
7463      }
7464  }
7465  </Code>
7466       </descriptive>
7467       <ExtendedAttributeList>
7468         <ExtendedAttribute name="NoInterfaceObject">
7469           <webidl>NoInterfaceObject</webidl>
7470         </ExtendedAttribute>
7471       </ExtendedAttributeList>
7472       <Attribute readonly="readonly" name="appControl" id="::Application::RequestedApplicationControl::appControl">
7473         <webidl>    readonly attribute <ref>ApplicationControl</ref> appControl;</webidl>
7474         <descriptive>
7475             <brief>
7476  An attribute to store the application control object that describes caller application's request.
7477 It contains the information that the calling application passed to <em>launchAppControl</em>.
7478             </brief>
7479             <version>
7480  2.0
7481             </version>
7482         </descriptive>
7483         <Type name="ApplicationControl"/>
7484       </Attribute>
7485       <Attribute readonly="readonly" name="callerAppId" id="::Application::RequestedApplicationControl::callerAppId">
7486         <webidl>    readonly attribute <ref>ApplicationId</ref> callerAppId;</webidl>
7487         <descriptive>
7488             <brief>
7489  An attribute to store the caller application's ID
7490             </brief>
7491             <version>
7492  2.1
7493             </version>
7494         </descriptive>
7495         <Type name="ApplicationId"/>
7496       </Attribute>
7497       <Operation name="replyResult" id="::Application::RequestedApplicationControl::replyResult">
7498         <webidl>    void replyResult(optional <ref>ApplicationControlData</ref>[]? data) raises(<ref>WebAPIException</ref>);</webidl>
7499         <descriptive>
7500             <brief>
7501  Sends the results to the caller application.
7502             </brief>
7503             <version>
7504  2.0
7505             </version>
7506         </descriptive>
7507         <Type type="void"/>
7508         <ArgumentList>
7509           <Argument optional="optional" name="data">
7510             <descriptive>
7511                 <description><p>
7512  An array of ApplicationControlData objects.     
7513                 </p></description>
7514             </descriptive>
7515             <Type type="array" nullable="nullable">
7516               <Type name="ApplicationControlData"/>
7517             </Type>
7518           </Argument>
7519         </ArgumentList>
7520         <Raises>
7521           <RaiseException name="WebAPIException">
7522             <descriptive>
7523                 <description><p>
7524  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
7525                 </p></description>
7526                 <description><p>
7527  with error type NotFoundError, if the caller app is not alive or there is no response from the caller app
7528                 </p></description>
7529                 <description><p>
7530  with error type UnknownError, if the reply request fails because of an unknown error
7531                 </p></description>
7532             </descriptive>
7533           </RaiseException>
7534         </Raises>
7535       </Operation>
7536       <Operation name="replyFailure" id="::Application::RequestedApplicationControl::replyFailure">
7537         <webidl>    void replyFailure() raises(<ref>WebAPIException</ref>);</webidl>
7538         <descriptive>
7539             <brief>
7540  Notifies the calling application that the application failed
7541 to perform the requested action.
7542             </brief>
7543             <version>
7544  2.0
7545             </version>
7546         </descriptive>
7547         <Type type="void"/>
7548         <ArgumentList/>
7549         <Raises>
7550           <RaiseException name="WebAPIException">
7551             <descriptive>
7552                 <description><p>
7553  with error type NotFoundError, if the caller app is not alive or there is no response from the caller app
7554                 </p></description>
7555                 <description><p>
7556  with error type UnknownError, if the reply request fails because of an unknown error
7557                 </p></description>
7558             </descriptive>
7559           </RaiseException>
7560         </Raises>
7561       </Operation>
7562     </Interface>
7563     <Interface name="ApplicationCertificate" id="::Application::ApplicationCertificate">
7564       <webidl>  [NoInterfaceObject] interface ApplicationCertificate {
7565
7566     readonly attribute DOMString type;
7567
7568     readonly attribute DOMString value;
7569
7570   };</webidl>
7571       <descriptive>
7572           <brief>
7573  This interface defines the certificate information of an installed application.
7574           </brief>
7575           <version>
7576  2.0
7577           </version>
7578       </descriptive>
7579       <ExtendedAttributeList>
7580         <ExtendedAttribute name="NoInterfaceObject">
7581           <webidl>NoInterfaceObject</webidl>
7582         </ExtendedAttribute>
7583       </ExtendedAttributeList>
7584       <Attribute readonly="readonly" name="type" id="::Application::ApplicationCertificate::type">
7585         <webidl>    readonly attribute DOMString type;</webidl>
7586         <descriptive>
7587             <brief>
7588  An attribute to store the type of the application certificate.
7589             </brief>
7590             <version>
7591  2.0
7592             </version>
7593         </descriptive>
7594         <Type type="DOMString"/>
7595       </Attribute>
7596       <Attribute readonly="readonly" name="value" id="::Application::ApplicationCertificate::value">
7597         <webidl>    readonly attribute DOMString value;</webidl>
7598         <descriptive>
7599             <brief>
7600  An attribute to store the value of the application certificate.
7601             </brief>
7602             <version>
7603  2.0
7604             </version>
7605         </descriptive>
7606         <Type type="DOMString"/>
7607       </Attribute>
7608     </Interface>
7609     <Interface name="ApplicationMetaData" id="::Application::ApplicationMetaData">
7610       <webidl>  [NoInterfaceObject] interface ApplicationMetaData {
7611
7612     readonly attribute DOMString key;
7613
7614     readonly attribute DOMString value;
7615
7616   };</webidl>
7617       <descriptive>
7618           <brief>
7619  This interface defines the meta data of an installed application.
7620           </brief>
7621           <version>
7622  2.2
7623           </version>
7624       </descriptive>
7625       <ExtendedAttributeList>
7626         <ExtendedAttribute name="NoInterfaceObject">
7627           <webidl>NoInterfaceObject</webidl>
7628         </ExtendedAttribute>
7629       </ExtendedAttributeList>
7630       <Attribute readonly="readonly" name="key" id="::Application::ApplicationMetaData::key">
7631         <webidl>    readonly attribute DOMString key;</webidl>
7632         <descriptive>
7633             <brief>
7634  An attribute to store the key of the application meta data.
7635             </brief>
7636             <version>
7637  2.2
7638             </version>
7639         </descriptive>
7640         <Type type="DOMString"/>
7641       </Attribute>
7642       <Attribute readonly="readonly" name="value" id="::Application::ApplicationMetaData::value">
7643         <webidl>    readonly attribute DOMString value;</webidl>
7644         <descriptive>
7645             <brief>
7646  An attribute to store the value of the application meta data.
7647             </brief>
7648             <version>
7649  2.2
7650             </version>
7651         </descriptive>
7652         <Type type="DOMString"/>
7653       </Attribute>
7654     </Interface>
7655     <Interface name="ApplicationInformationArraySuccessCallback" id="::Application::ApplicationInformationArraySuccessCallback">
7656       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface ApplicationInformationArraySuccessCallback {
7657     void onsuccess(<ref>ApplicationInformation</ref>[] informationArray);
7658   };</webidl>
7659       <descriptive>
7660           <brief>
7661  This interface invokes the success callback that is invoked when the installed application list is retrieved.
7662           </brief>
7663          <description>
7664           <p>
7665 This callback interface specifies a success method with an array of
7666 <em>ApplicationInformation </em>objects as an input parameter. It is used in <em>ApplicationManager.getAppsInfo()</em>.
7667           </p>
7668          </description>
7669           <version>
7670  1.0
7671           </version>
7672       </descriptive>
7673       <ExtendedAttributeList>
7674         <ExtendedAttribute name="Callback" value="FunctionOnly">
7675           <webidl>Callback</webidl>
7676         </ExtendedAttribute>
7677         <ExtendedAttribute name="NoInterfaceObject">
7678           <webidl> NoInterfaceObject</webidl>
7679         </ExtendedAttribute>
7680       </ExtendedAttributeList>
7681       <Operation name="onsuccess" id="::Application::ApplicationInformationArraySuccessCallback::onsuccess">
7682         <webidl>    void onsuccess(<ref>ApplicationInformation</ref>[] informationArray);</webidl>
7683         <descriptive>
7684             <brief>
7685  Called when the asynchronous call completes successfully.
7686             </brief>
7687             <version>
7688  1.0
7689             </version>
7690         </descriptive>
7691         <Type type="void"/>
7692         <ArgumentList>
7693           <Argument name="informationArray">
7694             <descriptive>
7695                 <description><p>
7696  A list of installed applications.
7697                 </p></description>
7698             </descriptive>
7699             <Type type="array">
7700               <Type name="ApplicationInformation"/>
7701             </Type>
7702           </Argument>
7703         </ArgumentList>
7704       </Operation>
7705     </Interface>
7706     <Interface name="FindAppControlSuccessCallback" id="::Application::FindAppControlSuccessCallback">
7707       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface FindAppControlSuccessCallback {
7708     void onsuccess(<ref>ApplicationInformation</ref>[] informationArray, <ref>ApplicationControl</ref> appControl);
7709   };</webidl>
7710       <descriptive>
7711           <brief>
7712  This interface specified a success callback that is invoked when system finished searching applications which is matched by specific application control .
7713           </brief>
7714          <description>
7715           <p>
7716 This callback interface specifies a success method with an array of
7717 <em>ApplicationInformation </em>objects and application control as an input parameter.
7718 It is used in <em>ApplicationManager.findAppControl()</em>.
7719           </p>
7720          </description>
7721           <version>
7722  2.0
7723           </version>
7724       </descriptive>
7725       <ExtendedAttributeList>
7726         <ExtendedAttribute name="Callback" value="FunctionOnly">
7727           <webidl>Callback</webidl>
7728         </ExtendedAttribute>
7729         <ExtendedAttribute name="NoInterfaceObject">
7730           <webidl> NoInterfaceObject</webidl>
7731         </ExtendedAttribute>
7732       </ExtendedAttributeList>
7733       <Operation name="onsuccess" id="::Application::FindAppControlSuccessCallback::onsuccess">
7734         <webidl>    void onsuccess(<ref>ApplicationInformation</ref>[] informationArray, <ref>ApplicationControl</ref> appControl);</webidl>
7735         <descriptive>
7736             <brief>
7737  Called when the asynchronous call completes successfully.
7738             </brief>
7739             <version>
7740  2.0
7741             </version>
7742         </descriptive>
7743         <Type type="void"/>
7744         <ArgumentList>
7745           <Argument name="informationArray">
7746             <descriptive>
7747                 <description><p>
7748  A list of installed applications.
7749                 </p></description>
7750             </descriptive>
7751             <Type type="array">
7752               <Type name="ApplicationInformation"/>
7753             </Type>
7754           </Argument>
7755           <Argument name="appControl">
7756             <descriptive>
7757                 <description><p>
7758  The application control which were passed on <em>ApplicationManager.findAppControl()</em>.
7759                 </p></description>
7760             </descriptive>
7761             <Type name="ApplicationControl"/>
7762           </Argument>
7763         </ArgumentList>
7764       </Operation>
7765     </Interface>
7766     <Interface name="ApplicationContextArraySuccessCallback" id="::Application::ApplicationContextArraySuccessCallback">
7767       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface ApplicationContextArraySuccessCallback {
7768     void onsuccess(<ref>ApplicationContext</ref>[] contexts);
7769   };</webidl>
7770       <descriptive>
7771           <brief>
7772  This callback interface that specifies the success callback that is invoked when the list of running applications is retrieved.
7773           </brief>
7774          <description>
7775           <p>
7776 This callback interface specifies a success method with
7777 an array of <em>ApplicationContext </em>objects as an input parameter. It is used in <em>ApplicationManager.getAppsContext()</em>.
7778           </p>
7779          </description>
7780           <version>
7781  1.0
7782           </version>
7783       </descriptive>
7784       <ExtendedAttributeList>
7785         <ExtendedAttribute name="Callback" value="FunctionOnly">
7786           <webidl>Callback</webidl>
7787         </ExtendedAttribute>
7788         <ExtendedAttribute name="NoInterfaceObject">
7789           <webidl> NoInterfaceObject</webidl>
7790         </ExtendedAttribute>
7791       </ExtendedAttributeList>
7792       <Operation name="onsuccess" id="::Application::ApplicationContextArraySuccessCallback::onsuccess">
7793         <webidl>    void onsuccess(<ref>ApplicationContext</ref>[] contexts);</webidl>
7794         <descriptive>
7795             <brief>
7796  Called when <em>ApplicationManager.getAppsContext() </em>completes successfully.
7797             </brief>
7798             <version>
7799  1.0
7800             </version>
7801         </descriptive>
7802         <Type type="void"/>
7803         <ArgumentList>
7804           <Argument name="contexts">
7805             <descriptive>
7806                 <description><p>
7807  A list of running applications.
7808                 </p></description>
7809             </descriptive>
7810             <Type type="array">
7811               <Type name="ApplicationContext"/>
7812             </Type>
7813           </Argument>
7814         </ArgumentList>
7815       </Operation>
7816     </Interface>
7817     <Interface name="ApplicationControlDataArrayReplyCallback" id="::Application::ApplicationControlDataArrayReplyCallback">
7818       <webidl>  [Callback, NoInterfaceObject] interface ApplicationControlDataArrayReplyCallback {
7819     void onsuccess(optional <ref>ApplicationControlData</ref>[]? data);
7820
7821     void onfailure();
7822   };</webidl>
7823       <descriptive>
7824           <brief>
7825  This callback interface specifies success callbacks that are invoked as a reply from the requested application control within the application control requester.
7826           </brief>
7827          <description>
7828           <p>
7829 This callback interface specifies two methods:
7830           </p>
7831           <ul>
7832             <li>
7833  <em>onsuccess()</em> - Invoked by the callee application calls <em>RequestedApplicationControl.replyResult()</em>.            </li>
7834             <li>
7835  <em>onfailure()</em> - Invoked if the callee application calls <em>RequestedApplicationControl.replyFailure()</em>.            </li>
7836           </ul>
7837          </description>
7838           <version>
7839  2.0
7840           </version>
7841       </descriptive>
7842       <ExtendedAttributeList>
7843         <ExtendedAttribute name="Callback">
7844           <webidl>Callback</webidl>
7845         </ExtendedAttribute>
7846         <ExtendedAttribute name="NoInterfaceObject">
7847           <webidl> NoInterfaceObject</webidl>
7848         </ExtendedAttribute>
7849       </ExtendedAttributeList>
7850       <Operation name="onsuccess" id="::Application::ApplicationControlDataArrayReplyCallback::onsuccess">
7851         <webidl>    void onsuccess(optional <ref>ApplicationControlData</ref>[]? data);</webidl>
7852         <descriptive>
7853             <brief>
7854  Called when the callee application calls <em>RequestedApplicationControl.replyResult()</em>.
7855             </brief>
7856             <version>
7857  2.0
7858             </version>
7859         </descriptive>
7860         <Type type="void"/>
7861         <ArgumentList>
7862           <Argument optional="optional" name="data">
7863             <descriptive>
7864                 <description><p>
7865  An array of <em>ApplicationControlData </em>objects.
7866                 </p></description>
7867             </descriptive>
7868             <Type type="array" nullable="nullable">
7869               <Type name="ApplicationControlData"/>
7870             </Type>
7871           </Argument>
7872         </ArgumentList>
7873       </Operation>
7874       <Operation name="onfailure" id="::Application::ApplicationControlDataArrayReplyCallback::onfailure">
7875         <webidl>    void onfailure();</webidl>
7876         <descriptive>
7877             <brief>
7878  Called when the callee application calls <em>RequestedApplicationControl.replyFailure()</em>.
7879             </brief>
7880             <version>
7881  2.0
7882             </version>
7883         </descriptive>
7884         <Type type="void"/>
7885         <ArgumentList/>
7886       </Operation>
7887     </Interface>
7888     <Interface name="ApplicationInformationEventCallback" id="::Application::ApplicationInformationEventCallback">
7889       <webidl>  [Callback, NoInterfaceObject] interface ApplicationInformationEventCallback {
7890     void oninstalled(<ref>ApplicationInformation</ref> info);
7891
7892     void onupdated(<ref>ApplicationInformation</ref> info);
7893
7894     void onuninstalled(<ref>ApplicationId</ref> id);
7895   };</webidl>
7896       <descriptive>
7897           <brief>
7898  The callback interface to specify for subscribing for notification of changes in the list of installed
7899 applications on a device.
7900           </brief>
7901          <description>
7902           <p>
7903 This callback interface specifies methods that will be invoked when
7904 an application is installed, updated, or uninstalled.
7905           </p>
7906          </description>
7907           <version>
7908  1.0
7909           </version>
7910       </descriptive>
7911       <ExtendedAttributeList>
7912         <ExtendedAttribute name="Callback">
7913           <webidl>Callback</webidl>
7914         </ExtendedAttribute>
7915         <ExtendedAttribute name="NoInterfaceObject">
7916           <webidl> NoInterfaceObject</webidl>
7917         </ExtendedAttribute>
7918       </ExtendedAttributeList>
7919       <Operation name="oninstalled" id="::Application::ApplicationInformationEventCallback::oninstalled">
7920         <webidl>    void oninstalled(<ref>ApplicationInformation</ref> info);</webidl>
7921         <descriptive>
7922             <brief>
7923  Called when an application is installed.
7924             </brief>
7925             <version>
7926  1.0
7927             </version>
7928         </descriptive>
7929         <Type type="void"/>
7930         <ArgumentList>
7931           <Argument name="info">
7932             <descriptive>
7933                 <description><p>
7934  The application information of the installed application.
7935                 </p></description>
7936             </descriptive>
7937             <Type name="ApplicationInformation"/>
7938           </Argument>
7939         </ArgumentList>
7940       </Operation>
7941       <Operation name="onupdated" id="::Application::ApplicationInformationEventCallback::onupdated">
7942         <webidl>    void onupdated(<ref>ApplicationInformation</ref> info);</webidl>
7943         <descriptive>
7944             <brief>
7945  Called when an application is updated.
7946             </brief>
7947             <version>
7948  1.0
7949             </version>
7950         </descriptive>
7951         <Type type="void"/>
7952         <ArgumentList>
7953           <Argument name="info">
7954             <descriptive>
7955                 <description><p>
7956  The application information of the updated application.
7957                 </p></description>
7958             </descriptive>
7959             <Type name="ApplicationInformation"/>
7960           </Argument>
7961         </ArgumentList>
7962       </Operation>
7963       <Operation name="onuninstalled" id="::Application::ApplicationInformationEventCallback::onuninstalled">
7964         <webidl>    void onuninstalled(<ref>ApplicationId</ref> id);</webidl>
7965         <descriptive>
7966             <brief>
7967  Called when an application is uninstalled.
7968             </brief>
7969             <version>
7970  1.0
7971             </version>
7972         </descriptive>
7973         <Type type="void"/>
7974         <ArgumentList>
7975           <Argument name="id">
7976             <descriptive>
7977                 <description><p>
7978  The ID of the uninstalled application.
7979                 </p></description>
7980             </descriptive>
7981             <Type name="ApplicationId"/>
7982           </Argument>
7983         </ArgumentList>
7984       </Operation>
7985     </Interface>
7986   </Module>
7987   <Module name="Bluetooth" id="::Bluetooth">
7988     <webidl>module Bluetooth {
7989     typedef DOMString BluetoothAddress;
7990     
7991     typedef DOMString BluetoothUUID;
7992     
7993     enum BluetoothSocketState { &quot;CLOSED&quot;, &quot;OPEN&quot; };
7994
7995     enum BluetoothProfileType { &quot;HEALTH&quot; };
7996         
7997     enum BluetoothHealthChannelType { &quot;RELIABLE&quot;, &quot;STREAMING&quot; };
7998     
7999     [NoInterfaceObject] interface BluetoothManagerObject {
8000         readonly attribute <ref>BluetoothManager</ref> bluetooth;
8001     };
8002     <ref>Tizen</ref> implements <ref>BluetoothManagerObject</ref>;
8003
8004     [NoInterfaceObject] interface BluetoothManager {
8005         readonly attribute <ref>BluetoothClassDeviceMajor</ref> deviceMajor;
8006         readonly attribute <ref>BluetoothClassDeviceMinor</ref> deviceMinor;
8007         readonly attribute <ref>BluetoothClassDeviceService</ref> deviceService;
8008         <ref>BluetoothAdapter</ref> getDefaultAdapter() raises(<ref>WebAPIException</ref>);
8009     };
8010
8011
8012     [NoInterfaceObject] interface BluetoothAdapter {
8013         readonly attribute DOMString name;
8014         readonly attribute <ref>BluetoothAddress</ref> address;
8015         readonly attribute boolean powered; 
8016         readonly attribute boolean visible;
8017
8018         void setName(DOMString name,
8019                      optional <ref>SuccessCallback</ref>? successCallback, 
8020                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
8021  
8022         void setPowered(boolean state,
8023                         optional <ref>SuccessCallback</ref>? successCallback, 
8024                         optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);     
8025         
8026         void setVisible(boolean mode,
8027                         optional <ref>SuccessCallback</ref>? successCallback, 
8028                         optional <ref>ErrorCallback</ref>? errorCallback,
8029                         optional unsigned short? timeout) raises(<ref>WebAPIException</ref>);
8030
8031         void setChangeListener(<ref>BluetoothAdapterChangeCallback</ref> listener) raises(<ref>WebAPIException</ref>);
8032
8033         void unsetChangeListener() raises(<ref>WebAPIException</ref>);
8034
8035         void discoverDevices(<ref>BluetoothDiscoverDevicesSuccessCallback</ref> successCallback, 
8036                              optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
8037
8038         void stopDiscovery(optional <ref>SuccessCallback</ref>? successCallback, 
8039                            optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
8040
8041         void getKnownDevices(<ref>BluetoothDeviceArraySuccessCallback</ref> successCallback, 
8042                              optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
8043
8044
8045
8046
8047         void getDevice(<ref>BluetoothAddress</ref> address,
8048                        <ref>BluetoothDeviceSuccessCallback</ref> successCallback, 
8049                        optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
8050
8051
8052
8053
8054         void createBonding(<ref>BluetoothAddress</ref> address,
8055                            <ref>BluetoothDeviceSuccessCallback</ref> successCallback, 
8056                            optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
8057
8058         void destroyBonding(<ref>BluetoothAddress</ref> address,
8059                             optional <ref>SuccessCallback</ref>? successCallback, 
8060                             optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
8061
8062
8063
8064         void registerRFCOMMServiceByUUID(<ref>BluetoothUUID</ref> uuid,
8065                                          DOMString name,
8066                                          <ref>BluetoothServiceSuccessCallback</ref> successCallback, 
8067                                          optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
8068
8069         <ref>BluetoothProfileHandler</ref> getBluetoothProfileHandler(<ref>BluetoothProfileType</ref> profileType) raises(<ref>WebAPIException</ref>);
8070
8071              };
8072     [NoInterfaceObject] interface BluetoothDevice {
8073         readonly attribute DOMString name;
8074         readonly attribute <ref>BluetoothAddress</ref> address;
8075         readonly attribute <ref>BluetoothClass</ref> deviceClass;
8076         readonly attribute boolean isBonded;
8077         readonly attribute boolean isTrusted;
8078         readonly attribute boolean isConnected;
8079         readonly attribute <ref>BluetoothUUID</ref>[] uuids;
8080
8081         void connectToServiceByUUID(<ref>BluetoothUUID</ref> uuid,
8082                                     <ref>BluetoothSocketSuccessCallback</ref> successCallback, 
8083                                     optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
8084     };
8085     [NoInterfaceObject] interface BluetoothSocket {
8086         readonly attribute <ref>BluetoothUUID</ref> uuid;
8087         readonly attribute <ref>BluetoothSocketState</ref> state;
8088         readonly attribute <ref>BluetoothDevice</ref> peer;
8089         [TreatNonCallableAsNull] attribute <ref>SuccessCallback</ref>? onmessage raises(<ref>WebAPIException</ref>);
8090         [TreatNonCallableAsNull] attribute <ref>SuccessCallback</ref>? onclose raises(<ref>WebAPIException</ref>);
8091         unsigned long writeData(byte[] data) raises(<ref>WebAPIException</ref>);
8092
8093
8094         byte[] readData() raises(<ref>WebAPIException</ref>);
8095
8096
8097         void close() raises(<ref>WebAPIException</ref>);
8098     };
8099
8100     [NoInterfaceObject] interface BluetoothClass {
8101         readonly attribute octet major;
8102         
8103         readonly attribute octet minor;
8104         
8105         readonly attribute unsigned short [] services ;
8106         
8107         boolean hasService(unsigned short service) raises(<ref>WebAPIException</ref>);
8108     };
8109
8110     [NoInterfaceObject] interface BluetoothClassDeviceMajor {
8111
8112         const octet MISC = 0x00;
8113         const octet COMPUTER = 0x01;
8114         const octet PHONE = 0x02;
8115         const octet NETWORK = 0x03;
8116         const octet AUDIO_VIDEO = 0x04;
8117         const octet PERIPHERAL = 0x05;
8118         const octet IMAGING = 0x06;
8119         const octet WEARABLE = 0x07;
8120         const octet TOY = 0x08;
8121         const octet HEALTH = 0x09;
8122         const octet UNCATEGORIZED = 0x1F;
8123     };
8124
8125     [NoInterfaceObject] interface BluetoothClassDeviceMinor {
8126         const octet COMPUTER_UNCATEGORIZED = 0x00;
8127         const octet COMPUTER_DESKTOP = 0x01;
8128         const octet COMPUTER_SERVER = 0x02;
8129         const octet COMPUTER_LAPTOP = 0x03;
8130         const octet COMPUTER_HANDHELD_PC_OR_PDA = 0x04;
8131         const octet COMPUTER_PALM_PC_OR_PDA = 0x05;
8132         const octet COMPUTER_WEARABLE = 0x06;
8133
8134         const octet PHONE_UNCATEGORIZED = 0x00;
8135         const octet PHONE_CELLULAR = 0x01;
8136         const octet PHONE_CORDLESS = 0x02;
8137         const octet PHONE_SMARTPHONE = 0x03;
8138         const octet PHONE_MODEM_OR_GATEWAY = 0x04;
8139         const octet PHONE_ISDN = 0x05;
8140
8141         const octet AV_UNRECOGNIZED = 0x00;
8142         const octet AV_WEARABLE_HEADSET = 0x01;
8143         const octet AV_HANDSFREE = 0x02;
8144         const octet AV_MICROPHONE = 0x04;
8145         const octet AV_LOUDSPEAKER = 0x05;
8146         const octet AV_HEADPHONES = 0x06;
8147         const octet AV_PORTABLE_AUDIO = 0x07;
8148         const octet AV_CAR_AUDIO = 0x08;
8149         const octet AV_SETTOP_BOX = 0x09;
8150         const octet AV_HIFI = 0x0a;
8151         const octet AV_VCR = 0x0b;
8152         const octet AV_VIDEO_CAMERA = 0x0c;
8153         const octet AV_CAMCORDER = 0x0d;
8154         const octet AV_MONITOR = 0x0e;
8155         const octet AV_DISPLAY_AND_LOUDSPEAKER = 0x0f;
8156         const octet AV_VIDEO_CONFERENCING = 0x10;
8157         const octet AV_GAMING_TOY = 0x12;
8158
8159         const octet PERIPHERAL_UNCATEGORIZED = 0;
8160         const octet PERIPHERAL_KEYBOARD = 0x10;
8161         const octet PERIPHERAL_POINTING_DEVICE = 0x20;
8162         const octet PERIPHERAL_KEYBOARD_AND_POINTING_DEVICE = 0x30;
8163         const octet PERIPHERAL_JOYSTICK = 0x01;
8164         const octet PERIPHERAL_GAMEPAD = 0x02;
8165         const octet PERIPHERAL_REMOTE_CONTROL = 0x03;
8166         const octet PERIPHERAL_SENSING_DEVICE = 0x04;
8167         const octet PERIPHERAL_DEGITIZER_TABLET = 0x05;
8168         const octet PERIPHERAL_CARD_READER = 0x06;
8169         const octet PERIPHERAL_DIGITAL_PEN = 0x07;
8170         const octet PERIPHERAL_HANDHELD_SCANNER = 0x08;
8171         const octet PERIPHERAL_HANDHELD_INPUT_DEVICE = 0x09;
8172
8173         const octet IMAGING_UNCATEGORIZED = 0x00;
8174         const octet IMAGING_DISPLAY = 0x04;
8175         const octet IMAGING_CAMERA = 0x08;
8176         const octet IMAGING_SCANNER = 0x10;
8177         const octet IMAGING_PRINTER = 0x20;
8178
8179         const octet WEARABLE_WRITST_WATCH = 0x01;
8180         const octet WEARABLE_PAGER = 0x02;
8181         const octet WEARABLE_JACKET = 0x03;
8182         const octet WEARABLE_HELMET = 0x04;
8183         const octet WEARABLE_GLASSES = 0x05;
8184
8185         const octet TOY_ROBOT = 0x01;
8186         const octet TOY_VEHICLE = 0x02;
8187         const octet TOY_DOLL = 0x03;
8188         const octet TOY_CONTROLLER = 0x04;
8189         const octet TOY_GAME = 0x05;
8190
8191         const octet HEALTH_UNDEFINED = 0x00;
8192         const octet HEALTH_BLOOD_PRESSURE_MONITOR = 0x01;
8193         const octet HEALTH_THERMOMETER = 0x02;
8194         const octet HEALTH_WEIGHING_SCALE = 0x03;
8195         const octet HEALTH_GLUCOSE_METER = 0x04;
8196         const octet HEALTH_PULSE_OXIMETER = 0x05;
8197         const octet HEALTH_PULSE_RATE_MONITOR = 0x06;
8198         const octet HEALTH_DATA_DISPLAY = 0x07;
8199         const octet HEALTH_STEP_COUNTER = 0x08;
8200         const octet HEALTH_BODY_COMPOSITION_ANALYZER = 0x09;
8201         const octet HEALTH_PEAK_FLOW_MONITOR = 0x0a;
8202         const octet HEALTH_MEDICATION_MONITOR = 0x0b;
8203         const octet HEALTH_KNEE_PROSTHESIS = 0x0c;
8204         const octet HEALTH_ANKLE_PROSTHESIS = 0x0d;
8205     };
8206
8207     [NoInterfaceObject] interface BluetoothClassDeviceService {
8208         const unsigned short LIMITED_DISCOVERABILITY = 0x0001;
8209         const unsigned short POSITIONING = 0x0008; 
8210         const unsigned short NETWORKING = 0x0010; 
8211         const unsigned short RENDERING = 0x0020; 
8212         const unsigned short CAPTURING = 0x0040;
8213         const unsigned short OBJECT_TRANSFER = 0x0080; 
8214         const unsigned short AUDIO = 0x0100;
8215         const unsigned short TELEPHONY = 0x0200;
8216         const unsigned short INFORMATION = 0x0400;
8217     };
8218
8219     [NoInterfaceObject] interface BluetoothServiceHandler {
8220         readonly attribute <ref>BluetoothUUID</ref> uuid;
8221         readonly attribute DOMString name;
8222         readonly attribute boolean isConnected;
8223         [TreatNonCallableAsNull] attribute <ref>BluetoothSocketSuccessCallback</ref>? onconnect raises(<ref>WebAPIException</ref>);
8224
8225         void unregister(optional <ref>SuccessCallback</ref>? successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
8226     };
8227
8228     [NoInterfaceObject] interface BluetoothProfileHandler {
8229         
8230         readonly attribute <ref>BluetoothProfileType</ref> profileType;
8231                 
8232     };
8233                 
8234
8235     [NoInterfaceObject] interface BluetoothHealthProfileHandler : <ref>BluetoothProfileHandler</ref> {
8236         
8237         void registerSinkApplication(unsigned short dataType, DOMString name, <ref>BluetoothHealthApplicationSuccessCallback</ref> successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
8238
8239         void connectToSource(<ref>BluetoothDevice</ref> peer, <ref>BluetoothHealthApplication</ref> application, <ref>BluetoothHealthChannelSuccessCallback</ref> successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
8240
8241         };              
8242
8243
8244     [NoInterfaceObject] interface BluetoothHealthApplication {
8245
8246         readonly attribute unsigned short dataType;
8247                 
8248         readonly attribute DOMString name;
8249
8250         [TreatNonCallableAsNull] attribute <ref>BluetoothHealthChannelSuccessCallback</ref>? onconnect raises(<ref>WebAPIException</ref>);
8251                 
8252         void unregister(optional <ref>SuccessCallback</ref>? successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
8253                 
8254     };          
8255         
8256         
8257     [NoInterfaceObject] interface BluetoothHealthChannel {
8258
8259         readonly attribute <ref>BluetoothDevice</ref> peer;
8260                 
8261         readonly attribute <ref>BluetoothHealthChannelType</ref> channelType;
8262
8263         readonly attribute <ref>BluetoothHealthApplication</ref> application;
8264                 
8265         readonly attribute boolean isConnected;
8266
8267         void close() raises(<ref>WebAPIException</ref>);
8268
8269         unsigned long sendData(byte[] data) raises(<ref>WebAPIException</ref>);
8270
8271         void setListener(<ref>BluetoothHealthChannelChangeCallback</ref> listener) raises(<ref>WebAPIException</ref>); 
8272  
8273         void unsetListener() raises(<ref>WebAPIException</ref>);
8274                 
8275     };
8276         
8277
8278     [Callback, NoInterfaceObject] interface BluetoothAdapterChangeCallback {
8279         void onstatechanged(boolean powered);
8280         void onnamechanged(DOMString name);
8281         void onvisibilitychanged(boolean visible);
8282     };
8283
8284     [Callback=FunctionOnly, NoInterfaceObject] interface BluetoothDeviceSuccessCallback {
8285         void onsuccess(<ref>BluetoothDevice</ref> device);
8286     };
8287
8288     [Callback=FunctionOnly, NoInterfaceObject] interface BluetoothDeviceArraySuccessCallback {
8289         void onsuccess(<ref>BluetoothDevice</ref>[] devices);
8290     };
8291
8292     [Callback, NoInterfaceObject] interface BluetoothDiscoverDevicesSuccessCallback {
8293         void onstarted();
8294         void ondevicefound(<ref>BluetoothDevice</ref> device);
8295         void ondevicedisappeared(<ref>BluetoothAddress</ref> address);
8296         void onfinished(<ref>BluetoothDevice</ref>[] foundDevices);
8297     };
8298
8299     [Callback=FunctionOnly, NoInterfaceObject] interface BluetoothSocketSuccessCallback {
8300         void onsuccess(<ref>BluetoothSocket</ref> socket);
8301     };
8302
8303     [Callback=FunctionOnly, NoInterfaceObject] interface BluetoothServiceSuccessCallback {
8304         void onsuccess(<ref>BluetoothServiceHandler</ref> handler);
8305     };
8306
8307     [Callback=FunctionOnly, NoInterfaceObject] interface BluetoothHealthApplicationSuccessCallback {
8308         void onsuccess(<ref>BluetoothHealthApplication</ref> application);
8309     };
8310
8311         
8312     [Callback=FunctionOnly, NoInterfaceObject] interface BluetoothHealthChannelSuccessCallback {
8313         void onsuccess(<ref>BluetoothHealthChannel</ref> channel);
8314     };
8315
8316     [Callback, NoInterfaceObject] interface BluetoothHealthChannelChangeCallback {
8317         void onmessage(byte[] data);
8318                 
8319         void onclose(); 
8320     };
8321
8322 };</webidl>
8323     <descriptive>
8324         <brief>
8325  This specification defines interfaces and methods to manage Bluetooth.
8326         </brief>
8327        <description>
8328         <p>
8329 The following Bluetooth functionalities are provided:
8330         </p>
8331         <ul>
8332           <li>
8333 Controls local Bluetooth device, that is, turn Bluetooth on/off, etc.          </li>
8334           <li>
8335 Sets visibility          </li>
8336           <li>
8337 Discovers nearby Bluetooth devices (Device discovery).          </li>
8338           <li>
8339 Gets bonded devices information.          </li>
8340           <li>
8341 Controls bonding.          </li>
8342           <li>
8343 Connects to a service on a remote device and exchanges data.          </li>
8344           <li>
8345 Registers a service (RFCOMM) on a local device, which can be consumed by remote devices to exchange data.          </li>
8346         </ul>
8347         <p>
8348 For more information on the Bluetooth features, see <a href="../../org.tizen.web.appprogramming/html/guide/communication_guide/bluetooth.htm">Bluetooth Guide</a>.
8349         </p>
8350        </description>
8351         <version>
8352  1.0
8353         </version>
8354         <def-api-feature identifier="http://tizen.org/feature/network.bluetooth">
8355           <descriptive>
8356            <description>
8357             <p>
8358 To guarantee this application running on a device with Bluetooth feature, define below in the config file: 
8359             </p>
8360            </description>
8361           </descriptive>
8362         </def-api-feature>
8363     </descriptive>
8364     <Typedef name="BluetoothAddress" id="::Bluetooth::BluetoothAddress">
8365       <webidl>    typedef DOMString BluetoothAddress;</webidl>
8366       <descriptive>
8367           <brief>
8368  The address of a Bluetooth device.
8369           </brief>
8370           <version>
8371  1.0
8372           </version>
8373       </descriptive>
8374       <Type type="DOMString"/>
8375     </Typedef>
8376     <Typedef name="BluetoothUUID" id="::Bluetooth::BluetoothUUID">
8377       <webidl>    typedef DOMString BluetoothUUID;</webidl>
8378       <descriptive>
8379           <brief>
8380  The UUID of a Bluetooth service.
8381           </brief>
8382           <version>
8383  1.0
8384           </version>
8385       </descriptive>
8386       <Type type="DOMString"/>
8387     </Typedef>
8388     <Enum name="BluetoothSocketState" id="::Bluetooth::BluetoothSocketState">
8389       <webidl>    enum BluetoothSocketState { &quot;CLOSED&quot;, &quot;OPEN&quot; };</webidl>
8390       <descriptive>
8391           <brief>
8392  The Bluetooth socket state.
8393           </brief>
8394           <version>
8395  1.0
8396           </version>
8397       </descriptive>
8398       <EnumValue stringvalue="CLOSED">
8399         <webidl> &quot;CLOSED</webidl>
8400       </EnumValue>
8401       <EnumValue stringvalue="OPEN">
8402         <webidl> &quot;OPEN</webidl>
8403       </EnumValue>
8404     </Enum>
8405     <Enum name="BluetoothProfileType" id="::Bluetooth::BluetoothProfileType">
8406       <webidl>    enum BluetoothProfileType { &quot;HEALTH&quot; };</webidl>
8407       <descriptive>
8408           <brief>
8409  The Bluetooth profile.
8410           </brief>
8411           <version>
8412  2.2
8413           </version>
8414       </descriptive>
8415       <EnumValue stringvalue="HEALTH">
8416         <webidl> &quot;HEALTH</webidl>
8417       </EnumValue>
8418     </Enum>
8419     <Enum name="BluetoothHealthChannelType" id="::Bluetooth::BluetoothHealthChannelType">
8420       <webidl>    enum BluetoothHealthChannelType { &quot;RELIABLE&quot;, &quot;STREAMING&quot; };</webidl>
8421       <descriptive>
8422           <brief>
8423  The channel type of health device profile.
8424           </brief>
8425           <version>
8426  2.2
8427           </version>
8428       </descriptive>
8429       <EnumValue stringvalue="RELIABLE">
8430         <webidl> &quot;RELIABLE</webidl>
8431       </EnumValue>
8432       <EnumValue stringvalue="STREAMING">
8433         <webidl> &quot;STREAMING</webidl>
8434       </EnumValue>
8435     </Enum>
8436     <Interface name="BluetoothManagerObject" id="::Bluetooth::BluetoothManagerObject">
8437       <webidl>    [NoInterfaceObject] interface BluetoothManagerObject {
8438         readonly attribute <ref>BluetoothManager</ref> bluetooth;
8439     };</webidl>
8440       <descriptive>
8441           <brief>
8442  This interface defines what is instantiated by the <em>Tizen</em> object from the Tizen platform.
8443           </brief>
8444          <description>
8445           <p>
8446 There is a <em>tizen.bluetooth</em> object that allows access to the Bluetooth API.
8447           </p>
8448          </description>
8449           <version>
8450  1.0
8451           </version>
8452       </descriptive>
8453       <ExtendedAttributeList>
8454         <ExtendedAttribute name="NoInterfaceObject">
8455           <webidl>NoInterfaceObject</webidl>
8456         </ExtendedAttribute>
8457       </ExtendedAttributeList>
8458       <Attribute readonly="readonly" name="bluetooth" id="::Bluetooth::BluetoothManagerObject::bluetooth">
8459         <webidl>        readonly attribute <ref>BluetoothManager</ref> bluetooth;</webidl>
8460         <Type name="BluetoothManager"/>
8461       </Attribute>
8462     </Interface>
8463     <Implements name1="Tizen" name2="BluetoothManagerObject">
8464       <webidl>    <ref>Tizen</ref> implements <ref>BluetoothManagerObject</ref>;</webidl>
8465     </Implements>
8466     <Interface name="BluetoothManager" id="::Bluetooth::BluetoothManager">
8467       <webidl>    [NoInterfaceObject] interface BluetoothManager {
8468         readonly attribute <ref>BluetoothClassDeviceMajor</ref> deviceMajor;
8469         readonly attribute <ref>BluetoothClassDeviceMinor</ref> deviceMinor;
8470         readonly attribute <ref>BluetoothClassDeviceService</ref> deviceService;
8471         <ref>BluetoothAdapter</ref> getDefaultAdapter() raises(<ref>WebAPIException</ref>);
8472     };</webidl>
8473       <descriptive>
8474           <brief>
8475  This interface provides access to the <em>BluetoothAdapter</em> object.
8476           </brief>
8477           <version>
8478  1.0
8479           </version>
8480       </descriptive>
8481       <ExtendedAttributeList>
8482         <ExtendedAttribute name="NoInterfaceObject">
8483           <webidl>NoInterfaceObject</webidl>
8484         </ExtendedAttribute>
8485       </ExtendedAttributeList>
8486       <Attribute readonly="readonly" name="deviceMajor" id="::Bluetooth::BluetoothManager::deviceMajor">
8487         <webidl>        readonly attribute <ref>BluetoothClassDeviceMajor</ref> deviceMajor;</webidl>
8488         <descriptive>
8489             <brief>
8490  An attribute to access to a major device class identifiers of Bluetooth class of device (CoD).
8491             </brief>
8492             <version>
8493  1.0
8494             </version>
8495         </descriptive>
8496         <Type name="BluetoothClassDeviceMajor"/>
8497       </Attribute>
8498       <Attribute readonly="readonly" name="deviceMinor" id="::Bluetooth::BluetoothManager::deviceMinor">
8499         <webidl>        readonly attribute <ref>BluetoothClassDeviceMinor</ref> deviceMinor;</webidl>
8500         <descriptive>
8501             <brief>
8502  An attribute to access to a minor device class identifiers of Bluetooth class of device (CoD).
8503             </brief>
8504             <version>
8505  1.0
8506             </version>
8507         </descriptive>
8508         <Type name="BluetoothClassDeviceMinor"/>
8509       </Attribute>
8510       <Attribute readonly="readonly" name="deviceService" id="::Bluetooth::BluetoothManager::deviceService">
8511         <webidl>        readonly attribute <ref>BluetoothClassDeviceService</ref> deviceService;</webidl>
8512         <descriptive>
8513             <brief>
8514  Accessor to major service class identifiers of Bluetooth class of device (CoD).
8515             </brief>
8516             <version>
8517  1.0
8518             </version>
8519         </descriptive>
8520         <Type name="BluetoothClassDeviceService"/>
8521       </Attribute>
8522       <Operation name="getDefaultAdapter" id="::Bluetooth::BluetoothManager::getDefaultAdapter">
8523         <webidl>        <ref>BluetoothAdapter</ref> getDefaultAdapter() raises(<ref>WebAPIException</ref>);</webidl>
8524         <descriptive>
8525             <brief>
8526  Gets the default local Bluetooth adapter.
8527             </brief>
8528             <version>
8529  1.0
8530             </version>
8531             <privilegelevel>
8532  public
8533             </privilegelevel>
8534             <privilege>
8535  http://tizen.org/privilege/bluetooth.gap
8536             </privilege>
8537             <Code> try {
8538   var adapter = tizen.bluetooth.getDefaultAdapter() ;
8539  } catch (err) {
8540   console.log (err.name +&quot;: &quot; + err.message);
8541  }
8542  </Code>
8543         </descriptive>
8544         <Type name="BluetoothAdapter">
8545           <descriptive>
8546               <description><p>
8547  BluetoothAdapter The local <em>BluetoothAdapter </em>object.
8548               </p></description>
8549           </descriptive>
8550         </Type>
8551         <ArgumentList/>
8552         <Raises>
8553           <RaiseException name="WebAPIException">
8554             <descriptive>
8555                 <description><p>
8556  with error type SecurityError, if the application does not have the privilege to call this method.
8557                 </p></description>
8558                 <description><p>
8559  with error type NotSupportedError, if this feature is not supported.
8560                 </p></description>
8561                 <description><p>
8562  with error type UnknownError, if any other error occurs.
8563                 </p></description>
8564             </descriptive>
8565           </RaiseException>
8566         </Raises>
8567       </Operation>
8568     </Interface>
8569     <Interface name="BluetoothAdapter" id="::Bluetooth::BluetoothAdapter">
8570       <webidl>    [NoInterfaceObject] interface BluetoothAdapter {
8571         readonly attribute DOMString name;
8572         readonly attribute <ref>BluetoothAddress</ref> address;
8573         readonly attribute boolean powered; 
8574         readonly attribute boolean visible;
8575
8576         void setName(DOMString name,
8577                      optional <ref>SuccessCallback</ref>? successCallback, 
8578                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
8579  
8580         void setPowered(boolean state,
8581                         optional <ref>SuccessCallback</ref>? successCallback, 
8582                         optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);     
8583         
8584         void setVisible(boolean mode,
8585                         optional <ref>SuccessCallback</ref>? successCallback, 
8586                         optional <ref>ErrorCallback</ref>? errorCallback,
8587                         optional unsigned short? timeout) raises(<ref>WebAPIException</ref>);
8588
8589         void setChangeListener(<ref>BluetoothAdapterChangeCallback</ref> listener) raises(<ref>WebAPIException</ref>);
8590
8591         void unsetChangeListener() raises(<ref>WebAPIException</ref>);
8592
8593         void discoverDevices(<ref>BluetoothDiscoverDevicesSuccessCallback</ref> successCallback, 
8594                              optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
8595
8596         void stopDiscovery(optional <ref>SuccessCallback</ref>? successCallback, 
8597                            optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
8598
8599         void getKnownDevices(<ref>BluetoothDeviceArraySuccessCallback</ref> successCallback, 
8600                              optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
8601
8602
8603
8604
8605         void getDevice(<ref>BluetoothAddress</ref> address,
8606                        <ref>BluetoothDeviceSuccessCallback</ref> successCallback, 
8607                        optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
8608
8609
8610
8611
8612         void createBonding(<ref>BluetoothAddress</ref> address,
8613                            <ref>BluetoothDeviceSuccessCallback</ref> successCallback, 
8614                            optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
8615
8616         void destroyBonding(<ref>BluetoothAddress</ref> address,
8617                             optional <ref>SuccessCallback</ref>? successCallback, 
8618                             optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
8619
8620
8621
8622         void registerRFCOMMServiceByUUID(<ref>BluetoothUUID</ref> uuid,
8623                                          DOMString name,
8624                                          <ref>BluetoothServiceSuccessCallback</ref> successCallback, 
8625                                          optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
8626
8627         <ref>BluetoothProfileHandler</ref> getBluetoothProfileHandler(<ref>BluetoothProfileType</ref> profileType) raises(<ref>WebAPIException</ref>);
8628
8629              };</webidl>
8630       <descriptive>
8631           <brief>
8632  This interface provides access to control the device's Bluetooth adapter.
8633           </brief>
8634          <description>
8635           <p>
8636 This interface offers methods to control local Bluetooth behavior, such as:
8637           </p>
8638           <ul>
8639             <li>
8640 Turning on/off Bluetooth radio            </li>
8641             <li>
8642 Changing device visibility            </li>
8643             <li>
8644 Scanning for remote devices            </li>
8645             <li>
8646 Accessing known devices            </li>
8647             <li>
8648 Registering a service in the device service database            </li>
8649           </ul>
8650          </description>
8651           <version>
8652  1.0
8653           </version>
8654       </descriptive>
8655       <ExtendedAttributeList>
8656         <ExtendedAttribute name="NoInterfaceObject">
8657           <webidl>NoInterfaceObject</webidl>
8658         </ExtendedAttribute>
8659       </ExtendedAttributeList>
8660       <Attribute readonly="readonly" name="name" id="::Bluetooth::BluetoothAdapter::name">
8661         <webidl>        readonly attribute DOMString name;</webidl>
8662         <descriptive>
8663             <brief>
8664  An attribute to store the readable name of the Bluetooth adapter.
8665             </brief>
8666             <version>
8667  1.0
8668             </version>
8669             <Code> 
8670  // Access adapter name
8671  var adapter = tizen.bluetooth.getDefaultAdapter();
8672  console.log (&quot;Bluetooth adapter name: &quot; + adapter.name);
8673  </Code>
8674         </descriptive>
8675         <Type type="DOMString"/>
8676       </Attribute>
8677       <Attribute readonly="readonly" name="address" id="::Bluetooth::BluetoothAdapter::address">
8678         <webidl>        readonly attribute <ref>BluetoothAddress</ref> address;</webidl>
8679         <descriptive>
8680             <brief>
8681  An attribute to store the unique hardware address of the Bluetooth adapter, also known as the MAC address.
8682             </brief>
8683             <version>
8684  1.0
8685             </version>
8686             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
8687  console.log(&quot;Bluetooth device address: &quot; + adapter.address);
8688  </Code>
8689         </descriptive>
8690         <Type name="BluetoothAddress"/>
8691       </Attribute>
8692       <Attribute readonly="readonly" name="powered" id="::Bluetooth::BluetoothAdapter::powered">
8693         <webidl>        readonly attribute boolean powered;</webidl>
8694         <descriptive>
8695             <brief>
8696  An attribute to indicate the current state of the Bluetooth adapter.
8697 This attribute holds one of the following 2 values:
8698             </brief>
8699            <description>
8700             <ul>
8701               <li>
8702 <var>true</var> - If Bluetooth adapter is currently on              </li>
8703               <li>
8704 <var>false</var> - If Bluetooth adapter is currently off              </li>
8705             </ul>
8706            </description>
8707             <version>
8708  1.0
8709             </version>
8710             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
8711  console.log(&quot;Bluetooth state: &quot; + (adapter.powered ? &quot;On&quot; : &quot;Off&quot;));
8712  </Code>
8713         </descriptive>
8714         <Type type="boolean"/>
8715       </Attribute>
8716       <Attribute readonly="readonly" name="visible" id="::Bluetooth::BluetoothAdapter::visible">
8717         <webidl>        readonly attribute boolean visible;</webidl>
8718         <descriptive>
8719             <brief>
8720  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.
8721             </brief>
8722             <version>
8723  1.0
8724             </version>
8725             <Code> // Queries current visible state
8726  var adapter = tizen.bluetooth.getDefaultAdapter();
8727  console.log (&quot;Bluetooth Visibility: &quot; + (adapter.visible ? &quot;On&quot; : &quot;Off&quot;));
8728  </Code>
8729         </descriptive>
8730         <Type type="boolean"/>
8731       </Attribute>
8732       <Operation name="setName" id="::Bluetooth::BluetoothAdapter::setName">
8733         <webidl>        void setName(DOMString name,
8734                      optional <ref>SuccessCallback</ref>? successCallback, 
8735                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
8736         <descriptive>
8737             <brief>
8738  Sets the local Bluetooth adapter name.
8739             </brief>
8740            <description>
8741             <p>
8742 Sends a request to Bluetooth hardware to change the name of the local Bluetooth adapter to <em>name</em>.
8743             </p>
8744             <p>
8745 The ErrorCallback is launched with these error types:
8746             </p>
8747             <ul>
8748               <li>
8749  InvalidValuesError: If any of the input parameters contain an invalid value.              </li>
8750               <li>
8751  ServiceNotAvailableError: If a Bluetooth device is turned off.               </li>
8752               <li>
8753  UnknownError: In any other error case.               </li>
8754             </ul>
8755            </description>
8756             <version>
8757  1.0
8758             </version>
8759             <privilegelevel>
8760  public
8761             </privilegelevel>
8762             <privilege>
8763  http://tizen.org/privilege/bluetooth.admin
8764             </privilege>
8765             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
8766  
8767  function changeName(newName) 
8768  {  
8769       if(adapter.name != newName) {
8770            // initiate change name
8771            adapter.setName(newName, function() {
8772                console.log(&quot;Adapter name changed to &quot; + adapter.name);
8773            },
8774            function(e) {
8775                console.log(&quot;Failed to change name: &quot; + e.message);
8776            });
8777       }
8778  }
8779
8780  changeName(&quot;myDevice&quot;);
8781  </Code>
8782         </descriptive>
8783         <Type type="void"/>
8784         <ArgumentList>
8785           <Argument name="name">
8786             <descriptive>
8787                 <description><p>
8788  The name to set.
8789                 </p></description>
8790             </descriptive>
8791             <Type type="DOMString"/>
8792           </Argument>
8793           <Argument optional="optional" name="successCallback">
8794             <descriptive>
8795                 <description><p>
8796  The method to invoke when the asynchronous call completes successfully.
8797                 </p></description>
8798             </descriptive>
8799             <Type name="SuccessCallback" nullable="nullable"/>
8800           </Argument>
8801           <Argument optional="optional" name="errorCallback">
8802             <descriptive>
8803                 <description><p>
8804  The method to invoke when an error occurs.
8805                 </p></description>
8806             </descriptive>
8807             <Type name="ErrorCallback" nullable="nullable"/>
8808           </Argument>
8809         </ArgumentList>
8810         <Raises>
8811           <RaiseException name="WebAPIException">
8812             <descriptive>
8813                 <description><p>
8814  with error type TypeMismatchError, if any of the input parameter is not compatible with the expected type for that parameter.
8815                 </p></description>
8816                 <description><p>
8817  with error type SecurityError, if the application does not have the privilege to call this method.
8818                 </p></description>
8819                 <description><p>
8820  with error type NotSupportedError, if this feature is not supported.
8821                 </p></description>
8822             </descriptive>
8823           </RaiseException>
8824         </Raises>
8825       </Operation>
8826       <Operation name="setPowered" id="::Bluetooth::BluetoothAdapter::setPowered">
8827         <webidl>        void setPowered(boolean state,
8828                         optional <ref>SuccessCallback</ref>? successCallback, 
8829                         optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
8830         <descriptive>
8831             <brief>
8832  Sets the state of a Bluetooth adapter to on or off by sending a request to Bluetooth hardware to change the power state.
8833 For most Bluetooth actions, the Bluetooth adapter must be powered on.
8834             </brief>
8835            <description>
8836             <p>
8837 The ErrorCallback is launched with these error names:
8838             </p>
8839             <ul>
8840               <li>
8841  ServiceNotAvailableError - If a Bluetooth device is busy.              </li>
8842               <li>
8843  UnknownError - If any other error occurs.              </li>
8844             </ul>
8845            </description>
8846             <version>
8847  1.0
8848             </version>
8849             <privilegelevel>
8850  public
8851             </privilegelevel>
8852             <privilege>
8853  http://tizen.org/privilege/bluetooth.admin
8854             </privilege>
8855             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
8856  
8857  function powerOn() 
8858  {
8859       // If adapter is not powered on 
8860       if(!adapter.powered) {
8861            // Initiates power on
8862            adapter.setPowered(true, function() {
8863                console.log(&quot;Bluetooth powered on success.&quot;);
8864            },
8865            function(e) {
8866                console.log(&quot;Failed to power on Bluetooth: &quot; + e.message);
8867            });
8868       }
8869  }
8870
8871  function powerOff()
8872  {
8873       // If powered on
8874       if(adapter.powered) {
8875            // Initiates power off
8876            adapter.setPowered(false, function() {
8877                console.log(&quot;Bluetooth powered off successfully.&quot;);
8878            },
8879            function(e) {
8880                console.log(&quot;Failed to power off Bluetooth: &quot; + e.message);
8881            });
8882       }
8883  }
8884  </Code>
8885         </descriptive>
8886         <Type type="void"/>
8887         <ArgumentList>
8888           <Argument name="state">
8889             <descriptive>
8890                 <description><p>
8891  The state to set: <var>true</var> to power on Bluetooth, <var>false</var> to power it off.
8892                 </p></description>
8893             </descriptive>
8894             <Type type="boolean"/>
8895           </Argument>
8896           <Argument optional="optional" name="successCallback">
8897             <descriptive>
8898                 <description><p>
8899  The method to invoke on successful Bluetooth activation/deactivation.
8900                 </p></description>
8901             </descriptive>
8902             <Type name="SuccessCallback" nullable="nullable"/>
8903           </Argument>
8904           <Argument optional="optional" name="errorCallback">
8905             <descriptive>
8906                 <description><p>
8907  The method to invoke on failure of a Bluetooth activation/deactivation.
8908                 </p></description>
8909             </descriptive>
8910             <Type name="ErrorCallback" nullable="nullable"/>
8911           </Argument>
8912         </ArgumentList>
8913         <Raises>
8914           <RaiseException name="WebAPIException">
8915             <descriptive>
8916                 <description><p>
8917  with error type TypeMismatchError, if any of the input parameter is not compatible with the expected type for that parameter.
8918                 </p></description>
8919                 <description><p>
8920  with error type SecurityError, if the application does not have the privilege to call this method.
8921                 </p></description>
8922                 <description><p>
8923  with error type NotSupportedError, if this feature is not supported.
8924                 </p></description>
8925             </descriptive>
8926           </RaiseException>
8927         </Raises>
8928       </Operation>
8929       <Operation name="setVisible" id="::Bluetooth::BluetoothAdapter::setVisible">
8930         <webidl>        void setVisible(boolean mode,
8931                         optional <ref>SuccessCallback</ref>? successCallback, 
8932                         optional <ref>ErrorCallback</ref>? errorCallback,
8933                         optional unsigned short? timeout) raises(<ref>WebAPIException</ref>);</webidl>
8934         <descriptive>
8935             <brief>
8936  Sets the local device visibility by sending a request to a Bluetooth hardware to change the device visible state to <em>mode</em>.
8937 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.
8938             </brief>
8939            <description>
8940             <p>
8941 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.
8942             </p>
8943             <p>
8944 The ErrorCallback is launched with these error types:
8945             </p>
8946             <ul>
8947               <li>
8948  InvalidValuesError - If any of the input parameters contain an invalid value.              </li>
8949               <li>
8950  ServiceNotAvailableError - If a Bluetooth device is turned off.              </li>
8951               <li>
8952  UnknownError - If any other error case occurs.              </li>
8953             </ul>
8954            </description>
8955             <version>
8956  1.0
8957             </version>
8958             <privilegelevel>
8959  platform
8960             </privilegelevel>
8961             <privilege>
8962  http://tizen.org/privilege/bluetoothmanager
8963             </privilege>
8964             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
8965  
8966  function showMe()
8967  {
8968       if (adapter.visible == false) {
8969           //Shows device
8970           adapter.setVisible(true, 
8971                              function() { console.log ('Device is visible to other devices for 3 minutes.'); },
8972                              function(e) { console.log ('Error: ' + e.message + '(' + e.name + ')'); });
8973       }
8974       else {
8975            console.log(&quot;Device is already in discoverable mode.&quot;);
8976       }
8977  }
8978
8979  function hideMe() 
8980  {
8981      if (adapter.visible) {
8982           // Hides device
8983           adapter.setVisible(false,
8984                              function() { console.log('Device is in-visible now.'); },
8985                              function(e) { console.log ('Error: ' + e.message + '(' + e.name + ')'); });
8986      }
8987      else {
8988           console.log(&quot;Device is already in invisible mode.&quot;);
8989      }
8990  }
8991  </Code>
8992         </descriptive>
8993         <Type type="void"/>
8994         <ArgumentList>
8995           <Argument name="mode">
8996             <descriptive>
8997                 <description><p>
8998  The boolean value to set visibility.
8999 It can either be set to: <var>true</var> - to show the device or <var>false</var> - to hide the device.
9000                 </p></description>
9001             </descriptive>
9002             <Type type="boolean"/>
9003           </Argument>
9004           <Argument optional="optional" name="successCallback">
9005             <descriptive>
9006                 <description><p>
9007  The method to invoke when an asynchronous call completes successfully.
9008                 </p></description>
9009             </descriptive>
9010             <Type name="SuccessCallback" nullable="nullable"/>
9011           </Argument>
9012           <Argument optional="optional" name="errorCallback">
9013             <descriptive>
9014                 <description><p>
9015  The method to invoke when an error occurs.
9016                 </p></description>
9017             </descriptive>
9018             <Type name="ErrorCallback" nullable="nullable"/>
9019           </Argument>
9020           <Argument optional="optional" name="timeout">
9021             <descriptive>
9022                 <description><p>
9023  The visible timeout in seconds, used only when <em>mode</em> is <var>true</var>.
9024                 </p></description>
9025             </descriptive>
9026             <Type type="unsigned short" nullable="nullable"/>
9027           </Argument>
9028         </ArgumentList>
9029         <Raises>
9030           <RaiseException name="WebAPIException">
9031             <descriptive>
9032                 <description><p>
9033  with error type TypeMismatchError, if any of the input parameter is not compatible with the expected type for that parameter.
9034                 </p></description>
9035                 <description><p>
9036  with error type SecurityError, if the application does not have the privilege to call this method.
9037                 </p></description>
9038                 <description><p>
9039  with error type NotSupportedError, if this feature is not supported.
9040                 </p></description>
9041             </descriptive>
9042           </RaiseException>
9043         </Raises>
9044       </Operation>
9045       <Operation name="setChangeListener" id="::Bluetooth::BluetoothAdapter::setChangeListener">
9046         <webidl>        void setChangeListener(<ref>BluetoothAdapterChangeCallback</ref> listener) raises(<ref>WebAPIException</ref>);</webidl>
9047         <descriptive>
9048             <brief>
9049  Sets the listener to receive notifications about changes of Bluetooth adapter.
9050             </brief>
9051             <version>
9052  2.2
9053             </version>
9054             <Code> var changeListener = {
9055       onstatechanged: function(powered) {
9056           console.log (&quot;Power state is changed into: &quot; + powered);
9057       },
9058       onnamechanged: function(name) {
9059           console.log(&quot;Name is changed to: &quot; + name);
9060       },
9061       onvisibilitychanged: function(visible) {
9062           console.log(&quot;Visibility is changed into: &quot; + visible);
9063       }
9064  };
9065
9066  var adapter = tizen.bluetooth.getDefaultAdapter();
9067  adapter.setChangeListener(changeListener);
9068  </Code>
9069         </descriptive>
9070         <Type type="void"/>
9071         <ArgumentList>
9072           <Argument name="listener">
9073             <descriptive>
9074                 <description><p>
9075  The Bluetooth Adapter event listener to set.
9076                 </p></description>
9077             </descriptive>
9078             <Type name="BluetoothAdapterChangeCallback"/>
9079           </Argument>
9080         </ArgumentList>
9081         <Raises>
9082           <RaiseException name="WebAPIException">
9083             <descriptive>
9084                 <description><p>
9085  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
9086                 </p></description>
9087                 <description><p>
9088  with error type SecurityError, if this functionality is not allowed.
9089                 </p></description>
9090                 <description><p>
9091  with error type UnknownError, if any other error occurs.
9092                 </p></description>
9093             </descriptive>
9094           </RaiseException>
9095         </Raises>
9096       </Operation>
9097       <Operation name="unsetChangeListener" id="::Bluetooth::BluetoothAdapter::unsetChangeListener">
9098         <webidl>        void unsetChangeListener() raises(<ref>WebAPIException</ref>);</webidl>
9099         <descriptive>
9100             <brief>
9101  Unsets the listener, so stop receiving notifications about changes of Bluetooth adapter.
9102             </brief>
9103             <version>
9104  2.2
9105             </version>
9106             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
9107
9108  var changeListener = {
9109       onstatechanged: function(powered) {
9110           console.log (&quot;Power state is changed into: &quot; + powered);
9111           if(!powered)
9112               adapter.unsetChangeListener();
9113       },
9114       onnamechanged: function(name) {
9115           console.log(&quot;Name is changed to: &quot; + name);
9116       },
9117       onvisibilitychanged: function(visible) {
9118           console.log(&quot;Visibility is changed into: &quot; + visible);
9119       }
9120  };
9121
9122  adapter.setChangeListener(changeListener);
9123  </Code>
9124         </descriptive>
9125         <Type type="void"/>
9126         <ArgumentList/>
9127         <Raises>
9128           <RaiseException name="WebAPIException">
9129             <descriptive>
9130                 <description><p>
9131  with error type SecurityError, if this functionality is not allowed.
9132                 </p></description>
9133                 <description><p>
9134  with error type UnknownError, if any other error occurs.
9135                 </p></description>
9136             </descriptive>
9137           </RaiseException>
9138         </Raises>
9139       </Operation>
9140       <Operation name="discoverDevices" id="::Bluetooth::BluetoothAdapter::discoverDevices">
9141         <webidl>        void discoverDevices(<ref>BluetoothDiscoverDevicesSuccessCallback</ref> successCallback, 
9142                              optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
9143         <descriptive>
9144             <brief>
9145  Discovers nearby Bluetooth devices if any, that is, devices within proximity to the local device.
9146             </brief>
9147            <description>
9148             <p>
9149 This method initiates the device discovery process. Depending on the progress of this process the following methods are invoked:
9150             </p>
9151             <ul>
9152               <li>
9153 <em>BluetoothDiscoverDevicesSuccessCallback.onstarted()</em> - when a discovery process starts successfully.              </li>
9154               <li>
9155 <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>
9156               <li>
9157 <em>BluetoothDiscoverDevicesSuccessCallback.ondevicedisappeared()</em> - when a device goes out of proximity and this method is invoked with the address of the device.              </li>
9158               <li>
9159 <em>BluetoothDiscoverDevicesSuccessCallback.onfinished()</em> - when a discovery process is completed.              </li>
9160             </ul>
9161             <p>
9162 A discovery process can be canceled anytime, by calling <em>stopDiscovery() </em>on the <em>BluetoothAdapter</em>.
9163             </p>
9164             <p>
9165 The ErrorCallback is launched with these error types:
9166             </p>
9167             <ul>
9168               <li>
9169  ServiceNotAvailableError - If a Bluetooth device is turned off.              </li>
9170               <li>
9171  UnknownError - If any other error occurs.              </li>
9172             </ul>
9173            </description>
9174             <version>
9175  1.0
9176             </version>
9177             <privilegelevel>
9178  public
9179             </privilegelevel>
9180             <privilege>
9181  http://tizen.org/privilege/bluetooth.gap
9182             </privilege>
9183             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
9184  
9185  function startDiscovery() {
9186
9187   var discoverDevicesSuccessCallback = {
9188       onstarted: function() { 
9189           console.log (&quot;Device discovery started...&quot;);
9190       },
9191       ondevicefound: function(device) { 
9192           console.log(&quot;Found device - name: &quot; + device.name + &quot;, Address: &quot;+ device.address); 
9193       },
9194       ondevicedisappeared: function(address) { 
9195           console.log(&quot;Device disappeared: &quot; + address); 
9196       },
9197       onfinished: function(devices) { 
9198           console.log(&quot;Found Devices&quot;);
9199           for (var i = 0; i &#60; devices.length; i++) {
9200               console.log(&quot;Name: &quot; + devices[i].name + &quot;, Address: &quot; + devices[i].address);
9201           }
9202           console.log(&quot;Total: &quot; + devices.length);
9203       }
9204   };
9205  
9206   // Starts searching for nearby devices, for about 12 sec.
9207   adapter.discoverDevices(discoverDevicesSuccessCallback, function(e){
9208       console.log (&quot;Failed to search devices: &quot; + e.message + &quot;(&quot; + e.name + &quot;)&quot;);
9209   });
9210  }
9211
9212  function onSetPoweredError(e) {
9213      console.log (&quot;Could not turn on device, reason: &quot; + e.message + &quot;(&quot; + e.name + &quot;)&quot;);
9214  }
9215
9216  adapter.setPowered(true, startDiscovery, onSetPoweredError);
9217  </Code>
9218         </descriptive>
9219         <Type type="void"/>
9220         <ArgumentList>
9221           <Argument name="successCallback">
9222             <descriptive>
9223                 <description><p>
9224  The method to invoke when an asynchronous call completes successfully.
9225                 </p></description>
9226             </descriptive>
9227             <Type name="BluetoothDiscoverDevicesSuccessCallback"/>
9228           </Argument>
9229           <Argument optional="optional" name="errorCallback">
9230             <descriptive>
9231                 <description><p>
9232  The method to invoke when an error occurs.
9233                 </p></description>
9234             </descriptive>
9235             <Type name="ErrorCallback" nullable="nullable"/>
9236           </Argument>
9237         </ArgumentList>
9238         <Raises>
9239           <RaiseException name="WebAPIException">
9240             <descriptive>
9241                 <description><p>
9242  with error type TypeMismatchError, if any of the input parameter is not compatible with the expected type for that parameter.
9243                 </p></description>
9244                 <description><p>
9245  with error type SecurityError, if the application does not have the privilege to call this method.
9246                 </p></description>
9247                 <description><p>
9248  with error type NotSupportedError, if this feature is not supported.
9249                 </p></description>
9250             </descriptive>
9251           </RaiseException>
9252         </Raises>
9253       </Operation>
9254       <Operation name="stopDiscovery" id="::Bluetooth::BluetoothAdapter::stopDiscovery">
9255         <webidl>        void stopDiscovery(optional <ref>SuccessCallback</ref>? successCallback, 
9256                            optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
9257         <descriptive>
9258             <brief>
9259  Stops an active device discovery session.
9260             </brief>
9261            <description>
9262             <p>
9263 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.
9264             </p>
9265             <p>
9266 The ErrorCallback is launched with these error types:
9267             </p>
9268             <ul>
9269               <li>
9270  ServiceNotAvailableError - If a Bluetooth device is turned off.              </li>
9271               <li>
9272  UnknownError - If any other error occurs.              </li>
9273             </ul>
9274            </description>
9275             <version>
9276  1.0
9277             </version>
9278             <privilegelevel>
9279  public
9280             </privilegelevel>
9281             <privilege>
9282  http://tizen.org/privilege/bluetooth.gap
9283             </privilege>
9284             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
9285  
9286  // Calls this method whenever user finds one of the device
9287  function cancelDiscovery() {
9288     adapter.stopDiscovery(function() {
9289         console.log(&quot;Stop discovery success.&quot;);
9290     },
9291     function (e) {
9292         console.log(&quot;Error while stopDiscovery:&quot; + e.message);
9293     });
9294  }
9295
9296  function startDiscovery() {
9297
9298   var discoverDevicesSuccessCallback = {
9299       onstarted: function() { 
9300           console.log (&quot;Device discovery started...&quot;) ;
9301       },
9302       ondevicefound: function(device) {
9303           console.log(&quot;Found device - name: &quot; + device.name + &quot;, Address: &quot;+ device.address);
9304           // Shows the device to user to check if this is the device user is looking for.
9305           // For example, add this to list view.
9306
9307           cancelDiscovery();
9308       },
9309       ondevicedisappeared: function(address) { 
9310           console.log(&quot;Device disappeared: &quot; + address);
9311           // Removes from list, as it is no longer valid.
9312       },
9313       onfinished: function(devices) { 
9314           console.log(&quot;Found Devices&quot;);
9315           for (var i = 0; i &#60; devices.length; i++) {
9316               console.log(&quot;Name: &quot; + devices[i].name + &quot;, Address: &quot; + devices[i].address);
9317           }
9318           console.log(&quot;Total: &quot; + devices.length);
9319       }
9320   };
9321  
9322   // Starts searching for nearby devices, for about 12 sec.
9323   adapter.discoverDevices(discoverDevicesSuccessCallback, function(e){
9324       console.log (&quot;Failed to search devices: &quot; + e.message + &quot;(&quot; + e.name + &quot;)&quot;);
9325   });
9326  }
9327
9328  function onSetPoweredError(e) {
9329      console.log (&quot;Could not turn on device, reason: &quot; + e.message + &quot;(&quot; + e.name + &quot;)&quot;);
9330  }
9331
9332  adapter.setPowered(true, startDiscovery, onSetPoweredError);
9333  </Code>
9334         </descriptive>
9335         <Type type="void"/>
9336         <ArgumentList>
9337           <Argument optional="optional" name="successCallback">
9338             <descriptive>
9339                 <description><p>
9340  The method to invoke when an asynchronous call completes successfully.
9341                 </p></description>
9342             </descriptive>
9343             <Type name="SuccessCallback" nullable="nullable"/>
9344           </Argument>
9345           <Argument optional="optional" name="errorCallback">
9346             <descriptive>
9347                 <description><p>
9348  The method to invoke when an error occurs.
9349                 </p></description>
9350             </descriptive>
9351             <Type name="ErrorCallback" nullable="nullable"/>
9352           </Argument>
9353         </ArgumentList>
9354         <Raises>
9355           <RaiseException name="WebAPIException">
9356             <descriptive>
9357                 <description><p>
9358  with error type TypeMismatchError, if any of the input parameter is not compatible with the expected type for that parameter.
9359                 </p></description>
9360                 <description><p>
9361  with error type SecurityError, if the application does not have the privilege to call this method.
9362                 </p></description>
9363                 <description><p>
9364  with error type NotSupportedError, if this feature is not supported.
9365                 </p></description>
9366             </descriptive>
9367           </RaiseException>
9368         </Raises>
9369       </Operation>
9370       <Operation name="getKnownDevices" id="::Bluetooth::BluetoothAdapter::getKnownDevices">
9371         <webidl>        void getKnownDevices(<ref>BluetoothDeviceArraySuccessCallback</ref> successCallback, 
9372                              optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
9373         <descriptive>
9374             <brief>
9375  Gets all the known devices that have information stored in the local Bluetooth adapter.
9376             </brief>
9377            <description>
9378             <p>
9379 A known device is one of the following:
9380             </p>
9381             <ul>
9382               <li>
9383 a bonded device              </li>
9384               <li>
9385 a device found in last inquiry process              </li>
9386             </ul>
9387             <p>
9388 On success, it returns the list of currently known devices through <em>BluetoothDeviceArraySuccessCallback</em>.
9389             </p>
9390             <p>
9391 The ErrorCallback is launched with these error types:
9392             </p>
9393             <ul>
9394               <li>
9395  ServiceNotAvailableError - If a Bluetooth device is turned off.              </li>
9396               <li>
9397  UnknownError - If any other error occurs.              </li>
9398             </ul>
9399            </description>
9400             <version>
9401  1.0
9402             </version>
9403             <privilegelevel>
9404  public
9405             </privilegelevel>
9406             <privilege>
9407  http://tizen.org/privilege/bluetooth.gap
9408             </privilege>
9409             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
9410  
9411  function onGotDevices(devices) {
9412     console.log(&quot;Devices&quot;);
9413     for (var i = 0; i &#60; devices.length; i++) {
9414         console.log(&quot; Name: &quot; + devices[i].name + &quot;, Address: &quot; + devices[i].address);
9415     }
9416     console.log(&quot;Total: &quot; + devices.length);
9417  }
9418
9419  function onError(e) {
9420    console.log (&quot;Error: &quot; + e.message);
9421  }
9422
9423  function onBluetoothsetPowered() {
9424     adapter.getKnownDevices(onGotDevices, onError);
9425  }
9426  
9427  // Turns on Bluetooth
9428  adapter.setPowered(true, onBluetoothsetPowered);
9429  </Code>
9430         </descriptive>
9431         <Type type="void"/>
9432         <ArgumentList>
9433           <Argument name="successCallback">
9434             <descriptive>
9435                 <description><p>
9436  The method to invoke at retrieval of a list of Bluetooth devices that were bonded (paired) to the local Bluetooth adapter.
9437                 </p></description>
9438             </descriptive>
9439             <Type name="BluetoothDeviceArraySuccessCallback"/>
9440           </Argument>
9441           <Argument optional="optional" name="errorCallback">
9442             <descriptive>
9443                 <description><p>
9444  The method to invoke in case of failure in finding any bonded devices.
9445                 </p></description>
9446             </descriptive>
9447             <Type name="ErrorCallback" nullable="nullable"/>
9448           </Argument>
9449         </ArgumentList>
9450         <Raises>
9451           <RaiseException name="WebAPIException">
9452             <descriptive>
9453                 <description><p>
9454  with error type TypeMismatchError, if the input parameter is not compatible with the expected type for that parameter
9455                 </p></description>
9456                 <description><p>
9457  with error type SecurityError, if the application does not have the privilege to call this method.
9458                 </p></description>
9459                 <description><p>
9460  with error type NotSupportedError, if this feature is not supported.
9461                 </p></description>
9462             </descriptive>
9463           </RaiseException>
9464         </Raises>
9465       </Operation>
9466       <Operation name="getDevice" id="::Bluetooth::BluetoothAdapter::getDevice">
9467         <webidl>        void getDevice(<ref>BluetoothAddress</ref> address,
9468                        <ref>BluetoothDeviceSuccessCallback</ref> successCallback, 
9469                        optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
9470         <descriptive>
9471             <brief>
9472  Gets the <em>BluetoothDevice</em> object for a given device hardware address.
9473             </brief>
9474            <description>
9475             <p>
9476 This method returns device information stored in the local Bluetooth adapter for the specified device <em>address</em> through 
9477 BluetoothDeviceSuccessCallback.
9478 A valid hardware address must be passed, such as &quot;35:F4:59:D1:7A:03&quot;.
9479             </p>
9480             <p>
9481 The ErrorCallback is launched with these error types:
9482             </p>
9483             <ul>
9484               <li>
9485  NotFoundError - If there is no device with the given address.              </li>
9486               <li>
9487  ServiceNotAvailableError - If a Bluetooth device is turned off.              </li>
9488               <li>
9489  UnknownError - If any other error occurs.              </li>
9490             </ul>
9491            </description>
9492             <version>
9493  1.0
9494             </version>
9495             <privilegelevel>
9496  public
9497             </privilegelevel>
9498             <privilege>
9499  http://tizen.org/privilege/bluetooth.gap
9500             </privilege>
9501             <Code> function gotDeviceInfo(device) {
9502     console.log(&quot;Device Name: &quot; + device.name);
9503     console.log(&quot;Device Address: &quot; + device.address);
9504     console.log(&quot;Device Class: &quot; + device.deviceClass.major);
9505     console.log(&quot;Is Bonded: &quot; + (device.isBonded ? &quot;Yes&quot; : &quot;No&quot;));
9506  }
9507
9508  function onError(e) {
9509     console.log (&quot;Could not get device info:&quot; + e.message);
9510  }
9511
9512  var adapter = tizen.bluetooth.getDefaultAdapter();
9513  adapter.getDevice(&quot;35:F4:59:D1:7A:03&quot;, gotDeviceInfo, onError);
9514  </Code>
9515         </descriptive>
9516         <Type type="void"/>
9517         <ArgumentList>
9518           <Argument name="address">
9519             <descriptive>
9520                 <description><p>
9521  The address of a remote Bluetooth device to get.
9522                 </p></description>
9523             </descriptive>
9524             <Type name="BluetoothAddress"/>
9525           </Argument>
9526           <Argument name="successCallback">
9527             <descriptive>
9528                 <description><p>
9529  The method to invoke when an asynchronous call completes successfully.
9530                 </p></description>
9531             </descriptive>
9532             <Type name="BluetoothDeviceSuccessCallback"/>
9533           </Argument>
9534           <Argument optional="optional" name="errorCallback">
9535             <descriptive>
9536                 <description><p>
9537  The method to invoke when an error occurs.
9538                 </p></description>
9539             </descriptive>
9540             <Type name="ErrorCallback" nullable="nullable"/>
9541           </Argument>
9542         </ArgumentList>
9543         <Raises>
9544           <RaiseException name="WebAPIException">
9545             <descriptive>
9546                 <description><p>
9547  with error type TypeMismatchError, if the input parameter is not compatible with the expected type for that parameter
9548                 </p></description>
9549                 <description><p>
9550  with error type SecurityError, if the application does not have the privilege to call this method.
9551                 </p></description>
9552                 <description><p>
9553  with error type NotSupportedError, if this feature is not supported.
9554                 </p></description>
9555             </descriptive>
9556           </RaiseException>
9557         </Raises>
9558       </Operation>
9559       <Operation name="createBonding" id="::Bluetooth::BluetoothAdapter::createBonding">
9560         <webidl>        void createBonding(<ref>BluetoothAddress</ref> address,
9561                            <ref>BluetoothDeviceSuccessCallback</ref> successCallback, 
9562                            optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
9563         <descriptive>
9564             <brief>
9565  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.
9566             </brief>
9567            <description>
9568             <p>
9569 If the bonding process is successful, the device information is sent in <em>successCallback</em>.
9570             </p>
9571             <p>
9572 The ErrorCallback is launched with these error types:
9573             </p>
9574             <ul>
9575               <li>
9576  NotFoundError - If there is no device with the given address.              </li>
9577               <li>
9578  ServiceNotAvailableError - If a Bluetooth device is turned off.              </li>
9579               <li>
9580  UnknownError - If any other error occurs.              </li>
9581             </ul>
9582            </description>
9583             <version>
9584  1.0
9585             </version>
9586             <privilegelevel>
9587  public
9588             </privilegelevel>
9589             <privilege>
9590  http://tizen.org/privilege/bluetooth.gap
9591             </privilege>
9592             <Code> function onBondingSuccess(device) {
9593     console.log(&quot;Device Name:&quot; + device.name);
9594     console.log(&quot;Device Address:&quot; + device.address);
9595     console.log(&quot;Device Service UUIDs:&quot; + device.uuids.join(&quot;\n&quot;));
9596  }
9597
9598  function onError(e) {
9599     console.log (&quot;Could not create bonding, reason:&quot; + e.message);
9600  }
9601
9602  var adapter = tizen.bluetooth.getDefaultAdapter();
9603  adapter.createBonding(&quot;35:F4:59:D1:7A:03&quot;, onBondingSuccess, onError);
9604  </Code>
9605         </descriptive>
9606         <Type type="void"/>
9607         <ArgumentList>
9608           <Argument name="address">
9609             <descriptive>
9610                 <description><p>
9611  The MAC address of remote Bluetooth address to bond with.
9612                 </p></description>
9613             </descriptive>
9614             <Type name="BluetoothAddress"/>
9615           </Argument>
9616           <Argument name="successCallback">
9617             <descriptive>
9618                 <description><p>
9619  The method to invoke when an asynchronous call completes successfully.
9620                 </p></description>
9621             </descriptive>
9622             <Type name="BluetoothDeviceSuccessCallback"/>
9623           </Argument>
9624           <Argument optional="optional" name="errorCallback">
9625             <descriptive>
9626                 <description><p>
9627  The method to invoke when an error occurs.
9628                 </p></description>
9629             </descriptive>
9630             <Type name="ErrorCallback" nullable="nullable"/>
9631           </Argument>
9632         </ArgumentList>
9633         <Raises>
9634           <RaiseException name="WebAPIException">
9635             <descriptive>
9636                 <description><p>
9637  with error type TypeMismatchError, if the input parameter is not compatible with the expected type for that parameter.
9638                 </p></description>
9639                 <description><p>
9640  with error type SecurityError, if the application does not have the privilege to call this method.
9641                 </p></description>
9642                 <description><p>
9643  with error type NotSupportedError, if this feature is not supported.
9644                 </p></description>
9645             </descriptive>
9646           </RaiseException>
9647         </Raises>
9648       </Operation>
9649       <Operation name="destroyBonding" id="::Bluetooth::BluetoothAdapter::destroyBonding">
9650         <webidl>        void destroyBonding(<ref>BluetoothAddress</ref> address,
9651                             optional <ref>SuccessCallback</ref>? successCallback, 
9652                             optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
9653         <descriptive>
9654             <brief>
9655  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.
9656             </brief>
9657            <description>
9658             <p>
9659 The ErrorCallback is launched with these error types:
9660             </p>
9661             <ul>
9662               <li>
9663  NotFoundError - If there is no device with the given address.              </li>
9664               <li>
9665  ServiceNotAvailableError - If a Bluetooth device is turned off.              </li>
9666               <li>
9667  UnknownError - If any other error occurs.              </li>
9668             </ul>
9669            </description>
9670             <version>
9671  1.0
9672             </version>
9673             <privilegelevel>
9674  public
9675             </privilegelevel>
9676             <privilege>
9677  http://tizen.org/privilege/bluetooth.gap
9678             </privilege>
9679             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
9680  
9681  function gotDevice(device) {
9682     if (device.isBonded) {
9683       // Initiates destroying bonding
9684       adapter.destroyBonding(device.address, function() { 
9685            console.log(&quot;Succeeded to destroy the bond success with:&quot; + device.address);
9686        },
9687        function(e) { 
9688            console.log(&quot;Failed to destroy the bond with &quot; + device.address + &quot;, reason: &quot; + e.message); 
9689        });
9690     }
9691  }
9692
9693  var deviceAddress = &quot;35:F4:59:D1:7A:03&quot;;
9694  adapter.getDevice(deviceAddress, gotDevice, function(e) { 
9695              console.log(&quot;Failed to get device info for &quot; + deviceAddress + &quot;, reason: &quot; + e.message); 
9696  } );
9697  </Code>
9698         </descriptive>
9699         <Type type="void"/>
9700         <ArgumentList>
9701           <Argument name="address">
9702             <descriptive>
9703                 <description><p>
9704  The address of a bonded device.
9705                 </p></description>
9706             </descriptive>
9707             <Type name="BluetoothAddress"/>
9708           </Argument>
9709           <Argument optional="optional" name="successCallback">
9710             <descriptive>
9711                 <description><p>
9712  The method to invoke when an asynchronous call completes successfully.
9713                 </p></description>
9714             </descriptive>
9715             <Type name="SuccessCallback" nullable="nullable"/>
9716           </Argument>
9717           <Argument optional="optional" name="errorCallback">
9718             <descriptive>
9719                 <description><p>
9720  The method to invoke when an error occurs.
9721                 </p></description>
9722             </descriptive>
9723             <Type name="ErrorCallback" nullable="nullable"/>
9724           </Argument>
9725         </ArgumentList>
9726         <Raises>
9727           <RaiseException name="WebAPIException">
9728             <descriptive>
9729                 <description><p>
9730  with error type TypeMismatchError, if the input parameter is not compatible with the expected type for that parameter
9731                 </p></description>
9732                 <description><p>
9733  with error type SecurityError, if the application does not have the privilege to call this method.
9734                 </p></description>
9735                 <description><p>
9736  with error type NotSupportedError, if this feature is not supported.
9737                 </p></description>
9738             </descriptive>
9739           </RaiseException>
9740         </Raises>
9741       </Operation>
9742       <Operation name="registerRFCOMMServiceByUUID" id="::Bluetooth::BluetoothAdapter::registerRFCOMMServiceByUUID">
9743         <webidl>        void registerRFCOMMServiceByUUID(<ref>BluetoothUUID</ref> uuid,
9744                                          DOMString name,
9745                                          <ref>BluetoothServiceSuccessCallback</ref> successCallback, 
9746                                          optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
9747         <descriptive>
9748             <brief>
9749  Registers a service record in the device service record database with the specified <em>uuid</em>, <em>name</em>.
9750             </brief>
9751            <description>
9752             <p>
9753 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. 
9754 The service handler can be used to be notified on client connections or to unregister the service.
9755 User interaction is mandatory to connect to a registered service.
9756             </p>
9757             <p>
9758 If any client(remote device) connects to this service, then <em>BluetoothServiceHandler.onconnect()</em> is invoked with <em>BluetoothSocket</em> object.
9759             </p>
9760             <p>
9761 <em>BluetoothServiceHandler.unregister()</em> can be used to unregister the service record from the device service database and stop listening for client connections.
9762             </p>
9763             <p>
9764 The ErrorCallback is launched with these error types:
9765             </p>
9766             <ul>
9767               <li>
9768  InvalidValuesError - If any of the input parameters contain an invalid value.              </li>
9769               <li>
9770  ServiceNotAvailableError - If a Bluetooth device is turned off.              </li>
9771               <li>
9772  UnknownError - If any other error occurs.              </li>
9773             </ul>
9774            </description>
9775             <version>
9776  1.0
9777             </version>
9778             <privilegelevel>
9779  public
9780             </privilegelevel>
9781             <privilege>
9782  http://tizen.org/privilege/bluetooth.spp
9783             </privilege>
9784             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
9785  // Holds currently registered service record
9786  var chatServiceHandler = null;
9787  // Holds currently open socket
9788  var serviceSocket = null;
9789
9790  function chatServiceSuccessCb(recordHandler) {
9791     console.log(&quot;Chat service registration succeeds!&quot;);
9792     chatServiceHandler = recordHandler;
9793     recordHandler.onconnect = function(socket) {
9794         console.log(&quot;Client connected: &quot; + socket.peer.name + &quot;,&quot; + socket.peer.address);
9795         serviceSocket = socket;
9796         // Messages received from remote device
9797         socket.onmessage = function() {
9798              var data = socket.readData();
9799              // Handles message code goes here
9800              
9801         };
9802         
9803         socket.onclose = function() {
9804             console.log('The socket is closed.');
9805             serviceSocket = null;
9806         };
9807     };
9808  };
9809
9810  function publishChatService()
9811  {
9812     var CHAT_SERVICE_UUID = &quot;5BCE9431-6C75-32AB-AFE0-2EC108A30860&quot;;
9813     adapter.registerRFCOMMServiceByUUID(CHAT_SERVICE_UUID, &quot;Chat service&quot;, chatServiceSuccessCb,
9814       // Error handler
9815       function(e) {
9816            console.log( &quot;Could not register service record, Error: &quot; + e.message);
9817       });
9818  }
9819  
9820  function unregisterChatService()
9821  {
9822       if (chatServiceHandler != null) {
9823           chatServiceHandler.unregister(function() {
9824                console.log(&quot;Chat service is unregistered&quot;);
9825                chatServiceHandler = null;
9826            }, function(e) {
9827                console.log(&quot;Failed to unregister service: &quot; + e.message);
9828            });
9829       }
9830  }
9831  </Code>
9832         </descriptive>
9833         <Type type="void"/>
9834         <ArgumentList>
9835           <Argument name="uuid">
9836             <descriptive>
9837                 <description><p>
9838  The UUID of the service, to which clients connects.
9839                 </p></description>
9840             </descriptive>
9841             <Type name="BluetoothUUID"/>
9842           </Argument>
9843           <Argument name="name">
9844             <descriptive>
9845                 <description><p>
9846  The Name of a service.
9847                 </p></description>
9848             </descriptive>
9849             <Type type="DOMString"/>
9850           </Argument>
9851           <Argument name="successCallback">
9852             <descriptive>
9853                 <description><p>
9854  The method to invoke on successful service registration.
9855                 </p></description>
9856             </descriptive>
9857             <Type name="BluetoothServiceSuccessCallback"/>
9858           </Argument>
9859           <Argument optional="optional" name="errorCallback">
9860             <descriptive>
9861                 <description><p>
9862  The method to invoke when an error occurs.
9863                 </p></description>
9864             </descriptive>
9865             <Type name="ErrorCallback" nullable="nullable"/>
9866           </Argument>
9867         </ArgumentList>
9868         <Raises>
9869           <RaiseException name="WebAPIException">
9870             <descriptive>
9871                 <description><p>
9872  with error type TypeMismatchError, if the input parameter is not compatible with the expected type for that parameter.
9873                 </p></description>
9874                 <description><p>
9875  with error type SecurityError, if the application does not have the privilege to call this method.
9876                 </p></description>
9877                 <description><p>
9878  with error type NotSupportedError, if this feature is not supported.
9879                 </p></description>
9880             </descriptive>
9881           </RaiseException>
9882         </Raises>
9883       </Operation>
9884       <Operation name="getBluetoothProfileHandler" id="::Bluetooth::BluetoothAdapter::getBluetoothProfileHandler">
9885         <webidl>        <ref>BluetoothProfileHandler</ref> getBluetoothProfileHandler(<ref>BluetoothProfileType</ref> profileType) raises(<ref>WebAPIException</ref>);</webidl>
9886         <descriptive>
9887             <brief>
9888  Gets the profile handler for the given type.
9889             </brief>
9890             <version>
9891  2.2
9892             </version>
9893             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
9894  var healthProfileHandler = adapter.getBluetoothProfileHandler(&quot;HEALTH&quot;);
9895  </Code>
9896         </descriptive>
9897         <Type name="BluetoothProfileHandler"/>
9898         <ArgumentList>
9899           <Argument name="profileType">
9900             <descriptive>
9901                 <description><p>
9902  The type of Bluetooth Profile.
9903                 </p></description>
9904             </descriptive>
9905             <Type name="BluetoothProfileType"/>
9906           </Argument>
9907         </ArgumentList>
9908         <Raises>
9909           <RaiseException name="WebAPIException">
9910             <descriptive>
9911                 <description><p>
9912  with error type TypeMismatchError, if the input parameter is not compatible with the expected type for that parameter.
9913                 </p></description>
9914                 <description><p>
9915  with error type NotSupportedError, if this feature is not supported.
9916                 </p></description>
9917                 <description><p>
9918  with error type UnknownError, if any other error occurs.
9919                 </p></description>
9920             </descriptive>
9921           </RaiseException>
9922         </Raises>
9923       </Operation>
9924     </Interface>
9925     <Interface name="BluetoothDevice" id="::Bluetooth::BluetoothDevice">
9926       <webidl>    [NoInterfaceObject] interface BluetoothDevice {
9927         readonly attribute DOMString name;
9928         readonly attribute <ref>BluetoothAddress</ref> address;
9929         readonly attribute <ref>BluetoothClass</ref> deviceClass;
9930         readonly attribute boolean isBonded;
9931         readonly attribute boolean isTrusted;
9932         readonly attribute boolean isConnected;
9933         readonly attribute <ref>BluetoothUUID</ref>[] uuids;
9934
9935         void connectToServiceByUUID(<ref>BluetoothUUID</ref> uuid,
9936                                     <ref>BluetoothSocketSuccessCallback</ref> successCallback, 
9937                                     optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
9938     };</webidl>
9939       <descriptive>
9940           <brief>
9941  This interface represents a remote Bluetooth device.
9942           </brief>
9943          <description>
9944           <p>
9945 A <em>BluetoothDevice</em> object can be retrieved using one of the following APIs:
9946           </p>
9947           <ul>
9948             <li>
9949  BluetoothAdapter.getDevice()            </li>
9950             <li>
9951  BluetoothAdapter.getKnownDevices()             </li>
9952             <li>
9953  BluetoothAdapter.discoverDevices()             </li>
9954             <li>
9955  BluetoothAdapter.createBonding()             </li>
9956           </ul>
9957          </description>
9958           <version>
9959  1.0
9960           </version>
9961       </descriptive>
9962       <ExtendedAttributeList>
9963         <ExtendedAttribute name="NoInterfaceObject">
9964           <webidl>NoInterfaceObject</webidl>
9965         </ExtendedAttribute>
9966       </ExtendedAttributeList>
9967       <Attribute readonly="readonly" name="name" id="::Bluetooth::BluetoothDevice::name">
9968         <webidl>        readonly attribute DOMString name;</webidl>
9969         <descriptive>
9970             <brief>
9971  An attribute to store the readable name of this remote device.
9972             </brief>
9973             <version>
9974  1.0
9975             </version>
9976             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
9977  adapter.getDevice(&quot;11:22:33:44:55:66&quot;, function(device) {
9978     console.log(&quot;Device Name: &quot; + device.name);
9979  });
9980  </Code>
9981         </descriptive>
9982         <Type type="DOMString"/>
9983       </Attribute>
9984       <Attribute readonly="readonly" name="address" id="::Bluetooth::BluetoothDevice::address">
9985         <webidl>        readonly attribute <ref>BluetoothAddress</ref> address;</webidl>
9986         <descriptive>
9987             <brief>
9988  An attribute to store the hardware address of this remote device.
9989             </brief>
9990             <version>
9991  1.0
9992             </version>
9993             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
9994  adapter.getDevice(&quot;11:22:33:44:55:66&quot;, function(device) {
9995     console.log(&quot;Device Address: &quot; + device.address);
9996  });
9997  </Code>
9998         </descriptive>
9999         <Type name="BluetoothAddress"/>
10000       </Attribute>
10001       <Attribute readonly="readonly" name="deviceClass" id="::Bluetooth::BluetoothDevice::deviceClass">
10002         <webidl>        readonly attribute <ref>BluetoothClass</ref> deviceClass;</webidl>
10003         <descriptive>
10004             <brief>
10005  An attribute to indicate a device class, which represents the type of the device and the services it provides.
10006             </brief>
10007             <version>
10008  1.0
10009             </version>
10010             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
10011  adapter.getDevice(&quot;11:22:33:44:55:66&quot;, function(device) {
10012     console.log(&quot;Device Major Class: &quot; + device.deviceClass.major);
10013  });
10014  </Code>
10015         </descriptive>
10016         <Type name="BluetoothClass"/>
10017       </Attribute>
10018       <Attribute readonly="readonly" name="isBonded" id="::Bluetooth::BluetoothDevice::isBonded">
10019         <webidl>        readonly attribute boolean isBonded;</webidl>
10020         <descriptive>
10021             <brief>
10022  An attribute to check the bond state of this remote device with the local device.
10023             </brief>
10024             <version>
10025  1.0
10026             </version>
10027             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
10028  adapter.getDevice(&quot;11:22:33:44:55:66&quot;, function(device) {
10029     console.log(&quot;Is bonded: &quot; + (device.isBonded ? &quot;Yes&quot; : &quot;No&quot;));
10030  });
10031  </Code>
10032         </descriptive>
10033         <Type type="boolean"/>
10034       </Attribute>
10035       <Attribute readonly="readonly" name="isTrusted" id="::Bluetooth::BluetoothDevice::isTrusted">
10036         <webidl>        readonly attribute boolean isTrusted;</webidl>
10037         <descriptive>
10038             <brief>
10039  An attribute to check whether the local device recognizes this remote device as a trusted device or not.
10040             </brief>
10041             <version>
10042  1.0
10043             </version>
10044             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
10045  adapter.getDevice(&quot;11:22:33:44:55:66&quot;, function(device) {
10046     console.log(&quot;Is trusted: &quot; + (device.isTrusted ? &quot;Yes&quot; : &quot;No&quot;));
10047  });
10048  </Code>
10049         </descriptive>
10050         <Type type="boolean"/>
10051       </Attribute>
10052       <Attribute readonly="readonly" name="isConnected" id="::Bluetooth::BluetoothDevice::isConnected">
10053         <webidl>        readonly attribute boolean isConnected;</webidl>
10054         <descriptive>
10055             <brief>
10056  An attribute to check the connection state of this remote device with the local device.
10057             </brief>
10058             <version>
10059  1.0
10060             </version>
10061             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
10062  adapter.getDevice(&quot;11:22:33:44:55:66&quot;, function(device) {
10063     console.log(&quot;Is connected: &quot; + (device.isConnected ? &quot;Yes&quot; : &quot;No&quot;));
10064  });
10065  </Code>
10066         </descriptive>
10067         <Type type="boolean"/>
10068       </Attribute>
10069       <Attribute readonly="readonly" name="uuids" id="::Bluetooth::BluetoothDevice::uuids">
10070         <webidl>        readonly attribute <ref>BluetoothUUID</ref>[] uuids;</webidl>
10071         <descriptive>
10072             <brief>
10073  An attribute to store the list of 128 bit service UUIDs available on this remote device.
10074             </brief>
10075             <version>
10076  1.0
10077             </version>
10078             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
10079  var CHAT_SERVICE_UUID = &quot;5BCE9431-6C75-32AB-AFE0-2EC108A30860&quot;;
10080  adapter.getDevice(&quot;11:22:33:44:55:66&quot;, function(device) {
10081     var uuids = device.uuids;
10082     var services = &quot;&quot;;
10083     for (var i = 0; i &#60; uuids.length; i++) {
10084         services += uuids[i] + &quot;\n&quot;;
10085     }
10086     console.log (&quot;Services found: &quot; + services);
10087     if (uuids.indexOf(CHAT_SERVICE_UUID) != -1) {
10088         // Connects to service
10089         device.connectToServiceByUUID(CHAT_SERVICE_UUID, function(socket) {
10090             //
10091             // Connected to service, handle socket
10092             //
10093         }, function (e) {
10094             console.log(&quot;Could not connect to chat service !!!. Error: &quot; + e.message);
10095         });
10096     }
10097  });
10098  </Code>
10099         </descriptive>
10100         <Type type="array">
10101           <Type name="BluetoothUUID"/>
10102         </Type>
10103       </Attribute>
10104       <Operation name="connectToServiceByUUID" id="::Bluetooth::BluetoothDevice::connectToServiceByUUID">
10105         <webidl>        void connectToServiceByUUID(<ref>BluetoothUUID</ref> uuid,
10106                                     <ref>BluetoothSocketSuccessCallback</ref> successCallback, 
10107                                     optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
10108         <descriptive>
10109             <brief>
10110  Connects to a specified service identified by <em>uuid</em> on this remote device.
10111             </brief>
10112            <description>
10113             <p>
10114 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.
10115             </p>
10116             <p>
10117 The ErrorCallback is launched with these error types:
10118             </p>
10119             <ul>
10120               <li>
10121  NotFoundError - If there is no service with the specified <em>uuid</em>.              </li>
10122               <li>
10123  InvalidValuesError - If any of the input parameters contain an invalid value.              </li>
10124               <li>
10125  UnknownError - If any other error occurs.              </li>
10126             </ul>
10127            </description>
10128             <version>
10129  1.0
10130             </version>
10131             <privilegelevel>
10132  public
10133             </privilegelevel>
10134             <privilege>
10135  http://tizen.org/privilege/bluetooth.spp
10136             </privilege>
10137             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
10138  var clientSocket = null;
10139
10140  // Calls a method that is invoked when user wants to send a message to a remote device
10141  function sendMessage(msg) {
10142     // Validates socket state, if everything is ok.
10143     if (clientSocket != null &amp;&amp; clientSocket.state == &quot;OPEN&quot;) {
10144         // Sends the message
10145         clientSocket.writeData(msg);
10146     }
10147  }
10148
10149  // Calls a method that is invoked when a socket is open
10150  function onSocketConnected(socket) {
10151     clientSocket = socket;
10152     console.log(&quot;Opening a socket successfully!!!&quot;);
10153     socket.onmessage = function () {
10154         var data = socket.readData();
10155         var recvmsg = &quot;&quot;;
10156         for (var i = 0; i &#60; data.length; i++)
10157         {
10158            recvmsg += String.fromCharCode(data[i]);
10159         }
10160         console.log(&quot;server msg >> &quot; + recvmsg);
10161     };
10162
10163     socket.onclose = function() {
10164         console.log(&quot;socket disconnected.&quot;);
10165     };
10166  }
10167
10168  function onDeviceReady(device) {
10169     // Validates device and service uuid
10170     if (device.uuids.indexOf(&quot;5BCE9431-6C75-32AB-AFE0-2EC108A30860&quot;) != -1) {
10171        // Opens socket
10172        device.connectToServiceByUUID(&quot;5BCE9431-6C75-32AB-AFE0-2EC108A30860&quot;, onSocketConnected, function(e) {
10173            console.log (&quot;Error connecting to service. Reason: &quot; + e.message);
10174         });
10175     }
10176     else {
10177         console.log (&quot;Chat service is not supported by this device&quot;);
10178     }
10179  }
10180
10181  function onSetPowered() {
10182     // Gets the BluetoothDevice object
10183     adapter.getDevice(&quot;35:F4:59:D1:7A:03&quot;, onDeviceReady, function(e) { console.log(&quot;Error: &quot; + e.message); });
10184  }
10185
10186  adapter.setPowered(true, onSetPowered, function(e) {console.log (&quot;Could not turn on Bluetooth adapter. reason: &quot; + e.message); });
10187  </Code>
10188         </descriptive>
10189         <Type type="void"/>
10190         <ArgumentList>
10191           <Argument name="uuid">
10192             <descriptive>
10193                 <description><p>
10194  The 128 bit unique identifier, which represents the service record on the device.
10195                 </p></description>
10196             </descriptive>
10197             <Type name="BluetoothUUID"/>
10198           </Argument>
10199           <Argument name="successCallback">
10200             <descriptive>
10201                 <description><p>
10202  The method to invoke when an asynchronous call completes successfully.
10203                 </p></description>
10204             </descriptive>
10205             <Type name="BluetoothSocketSuccessCallback"/>
10206           </Argument>
10207           <Argument optional="optional" name="errorCallback">
10208             <descriptive>
10209                 <description><p>
10210  The method to invoke when opening of a socket fails.
10211                 </p></description>
10212             </descriptive>
10213             <Type name="ErrorCallback" nullable="nullable"/>
10214           </Argument>
10215         </ArgumentList>
10216         <Raises>
10217           <RaiseException name="WebAPIException">
10218             <descriptive>
10219                 <description><p>
10220  with error type TypeMismatchError, if the input parameter is not compatible with the expected type for that parameter
10221                 </p></description>
10222                 <description><p>
10223  with error type SecurityError, if the application does not have the privilege to call this method.
10224                 </p></description>
10225                 <description><p>
10226  with error type NotSupportedError, if this feature is not supported.
10227                 </p></description>
10228             </descriptive>
10229           </RaiseException>
10230         </Raises>
10231       </Operation>
10232     </Interface>
10233     <Interface name="BluetoothSocket" id="::Bluetooth::BluetoothSocket">
10234       <webidl>    [NoInterfaceObject] interface BluetoothSocket {
10235         readonly attribute <ref>BluetoothUUID</ref> uuid;
10236         readonly attribute <ref>BluetoothSocketState</ref> state;
10237         readonly attribute <ref>BluetoothDevice</ref> peer;
10238         [TreatNonCallableAsNull] attribute <ref>SuccessCallback</ref>? onmessage raises(<ref>WebAPIException</ref>);
10239         [TreatNonCallableAsNull] attribute <ref>SuccessCallback</ref>? onclose raises(<ref>WebAPIException</ref>);
10240         unsigned long writeData(byte[] data) raises(<ref>WebAPIException</ref>);
10241
10242
10243         byte[] readData() raises(<ref>WebAPIException</ref>);
10244
10245
10246         void close() raises(<ref>WebAPIException</ref>);
10247     };</webidl>
10248       <descriptive>
10249           <brief>
10250  This interface represents the Bluetooth socket.
10251           </brief>
10252          <description>
10253           <p>
10254 The socket object is created by <em>BluetoothDevice.connectToServiceByUUID()</em> or <em>BluetoothAdapter.registerRFCOMMServiceByUUID()</em>.
10255           </p>
10256          </description>
10257           <version>
10258  1.0
10259           </version>
10260       </descriptive>
10261       <ExtendedAttributeList>
10262         <ExtendedAttribute name="NoInterfaceObject">
10263           <webidl>NoInterfaceObject</webidl>
10264         </ExtendedAttribute>
10265       </ExtendedAttributeList>
10266       <Attribute readonly="readonly" name="uuid" id="::Bluetooth::BluetoothSocket::uuid">
10267         <webidl>        readonly attribute <ref>BluetoothUUID</ref> uuid;</webidl>
10268         <descriptive>
10269             <brief>
10270  An attribute to store the service UUID to which this socket is connected.
10271             </brief>
10272             <version>
10273  1.0
10274             </version>
10275         </descriptive>
10276         <Type name="BluetoothUUID"/>
10277       </Attribute>
10278       <Attribute readonly="readonly" name="state" id="::Bluetooth::BluetoothSocket::state">
10279         <webidl>        readonly attribute <ref>BluetoothSocketState</ref> state;</webidl>
10280         <descriptive>
10281             <brief>
10282  An attribute to indicate the socket state.
10283             </brief>
10284             <version>
10285  1.0
10286             </version>
10287         </descriptive>
10288         <Type name="BluetoothSocketState"/>
10289       </Attribute>
10290       <Attribute readonly="readonly" name="peer" id="::Bluetooth::BluetoothSocket::peer">
10291         <webidl>        readonly attribute <ref>BluetoothDevice</ref> peer;</webidl>
10292         <descriptive>
10293             <brief>
10294  The peer device to which this socket is connected.
10295             </brief>
10296             <version>
10297  1.0
10298             </version>
10299         </descriptive>
10300         <Type name="BluetoothDevice"/>
10301       </Attribute>
10302       <Attribute name="onmessage" id="::Bluetooth::BluetoothSocket::onmessage">
10303         <webidl>        [TreatNonCallableAsNull] attribute <ref>SuccessCallback</ref>? onmessage raises(<ref>WebAPIException</ref>);</webidl>
10304         <descriptive>
10305             <brief>
10306  The success callback to be invoked when an incoming message is received from the peer.
10307 By default, this attribute is set to null.
10308             </brief>
10309             <version>
10310  1.0
10311             </version>
10312         </descriptive>
10313         <ExtendedAttributeList>
10314           <ExtendedAttribute name="TreatNonCallableAsNull">
10315             <webidl>TreatNonCallableAsNull</webidl>
10316           </ExtendedAttribute>
10317         </ExtendedAttributeList>
10318         <Type name="SuccessCallback" nullable="nullable"/>
10319         <Raises>
10320           <RaiseException name="WebAPIException">
10321             <descriptive>
10322                 <description><p>
10323  with error type TypeMismatchError, if any input attribute is not compatible with the expected type for this attribute.
10324                 </p></description>
10325             </descriptive>
10326           </RaiseException>
10327         </Raises>
10328       </Attribute>
10329       <Attribute name="onclose" id="::Bluetooth::BluetoothSocket::onclose">
10330         <webidl>        [TreatNonCallableAsNull] attribute <ref>SuccessCallback</ref>? onclose raises(<ref>WebAPIException</ref>);</webidl>
10331         <descriptive>
10332             <brief>
10333  The success callback to be invoked when the socket is closed.
10334 By default, this attribute is set to null.
10335             </brief>
10336             <version>
10337  1.0
10338             </version>
10339         </descriptive>
10340         <ExtendedAttributeList>
10341           <ExtendedAttribute name="TreatNonCallableAsNull">
10342             <webidl>TreatNonCallableAsNull</webidl>
10343           </ExtendedAttribute>
10344         </ExtendedAttributeList>
10345         <Type name="SuccessCallback" nullable="nullable"/>
10346         <Raises>
10347           <RaiseException name="WebAPIException">
10348             <descriptive>
10349                 <description><p>
10350  with error type TypeMismatchError, if any input attribute is not compatible with the expected type for this attribute.
10351                 </p></description>
10352             </descriptive>
10353           </RaiseException>
10354         </Raises>
10355       </Attribute>
10356       <Operation name="writeData" id="::Bluetooth::BluetoothSocket::writeData">
10357         <webidl>        unsigned long writeData(byte[] data) raises(<ref>WebAPIException</ref>);</webidl>
10358         <descriptive>
10359             <brief>
10360  Writes data as a sequence of bytes onto the socket and returns the number of bytes actually written.
10361             </brief>
10362             <version>
10363  1.0
10364             </version>
10365             <privilegelevel>
10366  public
10367             </privilegelevel>
10368             <privilege>
10369  http://tizen.org/privilege/bluetooth.spp
10370             </privilege>
10371             <Code> 
10372  var adapter = tizen.bluetooth.getDefaultAdapter();
10373  
10374  function onSocketConnected(socket) {
10375     console.log (&quot;Opened connection to remote device&quot;);
10376     socket.onmessage = function () {
10377       console.log (&quot;Message received: &quot; + socket.readData());
10378     };
10379
10380     socket.onclose = function() {
10381        console.log(&quot;Socket closed with &quot; + socket.peer.name);
10382     };
10383
10384     // Sends data to peer.
10385     var textmsg = &quot;Test&quot;;
10386     var sendtextmsg = new Array();
10387     for (var i = 0; i &#60; textmsg.length; i++)
10388     {
10389         sendtextmsg[i] = textmsg.charCodeAt(i);
10390     }
10391     socket.writeData (sendtextmsg);
10392  }
10393
10394  function onSocketError(e) {
10395     console.log (&quot;Error connecting to service. Reason: &quot; + e.message);
10396  }
10397
10398  function onDeviceReady(device) {
10399     // Validates device and service uuid
10400     if (device.uuids.indexOf(&quot;5BCE9431-6C75-32AB-AFE0-2EC108A30860&quot;) != -1) {
10401        // Opens socket
10402        device.connectToServiceByUUID(&quot;5BCE9431-6C75-32AB-AFE0-2EC108A30860&quot;, onSocketConnected, onSocketError );
10403     }
10404  }
10405  function onSetPowered() {
10406     // Gets the BluetoothDevice object
10407     adapter.getDevice(&quot;35:F4:59:D1:7A:03&quot;, onDeviceReady, function(e) { console.log(&quot;Error: &quot; + e.message); });
10408  }
10409
10410  adapter.setPowered(true, onSetPowered, function(e) {console.log (&quot;Could not turn on Bluetooth adapter. reason: &quot; + e.message); });
10411  </Code>
10412         </descriptive>
10413         <Type type="unsigned long">
10414           <descriptive>
10415               <description><p>
10416  unsigned long The number of bytes actually sent.
10417               </p></description>
10418           </descriptive>
10419         </Type>
10420         <ArgumentList>
10421           <Argument name="data">
10422             <descriptive>
10423                 <description><p>
10424  The data to send.
10425                 </p></description>
10426             </descriptive>
10427             <Type type="array">
10428               <Type type="byte"/>
10429             </Type>
10430           </Argument>
10431         </ArgumentList>
10432         <Raises>
10433           <RaiseException name="WebAPIException">
10434             <descriptive>
10435                 <description><p>
10436  with error type TypeMismatchError, if any input parameters not compatible with the expected type for that parameter.
10437                 </p></description>
10438                 <description><p>
10439  with error type SecurityError, if the application does not have the privilege to call this method.
10440                 </p></description>
10441                 <description><p>
10442  with error type NotSupportedError, if this feature is not supported.
10443                 </p></description>
10444                 <description><p>
10445  with error type UnknownError, if any other error occurs. 
10446                 </p></description>
10447             </descriptive>
10448           </RaiseException>
10449         </Raises>
10450       </Operation>
10451       <Operation name="readData" id="::Bluetooth::BluetoothSocket::readData">
10452         <webidl>        byte[] readData() raises(<ref>WebAPIException</ref>);</webidl>
10453         <descriptive>
10454             <brief>
10455  Reads data from the socket.
10456             </brief>
10457            <description>
10458             <p>
10459 This method should be called only in the <em>BluetoothSocket.onmessage</em> handler, that is, when data is ready on the socket.
10460             </p>
10461            </description>
10462             <version>
10463  1.0
10464             </version>
10465             <privilegelevel>
10466  public
10467             </privilegelevel>
10468             <privilege>
10469  http://tizen.org/privilege/bluetooth.spp
10470             </privilege>
10471             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
10472
10473  function onError(e) {
10474     console.log (&quot;Error connecting to service. Reason: &quot; + e.message);
10475  }
10476
10477  function onSocketConnected(socket) {
10478     console.log (&quot;Opening socket success!!!&quot;);
10479
10480     socket.onmessage = function() {
10481       //  Has got a message from peer, reads it
10482       var data = socket.readData();
10483
10484       //
10485       // Code to evaluate message goes here
10486       //
10487     };
10488
10489     socket.onclose = function() {
10490        console.log(&quot;Socket closed with &quot; + socket.peer.name);
10491     };
10492  }
10493
10494  function onDeviceReady(device) {
10495     // Validates device and service uuid
10496     if (device.uuids.indexOf(&quot;5BCE9431-6C75-32AB-AFE0-2EC108A30860&quot;) != -1) {
10497        // Opens socket
10498        device.connectToServiceByUUID(&quot;5BCE9431-6C75-32AB-AFE0-2EC108A30860&quot;, onSocketConnected, onError);
10499     }
10500  }
10501  function onSetPowered() {
10502     // Gets the BluetoothDevice object
10503     adapter.getDevice(&quot;35:F4:59:D1:7A:03&quot;, onDeviceReady, function(e) { console.log(&quot;Error: &quot; + e.message); });
10504  }
10505
10506  adapter.setPowered(true, onSetPowered, function(e) {console.log (&quot;Could not turn on Bluetooth adapter. reason: &quot; + e.message); });
10507  </Code>
10508         </descriptive>
10509         <Type type="array">
10510           <descriptive>
10511               <description><p>
10512  byte[] The sequence of bytes successfully read.
10513               </p></description>
10514           </descriptive>
10515           <Type type="byte"/>
10516         </Type>
10517         <ArgumentList/>
10518         <Raises>
10519           <RaiseException name="WebAPIException">
10520             <descriptive>
10521                 <description><p>
10522  with error type SecurityError, if the application does not have the privilege to call this method.
10523                 </p></description>
10524                 <description><p>
10525  with error type NotSupportedError, if this feature is not supported.
10526                 </p></description>
10527                 <description><p>
10528  with error type UnknownError, if any other error occurs. 
10529                 </p></description>
10530             </descriptive>
10531           </RaiseException>
10532         </Raises>
10533       </Operation>
10534       <Operation name="close" id="::Bluetooth::BluetoothSocket::close">
10535         <webidl>        void close() raises(<ref>WebAPIException</ref>);</webidl>
10536         <descriptive>
10537             <brief>
10538  Closes the socket.
10539             </brief>
10540            <description>
10541             <p>
10542 <b>BluetoothSocket.state</b> changes to <var>CLOSED</var>, and <em>BluetoothSocket.onclose()</em> is invoked on success.
10543             </p>
10544            </description>
10545             <version>
10546  1.0
10547             </version>
10548             <privilegelevel>
10549  public
10550             </privilegelevel>
10551             <privilege>
10552  http://tizen.org/privilege/bluetooth.spp
10553             </privilege>
10554         </descriptive>
10555         <Type type="void"/>
10556         <ArgumentList/>
10557         <Raises>
10558           <RaiseException name="WebAPIException">
10559             <descriptive>
10560                 <description><p>
10561  with error type NotSupportedError, if this feature is not supported.
10562                 </p></description>
10563                 <description><p>
10564  with error type SecurityError, if the application does not have the privilege to call this method.
10565                 </p></description>
10566                 <description><p>
10567  with error type UnknownError, if any other error occurs. 
10568                 </p></description>
10569             </descriptive>
10570           </RaiseException>
10571         </Raises>
10572       </Operation>
10573     </Interface>
10574     <Interface name="BluetoothClass" id="::Bluetooth::BluetoothClass">
10575       <webidl>    [NoInterfaceObject] interface BluetoothClass {
10576         readonly attribute octet major;
10577         
10578         readonly attribute octet minor;
10579         
10580         readonly attribute unsigned short [] services ;
10581         
10582         boolean hasService(unsigned short service) raises(<ref>WebAPIException</ref>);
10583     };</webidl>
10584       <descriptive>
10585           <brief>
10586  This interface represents Bluetooth Class of Device/Service(CoD).
10587           </brief>
10588          <description>
10589           <p>
10590 Bluetooth device class describes the characteristics and capabilities of a device.
10591           </p>
10592           <p>
10593 Bluetooth CoD is a 24 bit integer created by the union of three components:
10594           </p>
10595           <ul>
10596             <li>
10597 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>
10598             <li>
10599 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>
10600             <li>
10601 Zero or more <b>Major Service Classes</b>(bits 13-23) - Represents the services supported by the device.            </li>
10602           </ul>
10603           <p>
10604 The Major and Minor classes are intended to define a general family of devices with which any particular implementation wishes to be associated. 
10605 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.
10606           </p>
10607          </description>
10608           <version>
10609  1.0
10610           </version>
10611       </descriptive>
10612       <ExtendedAttributeList>
10613         <ExtendedAttribute name="NoInterfaceObject">
10614           <webidl>NoInterfaceObject</webidl>
10615         </ExtendedAttribute>
10616       </ExtendedAttributeList>
10617       <Attribute readonly="readonly" name="major" id="::Bluetooth::BluetoothClass::major">
10618         <webidl>        readonly attribute octet major;</webidl>
10619         <descriptive>
10620             <brief>
10621  The major device class and it refers to the <em>BluetoothClassDeviceMajor</em> interface for the list of possible
10622 values.
10623             </brief>
10624             <version>
10625  1.0
10626             </version>
10627             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
10628  
10629  function evaluateDevice(address) {
10630     adapter.getDevice(address, function(device) {
10631         if (device.deviceClass.major == tizen.bluetooth.deviceMajor.COMPUTER) {
10632             // Shows computer icon for this device
10633             console.log(&quot;Device is computer&quot;);
10634         } else if (device.deviceClass.major == tizen.bluetooth.deviceMajor.PHONE) {
10635             // Shows phone icon
10636             console.log(&quot;Device is a Phone&quot;);
10637         }
10638     }, function(e) {
10639         console.log(&quot;Couldn't get any device with the given address: &quot; + e.message);
10640     });
10641  }
10642
10643  evaluateDevice(&quot;11:22:33:44:55:66&quot;);
10644
10645  </Code>
10646         </descriptive>
10647         <Type type="octet"/>
10648       </Attribute>
10649       <Attribute readonly="readonly" name="minor" id="::Bluetooth::BluetoothClass::minor">
10650         <webidl>        readonly attribute octet minor;</webidl>
10651         <descriptive>
10652             <brief>
10653  The minor device class and it refer to the <em>BluetoothClassDeviceMinor</em> interface for the list of possible values.
10654             </brief>
10655             <version>
10656  1.0
10657             </version>
10658         </descriptive>
10659         <Type type="octet"/>
10660       </Attribute>
10661       <Attribute readonly="readonly" name="services" id="::Bluetooth::BluetoothClass::services">
10662         <webidl>        readonly attribute unsigned short [] services ;</webidl>
10663         <descriptive>
10664             <brief>
10665  The services provided by this device and it refers to the <em>BluetoothClassDeviceService</em> interface for the list of possible
10666 values.
10667             </brief>
10668             <version>
10669  1.0
10670             </version>
10671         </descriptive>
10672         <Type type="array">
10673           <Type type="unsigned short"/>
10674         </Type>
10675       </Attribute>
10676       <Operation name="hasService" id="::Bluetooth::BluetoothClass::hasService">
10677         <webidl>        boolean hasService(unsigned short service) raises(<ref>WebAPIException</ref>);</webidl>
10678         <descriptive>
10679             <brief>
10680  Checks whether the given service exists in the <em>services</em>.
10681             </brief>
10682             <version>
10683  1.0
10684             </version>
10685             <privilegelevel>
10686  public
10687             </privilegelevel>
10688             <privilege>
10689  http://tizen.org/privilege/bluetooth.gap
10690             </privilege>
10691             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
10692  adapter.getDevice(&quot;12:34:56:78:9A:BC&quot;, function(device) {
10693     if (device.deviceClass.hasService(tizen.bluetooth.deviceService.POSITIONING)) {
10694          console.log(&quot;Device supports Positioning service&quot;);
10695     }
10696  }, function(e) {
10697     console.log(&quot;Couldn't get device for given address: &quot; + e.message);
10698  });
10699  </Code>
10700         </descriptive>
10701         <Type type="boolean"/>
10702         <ArgumentList>
10703           <Argument name="service">
10704             <descriptive>
10705                 <description><p>
10706  The service to check.
10707                 </p></description>
10708             </descriptive>
10709             <Type type="unsigned short"/>
10710           </Argument>
10711         </ArgumentList>
10712         <Raises>
10713           <RaiseException name="WebAPIException">
10714             <descriptive>
10715                 <description><p>
10716  with error type InvalidValuesError, if any of the input parameters contain an invalid value.
10717                 </p></description>
10718                 <description><p>
10719  with error type NotSupportedError, if this feature is not supported.
10720                 </p></description>
10721                 <description><p>
10722  with error type SecurityError, if the application does not have the privilege to call this method.
10723                 </p></description>
10724                 <description><p>
10725  with error type UnknownError, if any other error occurs. 
10726                 </p></description>
10727             </descriptive>
10728           </RaiseException>
10729         </Raises>
10730       </Operation>
10731     </Interface>
10732     <Interface name="BluetoothClassDeviceMajor" id="::Bluetooth::BluetoothClassDeviceMajor">
10733       <webidl>    [NoInterfaceObject] interface BluetoothClassDeviceMajor {
10734
10735         const octet MISC = 0x00;
10736         const octet COMPUTER = 0x01;
10737         const octet PHONE = 0x02;
10738         const octet NETWORK = 0x03;
10739         const octet AUDIO_VIDEO = 0x04;
10740         const octet PERIPHERAL = 0x05;
10741         const octet IMAGING = 0x06;
10742         const octet WEARABLE = 0x07;
10743         const octet TOY = 0x08;
10744         const octet HEALTH = 0x09;
10745         const octet UNCATEGORIZED = 0x1F;
10746     };</webidl>
10747       <descriptive>
10748           <brief>
10749  This interface holds the identifiers for major device classes of Bluetooth CoD.
10750           </brief>
10751           <version>
10752  1.0
10753           </version>
10754       </descriptive>
10755       <ExtendedAttributeList>
10756         <ExtendedAttribute name="NoInterfaceObject">
10757           <webidl>NoInterfaceObject</webidl>
10758         </ExtendedAttribute>
10759       </ExtendedAttributeList>
10760       <Const name="MISC" value="0x00" id="::Bluetooth::BluetoothClassDeviceMajor::MISC">
10761         <webidl>        const octet MISC = 0x00;</webidl>
10762         <Type type="octet"/>
10763       </Const>
10764       <Const name="COMPUTER" value="0x01" id="::Bluetooth::BluetoothClassDeviceMajor::COMPUTER">
10765         <webidl>        const octet COMPUTER = 0x01;</webidl>
10766         <Type type="octet"/>
10767       </Const>
10768       <Const name="PHONE" value="0x02" id="::Bluetooth::BluetoothClassDeviceMajor::PHONE">
10769         <webidl>        const octet PHONE = 0x02;</webidl>
10770         <Type type="octet"/>
10771       </Const>
10772       <Const name="NETWORK" value="0x03" id="::Bluetooth::BluetoothClassDeviceMajor::NETWORK">
10773         <webidl>        const octet NETWORK = 0x03;</webidl>
10774         <Type type="octet"/>
10775       </Const>
10776       <Const name="AUDIO_VIDEO" value="0x04" id="::Bluetooth::BluetoothClassDeviceMajor::AUDIO_VIDEO">
10777         <webidl>        const octet AUDIO_VIDEO = 0x04;</webidl>
10778         <Type type="octet"/>
10779       </Const>
10780       <Const name="PERIPHERAL" value="0x05" id="::Bluetooth::BluetoothClassDeviceMajor::PERIPHERAL">
10781         <webidl>        const octet PERIPHERAL = 0x05;</webidl>
10782         <Type type="octet"/>
10783       </Const>
10784       <Const name="IMAGING" value="0x06" id="::Bluetooth::BluetoothClassDeviceMajor::IMAGING">
10785         <webidl>        const octet IMAGING = 0x06;</webidl>
10786         <Type type="octet"/>
10787       </Const>
10788       <Const name="WEARABLE" value="0x07" id="::Bluetooth::BluetoothClassDeviceMajor::WEARABLE">
10789         <webidl>        const octet WEARABLE = 0x07;</webidl>
10790         <Type type="octet"/>
10791       </Const>
10792       <Const name="TOY" value="0x08" id="::Bluetooth::BluetoothClassDeviceMajor::TOY">
10793         <webidl>        const octet TOY = 0x08;</webidl>
10794         <Type type="octet"/>
10795       </Const>
10796       <Const name="HEALTH" value="0x09" id="::Bluetooth::BluetoothClassDeviceMajor::HEALTH">
10797         <webidl>        const octet HEALTH = 0x09;</webidl>
10798         <Type type="octet"/>
10799       </Const>
10800       <Const name="UNCATEGORIZED" value="0x1F" id="::Bluetooth::BluetoothClassDeviceMajor::UNCATEGORIZED">
10801         <webidl>        const octet UNCATEGORIZED = 0x1F;</webidl>
10802         <Type type="octet"/>
10803       </Const>
10804     </Interface>
10805     <Interface name="BluetoothClassDeviceMinor" id="::Bluetooth::BluetoothClassDeviceMinor">
10806       <webidl>    [NoInterfaceObject] interface BluetoothClassDeviceMinor {
10807         const octet COMPUTER_UNCATEGORIZED = 0x00;
10808         const octet COMPUTER_DESKTOP = 0x01;
10809         const octet COMPUTER_SERVER = 0x02;
10810         const octet COMPUTER_LAPTOP = 0x03;
10811         const octet COMPUTER_HANDHELD_PC_OR_PDA = 0x04;
10812         const octet COMPUTER_PALM_PC_OR_PDA = 0x05;
10813         const octet COMPUTER_WEARABLE = 0x06;
10814
10815         const octet PHONE_UNCATEGORIZED = 0x00;
10816         const octet PHONE_CELLULAR = 0x01;
10817         const octet PHONE_CORDLESS = 0x02;
10818         const octet PHONE_SMARTPHONE = 0x03;
10819         const octet PHONE_MODEM_OR_GATEWAY = 0x04;
10820         const octet PHONE_ISDN = 0x05;
10821
10822         const octet AV_UNRECOGNIZED = 0x00;
10823         const octet AV_WEARABLE_HEADSET = 0x01;
10824         const octet AV_HANDSFREE = 0x02;
10825         const octet AV_MICROPHONE = 0x04;
10826         const octet AV_LOUDSPEAKER = 0x05;
10827         const octet AV_HEADPHONES = 0x06;
10828         const octet AV_PORTABLE_AUDIO = 0x07;
10829         const octet AV_CAR_AUDIO = 0x08;
10830         const octet AV_SETTOP_BOX = 0x09;
10831         const octet AV_HIFI = 0x0a;
10832         const octet AV_VCR = 0x0b;
10833         const octet AV_VIDEO_CAMERA = 0x0c;
10834         const octet AV_CAMCORDER = 0x0d;
10835         const octet AV_MONITOR = 0x0e;
10836         const octet AV_DISPLAY_AND_LOUDSPEAKER = 0x0f;
10837         const octet AV_VIDEO_CONFERENCING = 0x10;
10838         const octet AV_GAMING_TOY = 0x12;
10839
10840         const octet PERIPHERAL_UNCATEGORIZED = 0;
10841         const octet PERIPHERAL_KEYBOARD = 0x10;
10842         const octet PERIPHERAL_POINTING_DEVICE = 0x20;
10843         const octet PERIPHERAL_KEYBOARD_AND_POINTING_DEVICE = 0x30;
10844         const octet PERIPHERAL_JOYSTICK = 0x01;
10845         const octet PERIPHERAL_GAMEPAD = 0x02;
10846         const octet PERIPHERAL_REMOTE_CONTROL = 0x03;
10847         const octet PERIPHERAL_SENSING_DEVICE = 0x04;
10848         const octet PERIPHERAL_DEGITIZER_TABLET = 0x05;
10849         const octet PERIPHERAL_CARD_READER = 0x06;
10850         const octet PERIPHERAL_DIGITAL_PEN = 0x07;
10851         const octet PERIPHERAL_HANDHELD_SCANNER = 0x08;
10852         const octet PERIPHERAL_HANDHELD_INPUT_DEVICE = 0x09;
10853
10854         const octet IMAGING_UNCATEGORIZED = 0x00;
10855         const octet IMAGING_DISPLAY = 0x04;
10856         const octet IMAGING_CAMERA = 0x08;
10857         const octet IMAGING_SCANNER = 0x10;
10858         const octet IMAGING_PRINTER = 0x20;
10859
10860         const octet WEARABLE_WRITST_WATCH = 0x01;
10861         const octet WEARABLE_PAGER = 0x02;
10862         const octet WEARABLE_JACKET = 0x03;
10863         const octet WEARABLE_HELMET = 0x04;
10864         const octet WEARABLE_GLASSES = 0x05;
10865
10866         const octet TOY_ROBOT = 0x01;
10867         const octet TOY_VEHICLE = 0x02;
10868         const octet TOY_DOLL = 0x03;
10869         const octet TOY_CONTROLLER = 0x04;
10870         const octet TOY_GAME = 0x05;
10871
10872         const octet HEALTH_UNDEFINED = 0x00;
10873         const octet HEALTH_BLOOD_PRESSURE_MONITOR = 0x01;
10874         const octet HEALTH_THERMOMETER = 0x02;
10875         const octet HEALTH_WEIGHING_SCALE = 0x03;
10876         const octet HEALTH_GLUCOSE_METER = 0x04;
10877         const octet HEALTH_PULSE_OXIMETER = 0x05;
10878         const octet HEALTH_PULSE_RATE_MONITOR = 0x06;
10879         const octet HEALTH_DATA_DISPLAY = 0x07;
10880         const octet HEALTH_STEP_COUNTER = 0x08;
10881         const octet HEALTH_BODY_COMPOSITION_ANALYZER = 0x09;
10882         const octet HEALTH_PEAK_FLOW_MONITOR = 0x0a;
10883         const octet HEALTH_MEDICATION_MONITOR = 0x0b;
10884         const octet HEALTH_KNEE_PROSTHESIS = 0x0c;
10885         const octet HEALTH_ANKLE_PROSTHESIS = 0x0d;
10886     };</webidl>
10887       <descriptive>
10888           <brief>
10889  This interface holds the identifiers for minor device classes of Bluetooth CoD.
10890           </brief>
10891           <version>
10892  1.0
10893           </version>
10894       </descriptive>
10895       <ExtendedAttributeList>
10896         <ExtendedAttribute name="NoInterfaceObject">
10897           <webidl>NoInterfaceObject</webidl>
10898         </ExtendedAttribute>
10899       </ExtendedAttributeList>
10900       <Const name="COMPUTER_UNCATEGORIZED" value="0x00" id="::Bluetooth::BluetoothClassDeviceMinor::COMPUTER_UNCATEGORIZED">
10901         <webidl>        const octet COMPUTER_UNCATEGORIZED = 0x00;</webidl>
10902         <Type type="octet"/>
10903       </Const>
10904       <Const name="COMPUTER_DESKTOP" value="0x01" id="::Bluetooth::BluetoothClassDeviceMinor::COMPUTER_DESKTOP">
10905         <webidl>        const octet COMPUTER_DESKTOP = 0x01;</webidl>
10906         <Type type="octet"/>
10907       </Const>
10908       <Const name="COMPUTER_SERVER" value="0x02" id="::Bluetooth::BluetoothClassDeviceMinor::COMPUTER_SERVER">
10909         <webidl>        const octet COMPUTER_SERVER = 0x02;</webidl>
10910         <Type type="octet"/>
10911       </Const>
10912       <Const name="COMPUTER_LAPTOP" value="0x03" id="::Bluetooth::BluetoothClassDeviceMinor::COMPUTER_LAPTOP">
10913         <webidl>        const octet COMPUTER_LAPTOP = 0x03;</webidl>
10914         <Type type="octet"/>
10915       </Const>
10916       <Const name="COMPUTER_HANDHELD_PC_OR_PDA" value="0x04" id="::Bluetooth::BluetoothClassDeviceMinor::COMPUTER_HANDHELD_PC_OR_PDA">
10917         <webidl>        const octet COMPUTER_HANDHELD_PC_OR_PDA = 0x04;</webidl>
10918         <Type type="octet"/>
10919       </Const>
10920       <Const name="COMPUTER_PALM_PC_OR_PDA" value="0x05" id="::Bluetooth::BluetoothClassDeviceMinor::COMPUTER_PALM_PC_OR_PDA">
10921         <webidl>        const octet COMPUTER_PALM_PC_OR_PDA = 0x05;</webidl>
10922         <Type type="octet"/>
10923       </Const>
10924       <Const name="COMPUTER_WEARABLE" value="0x06" id="::Bluetooth::BluetoothClassDeviceMinor::COMPUTER_WEARABLE">
10925         <webidl>        const octet COMPUTER_WEARABLE = 0x06;</webidl>
10926         <Type type="octet"/>
10927       </Const>
10928       <Const name="PHONE_UNCATEGORIZED" value="0x00" id="::Bluetooth::BluetoothClassDeviceMinor::PHONE_UNCATEGORIZED">
10929         <webidl>        const octet PHONE_UNCATEGORIZED = 0x00;</webidl>
10930         <Type type="octet"/>
10931       </Const>
10932       <Const name="PHONE_CELLULAR" value="0x01" id="::Bluetooth::BluetoothClassDeviceMinor::PHONE_CELLULAR">
10933         <webidl>        const octet PHONE_CELLULAR = 0x01;</webidl>
10934         <Type type="octet"/>
10935       </Const>
10936       <Const name="PHONE_CORDLESS" value="0x02" id="::Bluetooth::BluetoothClassDeviceMinor::PHONE_CORDLESS">
10937         <webidl>        const octet PHONE_CORDLESS = 0x02;</webidl>
10938         <Type type="octet"/>
10939       </Const>
10940       <Const name="PHONE_SMARTPHONE" value="0x03" id="::Bluetooth::BluetoothClassDeviceMinor::PHONE_SMARTPHONE">
10941         <webidl>        const octet PHONE_SMARTPHONE = 0x03;</webidl>
10942         <Type type="octet"/>
10943       </Const>
10944       <Const name="PHONE_MODEM_OR_GATEWAY" value="0x04" id="::Bluetooth::BluetoothClassDeviceMinor::PHONE_MODEM_OR_GATEWAY">
10945         <webidl>        const octet PHONE_MODEM_OR_GATEWAY = 0x04;</webidl>
10946         <Type type="octet"/>
10947       </Const>
10948       <Const name="PHONE_ISDN" value="0x05" id="::Bluetooth::BluetoothClassDeviceMinor::PHONE_ISDN">
10949         <webidl>        const octet PHONE_ISDN = 0x05;</webidl>
10950         <Type type="octet"/>
10951       </Const>
10952       <Const name="AV_UNRECOGNIZED" value="0x00" id="::Bluetooth::BluetoothClassDeviceMinor::AV_UNRECOGNIZED">
10953         <webidl>        const octet AV_UNRECOGNIZED = 0x00;</webidl>
10954         <Type type="octet"/>
10955       </Const>
10956       <Const name="AV_WEARABLE_HEADSET" value="0x01" id="::Bluetooth::BluetoothClassDeviceMinor::AV_WEARABLE_HEADSET">
10957         <webidl>        const octet AV_WEARABLE_HEADSET = 0x01;</webidl>
10958         <Type type="octet"/>
10959       </Const>
10960       <Const name="AV_HANDSFREE" value="0x02" id="::Bluetooth::BluetoothClassDeviceMinor::AV_HANDSFREE">
10961         <webidl>        const octet AV_HANDSFREE = 0x02;</webidl>
10962         <Type type="octet"/>
10963       </Const>
10964       <Const name="AV_MICROPHONE" value="0x04" id="::Bluetooth::BluetoothClassDeviceMinor::AV_MICROPHONE">
10965         <webidl>        const octet AV_MICROPHONE = 0x04;</webidl>
10966         <Type type="octet"/>
10967       </Const>
10968       <Const name="AV_LOUDSPEAKER" value="0x05" id="::Bluetooth::BluetoothClassDeviceMinor::AV_LOUDSPEAKER">
10969         <webidl>        const octet AV_LOUDSPEAKER = 0x05;</webidl>
10970         <Type type="octet"/>
10971       </Const>
10972       <Const name="AV_HEADPHONES" value="0x06" id="::Bluetooth::BluetoothClassDeviceMinor::AV_HEADPHONES">
10973         <webidl>        const octet AV_HEADPHONES = 0x06;</webidl>
10974         <Type type="octet"/>
10975       </Const>
10976       <Const name="AV_PORTABLE_AUDIO" value="0x07" id="::Bluetooth::BluetoothClassDeviceMinor::AV_PORTABLE_AUDIO">
10977         <webidl>        const octet AV_PORTABLE_AUDIO = 0x07;</webidl>
10978         <Type type="octet"/>
10979       </Const>
10980       <Const name="AV_CAR_AUDIO" value="0x08" id="::Bluetooth::BluetoothClassDeviceMinor::AV_CAR_AUDIO">
10981         <webidl>        const octet AV_CAR_AUDIO = 0x08;</webidl>
10982         <Type type="octet"/>
10983       </Const>
10984       <Const name="AV_SETTOP_BOX" value="0x09" id="::Bluetooth::BluetoothClassDeviceMinor::AV_SETTOP_BOX">
10985         <webidl>        const octet AV_SETTOP_BOX = 0x09;</webidl>
10986         <Type type="octet"/>
10987       </Const>
10988       <Const name="AV_HIFI" value="0x0a" id="::Bluetooth::BluetoothClassDeviceMinor::AV_HIFI">
10989         <webidl>        const octet AV_HIFI = 0x0a;</webidl>
10990         <Type type="octet"/>
10991       </Const>
10992       <Const name="AV_VCR" value="0x0b" id="::Bluetooth::BluetoothClassDeviceMinor::AV_VCR">
10993         <webidl>        const octet AV_VCR = 0x0b;</webidl>
10994         <Type type="octet"/>
10995       </Const>
10996       <Const name="AV_VIDEO_CAMERA" value="0x0c" id="::Bluetooth::BluetoothClassDeviceMinor::AV_VIDEO_CAMERA">
10997         <webidl>        const octet AV_VIDEO_CAMERA = 0x0c;</webidl>
10998         <Type type="octet"/>
10999       </Const>
11000       <Const name="AV_CAMCORDER" value="0x0d" id="::Bluetooth::BluetoothClassDeviceMinor::AV_CAMCORDER">
11001         <webidl>        const octet AV_CAMCORDER = 0x0d;</webidl>
11002         <Type type="octet"/>
11003       </Const>
11004       <Const name="AV_MONITOR" value="0x0e" id="::Bluetooth::BluetoothClassDeviceMinor::AV_MONITOR">
11005         <webidl>        const octet AV_MONITOR = 0x0e;</webidl>
11006         <Type type="octet"/>
11007       </Const>
11008       <Const name="AV_DISPLAY_AND_LOUDSPEAKER" value="0x0f" id="::Bluetooth::BluetoothClassDeviceMinor::AV_DISPLAY_AND_LOUDSPEAKER">
11009         <webidl>        const octet AV_DISPLAY_AND_LOUDSPEAKER = 0x0f;</webidl>
11010         <Type type="octet"/>
11011       </Const>
11012       <Const name="AV_VIDEO_CONFERENCING" value="0x10" id="::Bluetooth::BluetoothClassDeviceMinor::AV_VIDEO_CONFERENCING">
11013         <webidl>        const octet AV_VIDEO_CONFERENCING = 0x10;</webidl>
11014         <Type type="octet"/>
11015       </Const>
11016       <Const name="AV_GAMING_TOY" value="0x12" id="::Bluetooth::BluetoothClassDeviceMinor::AV_GAMING_TOY">
11017         <webidl>        const octet AV_GAMING_TOY = 0x12;</webidl>
11018         <Type type="octet"/>
11019       </Const>
11020       <Const name="PERIPHERAL_UNCATEGORIZED" value="0" id="::Bluetooth::BluetoothClassDeviceMinor::PERIPHERAL_UNCATEGORIZED">
11021         <webidl>        const octet PERIPHERAL_UNCATEGORIZED = 0;</webidl>
11022         <Type type="octet"/>
11023       </Const>
11024       <Const name="PERIPHERAL_KEYBOARD" value="0x10" id="::Bluetooth::BluetoothClassDeviceMinor::PERIPHERAL_KEYBOARD">
11025         <webidl>        const octet PERIPHERAL_KEYBOARD = 0x10;</webidl>
11026         <Type type="octet"/>
11027       </Const>
11028       <Const name="PERIPHERAL_POINTING_DEVICE" value="0x20" id="::Bluetooth::BluetoothClassDeviceMinor::PERIPHERAL_POINTING_DEVICE">
11029         <webidl>        const octet PERIPHERAL_POINTING_DEVICE = 0x20;</webidl>
11030         <Type type="octet"/>
11031       </Const>
11032       <Const name="PERIPHERAL_KEYBOARD_AND_POINTING_DEVICE" value="0x30" id="::Bluetooth::BluetoothClassDeviceMinor::PERIPHERAL_KEYBOARD_AND_POINTING_DEVICE">
11033         <webidl>        const octet PERIPHERAL_KEYBOARD_AND_POINTING_DEVICE = 0x30;</webidl>
11034         <Type type="octet"/>
11035       </Const>
11036       <Const name="PERIPHERAL_JOYSTICK" value="0x01" id="::Bluetooth::BluetoothClassDeviceMinor::PERIPHERAL_JOYSTICK">
11037         <webidl>        const octet PERIPHERAL_JOYSTICK = 0x01;</webidl>
11038         <Type type="octet"/>
11039       </Const>
11040       <Const name="PERIPHERAL_GAMEPAD" value="0x02" id="::Bluetooth::BluetoothClassDeviceMinor::PERIPHERAL_GAMEPAD">
11041         <webidl>        const octet PERIPHERAL_GAMEPAD = 0x02;</webidl>
11042         <Type type="octet"/>
11043       </Const>
11044       <Const name="PERIPHERAL_REMOTE_CONTROL" value="0x03" id="::Bluetooth::BluetoothClassDeviceMinor::PERIPHERAL_REMOTE_CONTROL">
11045         <webidl>        const octet PERIPHERAL_REMOTE_CONTROL = 0x03;</webidl>
11046         <Type type="octet"/>
11047       </Const>
11048       <Const name="PERIPHERAL_SENSING_DEVICE" value="0x04" id="::Bluetooth::BluetoothClassDeviceMinor::PERIPHERAL_SENSING_DEVICE">
11049         <webidl>        const octet PERIPHERAL_SENSING_DEVICE = 0x04;</webidl>
11050         <Type type="octet"/>
11051       </Const>
11052       <Const name="PERIPHERAL_DEGITIZER_TABLET" value="0x05" id="::Bluetooth::BluetoothClassDeviceMinor::PERIPHERAL_DEGITIZER_TABLET">
11053         <webidl>        const octet PERIPHERAL_DEGITIZER_TABLET = 0x05;</webidl>
11054         <Type type="octet"/>
11055       </Const>
11056       <Const name="PERIPHERAL_CARD_READER" value="0x06" id="::Bluetooth::BluetoothClassDeviceMinor::PERIPHERAL_CARD_READER">
11057         <webidl>        const octet PERIPHERAL_CARD_READER = 0x06;</webidl>
11058         <Type type="octet"/>
11059       </Const>
11060       <Const name="PERIPHERAL_DIGITAL_PEN" value="0x07" id="::Bluetooth::BluetoothClassDeviceMinor::PERIPHERAL_DIGITAL_PEN">
11061         <webidl>        const octet PERIPHERAL_DIGITAL_PEN = 0x07;</webidl>
11062         <Type type="octet"/>
11063       </Const>
11064       <Const name="PERIPHERAL_HANDHELD_SCANNER" value="0x08" id="::Bluetooth::BluetoothClassDeviceMinor::PERIPHERAL_HANDHELD_SCANNER">
11065         <webidl>        const octet PERIPHERAL_HANDHELD_SCANNER = 0x08;</webidl>
11066         <Type type="octet"/>
11067       </Const>
11068       <Const name="PERIPHERAL_HANDHELD_INPUT_DEVICE" value="0x09" id="::Bluetooth::BluetoothClassDeviceMinor::PERIPHERAL_HANDHELD_INPUT_DEVICE">
11069         <webidl>        const octet PERIPHERAL_HANDHELD_INPUT_DEVICE = 0x09;</webidl>
11070         <Type type="octet"/>
11071       </Const>
11072       <Const name="IMAGING_UNCATEGORIZED" value="0x00" id="::Bluetooth::BluetoothClassDeviceMinor::IMAGING_UNCATEGORIZED">
11073         <webidl>        const octet IMAGING_UNCATEGORIZED = 0x00;</webidl>
11074         <Type type="octet"/>
11075       </Const>
11076       <Const name="IMAGING_DISPLAY" value="0x04" id="::Bluetooth::BluetoothClassDeviceMinor::IMAGING_DISPLAY">
11077         <webidl>        const octet IMAGING_DISPLAY = 0x04;</webidl>
11078         <Type type="octet"/>
11079       </Const>
11080       <Const name="IMAGING_CAMERA" value="0x08" id="::Bluetooth::BluetoothClassDeviceMinor::IMAGING_CAMERA">
11081         <webidl>        const octet IMAGING_CAMERA = 0x08;</webidl>
11082         <Type type="octet"/>
11083       </Const>
11084       <Const name="IMAGING_SCANNER" value="0x10" id="::Bluetooth::BluetoothClassDeviceMinor::IMAGING_SCANNER">
11085         <webidl>        const octet IMAGING_SCANNER = 0x10;</webidl>
11086         <Type type="octet"/>
11087       </Const>
11088       <Const name="IMAGING_PRINTER" value="0x20" id="::Bluetooth::BluetoothClassDeviceMinor::IMAGING_PRINTER">
11089         <webidl>        const octet IMAGING_PRINTER = 0x20;</webidl>
11090         <Type type="octet"/>
11091       </Const>
11092       <Const name="WEARABLE_WRITST_WATCH" value="0x01" id="::Bluetooth::BluetoothClassDeviceMinor::WEARABLE_WRITST_WATCH">
11093         <webidl>        const octet WEARABLE_WRITST_WATCH = 0x01;</webidl>
11094         <Type type="octet"/>
11095       </Const>
11096       <Const name="WEARABLE_PAGER" value="0x02" id="::Bluetooth::BluetoothClassDeviceMinor::WEARABLE_PAGER">
11097         <webidl>        const octet WEARABLE_PAGER = 0x02;</webidl>
11098         <Type type="octet"/>
11099       </Const>
11100       <Const name="WEARABLE_JACKET" value="0x03" id="::Bluetooth::BluetoothClassDeviceMinor::WEARABLE_JACKET">
11101         <webidl>        const octet WEARABLE_JACKET = 0x03;</webidl>
11102         <Type type="octet"/>
11103       </Const>
11104       <Const name="WEARABLE_HELMET" value="0x04" id="::Bluetooth::BluetoothClassDeviceMinor::WEARABLE_HELMET">
11105         <webidl>        const octet WEARABLE_HELMET = 0x04;</webidl>
11106         <Type type="octet"/>
11107       </Const>
11108       <Const name="WEARABLE_GLASSES" value="0x05" id="::Bluetooth::BluetoothClassDeviceMinor::WEARABLE_GLASSES">
11109         <webidl>        const octet WEARABLE_GLASSES = 0x05;</webidl>
11110         <Type type="octet"/>
11111       </Const>
11112       <Const name="TOY_ROBOT" value="0x01" id="::Bluetooth::BluetoothClassDeviceMinor::TOY_ROBOT">
11113         <webidl>        const octet TOY_ROBOT = 0x01;</webidl>
11114         <Type type="octet"/>
11115       </Const>
11116       <Const name="TOY_VEHICLE" value="0x02" id="::Bluetooth::BluetoothClassDeviceMinor::TOY_VEHICLE">
11117         <webidl>        const octet TOY_VEHICLE = 0x02;</webidl>
11118         <Type type="octet"/>
11119       </Const>
11120       <Const name="TOY_DOLL" value="0x03" id="::Bluetooth::BluetoothClassDeviceMinor::TOY_DOLL">
11121         <webidl>        const octet TOY_DOLL = 0x03;</webidl>
11122         <Type type="octet"/>
11123       </Const>
11124       <Const name="TOY_CONTROLLER" value="0x04" id="::Bluetooth::BluetoothClassDeviceMinor::TOY_CONTROLLER">
11125         <webidl>        const octet TOY_CONTROLLER = 0x04;</webidl>
11126         <Type type="octet"/>
11127       </Const>
11128       <Const name="TOY_GAME" value="0x05" id="::Bluetooth::BluetoothClassDeviceMinor::TOY_GAME">
11129         <webidl>        const octet TOY_GAME = 0x05;</webidl>
11130         <Type type="octet"/>
11131       </Const>
11132       <Const name="HEALTH_UNDEFINED" value="0x00" id="::Bluetooth::BluetoothClassDeviceMinor::HEALTH_UNDEFINED">
11133         <webidl>        const octet HEALTH_UNDEFINED = 0x00;</webidl>
11134         <Type type="octet"/>
11135       </Const>
11136       <Const name="HEALTH_BLOOD_PRESSURE_MONITOR" value="0x01" id="::Bluetooth::BluetoothClassDeviceMinor::HEALTH_BLOOD_PRESSURE_MONITOR">
11137         <webidl>        const octet HEALTH_BLOOD_PRESSURE_MONITOR = 0x01;</webidl>
11138         <Type type="octet"/>
11139       </Const>
11140       <Const name="HEALTH_THERMOMETER" value="0x02" id="::Bluetooth::BluetoothClassDeviceMinor::HEALTH_THERMOMETER">
11141         <webidl>        const octet HEALTH_THERMOMETER = 0x02;</webidl>
11142         <Type type="octet"/>
11143       </Const>
11144       <Const name="HEALTH_WEIGHING_SCALE" value="0x03" id="::Bluetooth::BluetoothClassDeviceMinor::HEALTH_WEIGHING_SCALE">
11145         <webidl>        const octet HEALTH_WEIGHING_SCALE = 0x03;</webidl>
11146         <Type type="octet"/>
11147       </Const>
11148       <Const name="HEALTH_GLUCOSE_METER" value="0x04" id="::Bluetooth::BluetoothClassDeviceMinor::HEALTH_GLUCOSE_METER">
11149         <webidl>        const octet HEALTH_GLUCOSE_METER = 0x04;</webidl>
11150         <Type type="octet"/>
11151       </Const>
11152       <Const name="HEALTH_PULSE_OXIMETER" value="0x05" id="::Bluetooth::BluetoothClassDeviceMinor::HEALTH_PULSE_OXIMETER">
11153         <webidl>        const octet HEALTH_PULSE_OXIMETER = 0x05;</webidl>
11154         <Type type="octet"/>
11155       </Const>
11156       <Const name="HEALTH_PULSE_RATE_MONITOR" value="0x06" id="::Bluetooth::BluetoothClassDeviceMinor::HEALTH_PULSE_RATE_MONITOR">
11157         <webidl>        const octet HEALTH_PULSE_RATE_MONITOR = 0x06;</webidl>
11158         <Type type="octet"/>
11159       </Const>
11160       <Const name="HEALTH_DATA_DISPLAY" value="0x07" id="::Bluetooth::BluetoothClassDeviceMinor::HEALTH_DATA_DISPLAY">
11161         <webidl>        const octet HEALTH_DATA_DISPLAY = 0x07;</webidl>
11162         <Type type="octet"/>
11163       </Const>
11164       <Const name="HEALTH_STEP_COUNTER" value="0x08" id="::Bluetooth::BluetoothClassDeviceMinor::HEALTH_STEP_COUNTER">
11165         <webidl>        const octet HEALTH_STEP_COUNTER = 0x08;</webidl>
11166         <Type type="octet"/>
11167       </Const>
11168       <Const name="HEALTH_BODY_COMPOSITION_ANALYZER" value="0x09" id="::Bluetooth::BluetoothClassDeviceMinor::HEALTH_BODY_COMPOSITION_ANALYZER">
11169         <webidl>        const octet HEALTH_BODY_COMPOSITION_ANALYZER = 0x09;</webidl>
11170         <Type type="octet"/>
11171       </Const>
11172       <Const name="HEALTH_PEAK_FLOW_MONITOR" value="0x0a" id="::Bluetooth::BluetoothClassDeviceMinor::HEALTH_PEAK_FLOW_MONITOR">
11173         <webidl>        const octet HEALTH_PEAK_FLOW_MONITOR = 0x0a;</webidl>
11174         <Type type="octet"/>
11175       </Const>
11176       <Const name="HEALTH_MEDICATION_MONITOR" value="0x0b" id="::Bluetooth::BluetoothClassDeviceMinor::HEALTH_MEDICATION_MONITOR">
11177         <webidl>        const octet HEALTH_MEDICATION_MONITOR = 0x0b;</webidl>
11178         <Type type="octet"/>
11179       </Const>
11180       <Const name="HEALTH_KNEE_PROSTHESIS" value="0x0c" id="::Bluetooth::BluetoothClassDeviceMinor::HEALTH_KNEE_PROSTHESIS">
11181         <webidl>        const octet HEALTH_KNEE_PROSTHESIS = 0x0c;</webidl>
11182         <Type type="octet"/>
11183       </Const>
11184       <Const name="HEALTH_ANKLE_PROSTHESIS" value="0x0d" id="::Bluetooth::BluetoothClassDeviceMinor::HEALTH_ANKLE_PROSTHESIS">
11185         <webidl>        const octet HEALTH_ANKLE_PROSTHESIS = 0x0d;</webidl>
11186         <Type type="octet"/>
11187       </Const>
11188     </Interface>
11189     <Interface name="BluetoothClassDeviceService" id="::Bluetooth::BluetoothClassDeviceService">
11190       <webidl>    [NoInterfaceObject] interface BluetoothClassDeviceService {
11191         const unsigned short LIMITED_DISCOVERABILITY = 0x0001;
11192         const unsigned short POSITIONING = 0x0008; 
11193         const unsigned short NETWORKING = 0x0010; 
11194         const unsigned short RENDERING = 0x0020; 
11195         const unsigned short CAPTURING = 0x0040;
11196         const unsigned short OBJECT_TRANSFER = 0x0080; 
11197         const unsigned short AUDIO = 0x0100;
11198         const unsigned short TELEPHONY = 0x0200;
11199         const unsigned short INFORMATION = 0x0400;
11200     };</webidl>
11201       <descriptive>
11202           <brief>
11203  This interface holds identifiers for the major service classes of Bluetooth CoD.
11204           </brief>
11205           <version>
11206  1.0
11207           </version>
11208       </descriptive>
11209       <ExtendedAttributeList>
11210         <ExtendedAttribute name="NoInterfaceObject">
11211           <webidl>NoInterfaceObject</webidl>
11212         </ExtendedAttribute>
11213       </ExtendedAttributeList>
11214       <Const name="LIMITED_DISCOVERABILITY" value="0x0001" id="::Bluetooth::BluetoothClassDeviceService::LIMITED_DISCOVERABILITY">
11215         <webidl>        const unsigned short LIMITED_DISCOVERABILITY = 0x0001;</webidl>
11216         <Type type="unsigned short"/>
11217       </Const>
11218       <Const name="POSITIONING" value="0x0008" id="::Bluetooth::BluetoothClassDeviceService::POSITIONING">
11219         <webidl>        const unsigned short POSITIONING = 0x0008;</webidl>
11220         <Type type="unsigned short"/>
11221       </Const>
11222       <Const name="NETWORKING" value="0x0010" id="::Bluetooth::BluetoothClassDeviceService::NETWORKING">
11223         <webidl>        const unsigned short NETWORKING = 0x0010;</webidl>
11224         <Type type="unsigned short"/>
11225       </Const>
11226       <Const name="RENDERING" value="0x0020" id="::Bluetooth::BluetoothClassDeviceService::RENDERING">
11227         <webidl>        const unsigned short RENDERING = 0x0020;</webidl>
11228         <Type type="unsigned short"/>
11229       </Const>
11230       <Const name="CAPTURING" value="0x0040" id="::Bluetooth::BluetoothClassDeviceService::CAPTURING">
11231         <webidl>        const unsigned short CAPTURING = 0x0040;</webidl>
11232         <Type type="unsigned short"/>
11233       </Const>
11234       <Const name="OBJECT_TRANSFER" value="0x0080" id="::Bluetooth::BluetoothClassDeviceService::OBJECT_TRANSFER">
11235         <webidl>        const unsigned short OBJECT_TRANSFER = 0x0080;</webidl>
11236         <Type type="unsigned short"/>
11237       </Const>
11238       <Const name="AUDIO" value="0x0100" id="::Bluetooth::BluetoothClassDeviceService::AUDIO">
11239         <webidl>        const unsigned short AUDIO = 0x0100;</webidl>
11240         <Type type="unsigned short"/>
11241       </Const>
11242       <Const name="TELEPHONY" value="0x0200" id="::Bluetooth::BluetoothClassDeviceService::TELEPHONY">
11243         <webidl>        const unsigned short TELEPHONY = 0x0200;</webidl>
11244         <Type type="unsigned short"/>
11245       </Const>
11246       <Const name="INFORMATION" value="0x0400" id="::Bluetooth::BluetoothClassDeviceService::INFORMATION">
11247         <webidl>        const unsigned short INFORMATION = 0x0400;</webidl>
11248         <Type type="unsigned short"/>
11249       </Const>
11250     </Interface>
11251     <Interface name="BluetoothServiceHandler" id="::Bluetooth::BluetoothServiceHandler">
11252       <webidl>    [NoInterfaceObject] interface BluetoothServiceHandler {
11253         readonly attribute <ref>BluetoothUUID</ref> uuid;
11254         readonly attribute DOMString name;
11255         readonly attribute boolean isConnected;
11256         [TreatNonCallableAsNull] attribute <ref>BluetoothSocketSuccessCallback</ref>? onconnect raises(<ref>WebAPIException</ref>);
11257
11258         void unregister(optional <ref>SuccessCallback</ref>? successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
11259     };</webidl>
11260       <descriptive>
11261           <brief>
11262  This interface provides methods to handle Bluetooth service.
11263           </brief>
11264           <version>
11265  1.0
11266           </version>
11267       </descriptive>
11268       <ExtendedAttributeList>
11269         <ExtendedAttribute name="NoInterfaceObject">
11270           <webidl>NoInterfaceObject</webidl>
11271         </ExtendedAttribute>
11272       </ExtendedAttributeList>
11273       <Attribute readonly="readonly" name="uuid" id="::Bluetooth::BluetoothServiceHandler::uuid">
11274         <webidl>        readonly attribute <ref>BluetoothUUID</ref> uuid;</webidl>
11275         <descriptive>
11276             <brief>
11277  The UUID of the service.
11278             </brief>
11279             <version>
11280  1.0
11281             </version>
11282         </descriptive>
11283         <Type name="BluetoothUUID"/>
11284       </Attribute>
11285       <Attribute readonly="readonly" name="name" id="::Bluetooth::BluetoothServiceHandler::name">
11286         <webidl>        readonly attribute DOMString name;</webidl>
11287         <descriptive>
11288             <brief>
11289  The name of the service.
11290             </brief>
11291             <version>
11292  1.0
11293             </version>
11294         </descriptive>
11295         <Type type="DOMString"/>
11296       </Attribute>
11297       <Attribute readonly="readonly" name="isConnected" id="::Bluetooth::BluetoothServiceHandler::isConnected">
11298         <webidl>        readonly attribute boolean isConnected;</webidl>
11299         <descriptive>
11300             <brief>
11301  An attribute to check whether any remote devices is using this service or not.
11302             </brief>
11303             <version>
11304  1.0
11305             </version>
11306         </descriptive>
11307         <Type type="boolean"/>
11308       </Attribute>
11309       <Attribute name="onconnect" id="::Bluetooth::BluetoothServiceHandler::onconnect">
11310         <webidl>        [TreatNonCallableAsNull] attribute <ref>BluetoothSocketSuccessCallback</ref>? onconnect raises(<ref>WebAPIException</ref>);</webidl>
11311         <descriptive>
11312             <brief>
11313  The success callback to be invoked when a remote device is connected to this service.
11314 By default, this attribute is set to null.
11315             </brief>
11316             <version>
11317  1.0
11318             </version>
11319         </descriptive>
11320         <ExtendedAttributeList>
11321           <ExtendedAttribute name="TreatNonCallableAsNull">
11322             <webidl>TreatNonCallableAsNull</webidl>
11323           </ExtendedAttribute>
11324         </ExtendedAttributeList>
11325         <Type name="BluetoothSocketSuccessCallback" nullable="nullable"/>
11326         <Raises>
11327           <RaiseException name="WebAPIException">
11328             <descriptive>
11329                 <description><p>
11330  with error type TypeMismatchError, if any input attribute is not compatible with the expected type for this attribute.
11331                 </p></description>
11332             </descriptive>
11333           </RaiseException>
11334         </Raises>
11335       </Attribute>
11336       <Operation name="unregister" id="::Bluetooth::BluetoothServiceHandler::unregister">
11337         <webidl>        void unregister(optional <ref>SuccessCallback</ref>? successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
11338         <descriptive>
11339             <brief>
11340  Unregisters a service record from the Bluetooth services record database and stops listening for new connections to this service.
11341             </brief>
11342            <description>
11343             <p>
11344 The ErrorCallback is launched with these error types:
11345             </p>
11346             <ul>
11347               <li>
11348  UnknownError - If any other error occurs.              </li>
11349             </ul>
11350            </description>
11351             <version>
11352  1.0
11353             </version>
11354             <privilegelevel>
11355  public
11356             </privilegelevel>
11357             <privilege>
11358  http://tizen.org/privilege/bluetooth.spp
11359             </privilege>
11360             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
11361  var chatServiceHandler = null;
11362
11363  function chatServiceSuccessCb(handler) {
11364     console.log(&quot;Chat service registration was successful!&quot;);
11365
11366     chatServiceHandler = handler;
11367     handler.onconnect = function(socket) {
11368        console.log(&quot;Client is connected: &quot; + socket.peer.name + &quot;,&quot; + socket.peer.address);
11369        socket.onmessage = function() {
11370            var data = socket.readData();
11371            // Handle message code goes here
11372            //....
11373        };
11374
11375        // Expected close
11376        socket.onclose = function() {
11377            console.log('The socket is closed.');
11378        };
11379     };
11380  }
11381
11382  function publishChatService()
11383  {
11384     var CHAT_SERVICE_UUID = &quot;5BCE9431-6C75-32AB-AFE0-2EC108A30860&quot;;
11385     adapter.registerRFCOMMServiceByUUID(CHAT_SERVICE_UUID, &quot;Chat service&quot;, chatServiceSuccessCb,
11386       // Error handler
11387       function(e) {
11388            console.log( &quot;Could not register service record, Error: &quot; + e.message);
11389       });
11390  }
11391
11392  function unRegisterChatService()
11393  {
11394       if (chatServiceHandler != null) {
11395            chatServiceHandler.unregister(function() {
11396                chatServiceHandler = null;
11397                console.log(&quot;Chat service is unregistered.&quot;);
11398            },
11399            function(e) {
11400                console.log (&quot;Error: &quot; + e.message);
11401            });
11402       }
11403  }
11404  </Code>
11405         </descriptive>
11406         <Type type="void"/>
11407         <ArgumentList>
11408           <Argument optional="optional" name="successCallback">
11409             <descriptive>
11410                 <description><p>
11411  The method to be invoked when the record is removed successfully from the service records database.
11412                 </p></description>
11413             </descriptive>
11414             <Type name="SuccessCallback" nullable="nullable"/>
11415           </Argument>
11416           <Argument optional="optional" name="errorCallback">
11417             <descriptive>
11418                 <description><p>
11419  The method to be invoked in case of failure (to unregister).
11420                 </p></description>
11421             </descriptive>
11422             <Type name="ErrorCallback" nullable="nullable"/>
11423           </Argument>
11424         </ArgumentList>
11425         <Raises>
11426           <RaiseException name="WebAPIException">
11427             <descriptive>
11428                 <description><p>
11429  with error type TypeMismatchError, if the input parameter is not compatible with the expected type for that parameter.
11430                 </p></description>
11431                 <description><p>
11432  with error type SecurityError, if the application does not have the privilege to call this method.
11433                 </p></description>
11434                 <description><p>
11435  with error type NotSupportedError, if this feature is not supported.
11436                 </p></description>
11437             </descriptive>
11438           </RaiseException>
11439         </Raises>
11440       </Operation>
11441     </Interface>
11442     <Interface name="BluetoothProfileHandler" id="::Bluetooth::BluetoothProfileHandler">
11443       <webidl>    [NoInterfaceObject] interface BluetoothProfileHandler {
11444         
11445         readonly attribute <ref>BluetoothProfileType</ref> profileType;
11446                 
11447     };</webidl>
11448       <descriptive>
11449           <brief>
11450  This interface represents the Bluetooth profile handler.
11451           </brief>
11452           <version>
11453  2.2
11454           </version>
11455       </descriptive>
11456       <ExtendedAttributeList>
11457         <ExtendedAttribute name="NoInterfaceObject">
11458           <webidl>NoInterfaceObject</webidl>
11459         </ExtendedAttribute>
11460       </ExtendedAttributeList>
11461       <Attribute readonly="readonly" name="profileType" id="::Bluetooth::BluetoothProfileHandler::profileType">
11462         <webidl>        readonly attribute <ref>BluetoothProfileType</ref> profileType;</webidl>
11463         <descriptive>
11464             <brief>
11465  The type of Bluetooth profile.
11466             </brief>
11467             <version>
11468  2.2
11469             </version>
11470         </descriptive>
11471         <Type name="BluetoothProfileType"/>
11472       </Attribute>
11473     </Interface>
11474     <Interface name="BluetoothHealthProfileHandler" id="::Bluetooth::BluetoothHealthProfileHandler">
11475       <webidl>    [NoInterfaceObject] interface BluetoothHealthProfileHandler : <ref>BluetoothProfileHandler</ref> {
11476         
11477         void registerSinkApplication(unsigned short dataType, DOMString name, <ref>BluetoothHealthApplicationSuccessCallback</ref> successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
11478
11479         void connectToSource(<ref>BluetoothDevice</ref> peer, <ref>BluetoothHealthApplication</ref> application, <ref>BluetoothHealthChannelSuccessCallback</ref> successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
11480
11481         };</webidl>
11482       <descriptive>
11483           <brief>
11484  This interface represents the handler of Bluetooth health device profile.
11485 The BluetoothHealthProfileHandler object is created by <em>BluetoothAdapter.getBluetoothProfileHandler()</em>.        
11486           </brief>
11487           <version>
11488  2.2
11489           </version>
11490       </descriptive>
11491       <ExtendedAttributeList>
11492         <ExtendedAttribute name="NoInterfaceObject">
11493           <webidl>NoInterfaceObject</webidl>
11494         </ExtendedAttribute>
11495       </ExtendedAttributeList>
11496       <InterfaceInheritance>
11497         <Name name="BluetoothProfileHandler"/>
11498       </InterfaceInheritance>
11499       <Operation name="registerSinkApplication" id="::Bluetooth::BluetoothHealthProfileHandler::registerSinkApplication">
11500         <webidl>        void registerSinkApplication(unsigned short dataType, DOMString name, <ref>BluetoothHealthApplicationSuccessCallback</ref> successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
11501         <descriptive>
11502             <brief>
11503  Registers an application for the Sink role.
11504             </brief>
11505            <description>
11506             <p>
11507 The ErrorCallback is launched with these error types:
11508             </p>
11509             <ul>
11510               <li>
11511  ServiceNotAvailableError - If a Bluetooth device is turned off.              </li>
11512               <li>
11513  UnknownError - If any other error occurs.              </li>
11514             </ul>
11515            </description>
11516             <version>
11517  2.2
11518             </version>
11519             <privilegelevel>
11520  public
11521             </privilegelevel>
11522             <privilege>
11523  http://tizen.org/privilege/bluetooth.health
11524             </privilege>
11525             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
11526  var healthProfileHandler = adapter.getBluetoothProfileHandler(&quot;HEALTH&quot;);
11527
11528  function healthRegisterSuccess(app) {
11529      console.log(&quot;Registered application: &quot; + app.name);
11530  }
11531
11532  function healthRegisterError(e) {
11533      console.log(&quot;Failed to register application: &quot; + e.message);
11534  };
11535
11536  healthProfileHandler.registerSinkApplication(4100, &quot;testSinkApp&quot;, healthRegisterSuccess, healthRegisterError);
11537  </Code>
11538         </descriptive>
11539         <Type type="void"/>
11540         <ArgumentList>
11541           <Argument name="dataType">
11542             <descriptive>
11543                 <description><p>
11544  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. 
11545                 </p></description>
11546             </descriptive>
11547             <Type type="unsigned short"/>
11548           </Argument>
11549           <Argument name="name">
11550             <descriptive>
11551                 <description><p>
11552  The friendly name associated with sink application.
11553                 </p></description>
11554             </descriptive>
11555             <Type type="DOMString"/>
11556           </Argument>
11557           <Argument name="successCallback">
11558             <descriptive>
11559                 <description><p>
11560  The method to invoke when a sink application is registered successfully.
11561                 </p></description>
11562             </descriptive>
11563             <Type name="BluetoothHealthApplicationSuccessCallback"/>
11564           </Argument>
11565           <Argument optional="optional" name="errorCallback">
11566             <descriptive>
11567                 <description><p>
11568  The method to invoke when an error occurs.
11569                 </p></description>
11570             </descriptive>
11571             <Type name="ErrorCallback" nullable="nullable"/>
11572           </Argument>
11573         </ArgumentList>
11574         <Raises>
11575           <RaiseException name="WebAPIException">
11576             <descriptive>
11577                 <description><p>
11578  with error type SecurityError, if the application does not have the privilege to call this method.
11579                 </p></description>
11580                 <description><p>
11581  with error type TypeMismatchError, if any of the input parameter is not compatible with the expected type for that parameter.
11582                 </p></description>
11583                 <description><p>
11584  with error type NotSupportedError, if this feature is not supported.
11585                 </p></description>
11586             </descriptive>
11587           </RaiseException>
11588         </Raises>
11589       </Operation>
11590       <Operation name="connectToSource" id="::Bluetooth::BluetoothHealthProfileHandler::connectToSource">
11591         <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>
11592         <descriptive>
11593             <brief>
11594  Connect to the health device which acts as the Source role.
11595             </brief>
11596            <description>
11597             <p>
11598 The ErrorCallback is launched with these error types:
11599             </p>
11600             <ul>
11601               <li>
11602  ServiceNotAvailableError - If a Bluetooth device is turned off.              </li>
11603               <li>
11604  InvalidValuesError - If any of the input parameters contain an invalid value.              </li>
11605               <li>
11606  UnknownError - If any other error occurs.              </li>
11607             </ul>
11608            </description>
11609             <version>
11610  2.2
11611             </version>
11612             <privilegelevel>
11613  public
11614             </privilegelevel>
11615             <privilege>
11616  http://tizen.org/privilege/bluetooth.health
11617             </privilege>
11618             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
11619  var healthProfileHandler = adapter.getBluetoothProfileHandler(&quot;HEALTH&quot;);
11620  var registerHealthApp = null;
11621
11622  function healthConnectSuccess(channel) {
11623      console.log(&quot;Health device is connected&quot;);
11624  }
11625  
11626  function healthConnectError(e) {
11627      console.log(&quot;Failed to connect to source: &quot; + e.message);
11628  };
11629  
11630  function gotDeviceInfo(device) {
11631      healthProfileHandler.connectToSource(device, registerHealthApp, healthConnectSuccess, healthConnectError);
11632  }
11633  
11634  function healthRegisterSuccess(app) {
11635      console.log(&quot;Registered application: &quot; + app.name);
11636      registerHealthApp = app;
11637      var peer = adapter.getDevice(&quot;35:F4:59:D1:7A:03&quot;, gotDeviceInfo);
11638  }
11639
11640  function healthRegisterError(e) {
11641      console.log(&quot;Failed to register application: &quot; + e.message);
11642  };
11643
11644  healthProfileHandler.registerSinkApplication(4100, &quot;testSinkApp&quot;, healthRegisterSuccess, healthRegisterError);
11645  </Code>
11646         </descriptive>
11647         <Type type="void"/>
11648         <ArgumentList>
11649           <Argument name="peer">
11650             <descriptive>
11651                 <description><p>
11652  The remote device which acts as the Source role. 
11653                 </p></description>
11654             </descriptive>
11655             <Type name="BluetoothDevice"/>
11656           </Argument>
11657           <Argument name="application">
11658             <descriptive>
11659                 <description><p>
11660  The registered application for the Sink role.
11661                 </p></description>
11662             </descriptive>
11663             <Type name="BluetoothHealthApplication"/>
11664           </Argument>
11665           <Argument name="successCallback">
11666             <descriptive>
11667                 <description><p>
11668  The method to invoke when a connection is established successfully.
11669                 </p></description>
11670             </descriptive>
11671             <Type name="BluetoothHealthChannelSuccessCallback"/>
11672           </Argument>
11673           <Argument optional="optional" name="errorCallback">
11674             <descriptive>
11675                 <description><p>
11676  The method to invoke when an error occurs.
11677                 </p></description>
11678             </descriptive>
11679             <Type name="ErrorCallback" nullable="nullable"/>
11680           </Argument>
11681         </ArgumentList>
11682         <Raises>
11683           <RaiseException name="WebAPIException">
11684             <descriptive>
11685                 <description><p>
11686  with error type SecurityError, if the application does not have the privilege to call this method.
11687                 </p></description>
11688                 <description><p>
11689  with error type TypeMismatchError, if any of the input parameter is not compatible with the expected type for that parameter.
11690                 </p></description>
11691                 <description><p>
11692  with error type NotSupportedError, if this feature is not supported.
11693                 </p></description>
11694             </descriptive>
11695           </RaiseException>
11696         </Raises>
11697       </Operation>
11698     </Interface>
11699     <Interface name="BluetoothHealthApplication" id="::Bluetooth::BluetoothHealthApplication">
11700       <webidl>    [NoInterfaceObject] interface BluetoothHealthApplication {
11701
11702         readonly attribute unsigned short dataType;
11703                 
11704         readonly attribute DOMString name;
11705
11706         [TreatNonCallableAsNull] attribute <ref>BluetoothHealthChannelSuccessCallback</ref>? onconnect raises(<ref>WebAPIException</ref>);
11707                 
11708         void unregister(optional <ref>SuccessCallback</ref>? successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
11709                 
11710     };</webidl>
11711       <descriptive>
11712           <brief>
11713  This interface represents the Bluetooth health application.
11714           </brief>
11715           <version>
11716  2.2
11717           </version>
11718       </descriptive>
11719       <ExtendedAttributeList>
11720         <ExtendedAttribute name="NoInterfaceObject">
11721           <webidl>NoInterfaceObject</webidl>
11722         </ExtendedAttribute>
11723       </ExtendedAttributeList>
11724       <Attribute readonly="readonly" name="dataType" id="::Bluetooth::BluetoothHealthApplication::dataType">
11725         <webidl>        readonly attribute unsigned short dataType;</webidl>
11726         <descriptive>
11727             <brief>
11728  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.
11729             </brief>
11730             <version>
11731  2.2
11732             </version>
11733         </descriptive>
11734         <Type type="unsigned short"/>
11735       </Attribute>
11736       <Attribute readonly="readonly" name="name" id="::Bluetooth::BluetoothHealthApplication::name">
11737         <webidl>        readonly attribute DOMString name;</webidl>
11738         <descriptive>
11739             <brief>
11740  The friendly name associated with sink application.
11741             </brief>
11742             <version>
11743  2.2
11744             </version>
11745         </descriptive>
11746         <Type type="DOMString"/>
11747       </Attribute>
11748       <Attribute name="onconnect" id="::Bluetooth::BluetoothHealthApplication::onconnect">
11749         <webidl>        [TreatNonCallableAsNull] attribute <ref>BluetoothHealthChannelSuccessCallback</ref>? onconnect raises(<ref>WebAPIException</ref>);</webidl>
11750         <descriptive>
11751             <brief>
11752  The callback invoked when a health device is connected through this application.
11753 By default, this attribute is set to null.
11754             </brief>
11755             <version>
11756  2.2
11757             </version>
11758         </descriptive>
11759         <ExtendedAttributeList>
11760           <ExtendedAttribute name="TreatNonCallableAsNull">
11761             <webidl>TreatNonCallableAsNull</webidl>
11762           </ExtendedAttribute>
11763         </ExtendedAttributeList>
11764         <Type name="BluetoothHealthChannelSuccessCallback" nullable="nullable"/>
11765         <Raises>
11766           <RaiseException name="WebAPIException">
11767             <descriptive>
11768                 <description><p>
11769  with error type TypeMismatchError, if an input attribute is not compatible with the expected type for this attribute.
11770                 </p></description>
11771             </descriptive>
11772           </RaiseException>
11773         </Raises>
11774       </Attribute>
11775       <Operation name="unregister" id="::Bluetooth::BluetoothHealthApplication::unregister">
11776         <webidl>        void unregister(optional <ref>SuccessCallback</ref>? successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
11777         <descriptive>
11778             <brief>
11779  Unregisters this application.
11780             </brief>
11781            <description>
11782             <p>
11783 The ErrorCallback is launched with these error types:
11784             </p>
11785             <ul>
11786               <li>
11787  ServiceNotAvailableError - If a Bluetooth device is turned off.              </li>
11788               <li>
11789  UnknownError - If any other error occurs.              </li>
11790             </ul>
11791            </description>
11792             <version>
11793  2.2
11794             </version>
11795             <privilegelevel>
11796  public
11797             </privilegelevel>
11798             <privilege>
11799  http://tizen.org/privilege/bluetooth.health
11800             </privilege>
11801             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
11802  var healthProfileHandler = adapter.getBluetoothProfileHandler(&quot;HEALTH&quot;);
11803  var healthApp = null;
11804
11805  function healthRegisterSuccess(app) {
11806      console.log(&quot;Registered application: &quot; + app.name);
11807      healthApp = app;
11808      healthApp.onconnect = function(channel) {
11809          console.log(&quot;Connected!!&quot;);
11810      };
11811  }
11812
11813  function healthRegisterError(e) {
11814      console.log(&quot;Failed to register application: &quot; + e.message);
11815  };
11816
11817  function startSink() {
11818      try {
11819          healthProfileHandler.registerSinkApplication(4100, &quot;testSinkApp&quot;, healthRegisterSuccess, healthRegisterError);
11820      } catch(e) {
11821          console.log(&quot;Error: &quot; + e.message);
11822      }
11823  }
11824
11825  function stopSink() {
11826      try {
11827          if(healthApp != null) {
11828              healthApp.unregister(function() {
11829                  healthApp = null;
11830                  console.log(&quot;Health application is unregistered.&quot;);
11831              },
11832              function(e) {
11833                  console.log (&quot;Error: &quot; + e.message);
11834              });
11835          }
11836      } catch(err) {
11837          console.log(&quot;Error: &quot; + err.message);
11838      }
11839  }
11840  </Code>
11841         </descriptive>
11842         <Type type="void"/>
11843         <ArgumentList>
11844           <Argument optional="optional" name="successCallback">
11845             <descriptive>
11846                 <description><p>
11847  The method to invoke when a sink application is registered successfully.
11848                 </p></description>
11849             </descriptive>
11850             <Type name="SuccessCallback" nullable="nullable"/>
11851           </Argument>
11852           <Argument optional="optional" name="errorCallback">
11853             <descriptive>
11854                 <description><p>
11855  The method to invoke when an error occurs.
11856                 </p></description>
11857             </descriptive>
11858             <Type name="ErrorCallback" nullable="nullable"/>
11859           </Argument>
11860         </ArgumentList>
11861         <Raises>
11862           <RaiseException name="WebAPIException">
11863             <descriptive>
11864                 <description><p>
11865  with error type SecurityError, if the application does not have the privilege to call this method.
11866                 </p></description>
11867                 <description><p>
11868  with error type TypeMismatchError, if any of the input parameter is not compatible with the expected type for that parameter.
11869                 </p></description>
11870                 <description><p>
11871  with error type NotSupportedError, if this feature is not supported.
11872                 </p></description>
11873             </descriptive>
11874           </RaiseException>
11875         </Raises>
11876       </Operation>
11877     </Interface>
11878     <Interface name="BluetoothHealthChannel" id="::Bluetooth::BluetoothHealthChannel">
11879       <webidl>    [NoInterfaceObject] interface BluetoothHealthChannel {
11880
11881         readonly attribute <ref>BluetoothDevice</ref> peer;
11882                 
11883         readonly attribute <ref>BluetoothHealthChannelType</ref> channelType;
11884
11885         readonly attribute <ref>BluetoothHealthApplication</ref> application;
11886                 
11887         readonly attribute boolean isConnected;
11888
11889         void close() raises(<ref>WebAPIException</ref>);
11890
11891         unsigned long sendData(byte[] data) raises(<ref>WebAPIException</ref>);
11892
11893         void setListener(<ref>BluetoothHealthChannelChangeCallback</ref> listener) raises(<ref>WebAPIException</ref>); 
11894  
11895         void unsetListener() raises(<ref>WebAPIException</ref>);
11896                 
11897     };</webidl>
11898       <descriptive>
11899           <brief>
11900  This interface represents the Bluetooth health channel.
11901           </brief>
11902           <version>
11903  2.2
11904           </version>
11905       </descriptive>
11906       <ExtendedAttributeList>
11907         <ExtendedAttribute name="NoInterfaceObject">
11908           <webidl>NoInterfaceObject</webidl>
11909         </ExtendedAttribute>
11910       </ExtendedAttributeList>
11911       <Attribute readonly="readonly" name="peer" id="::Bluetooth::BluetoothHealthChannel::peer">
11912         <webidl>        readonly attribute <ref>BluetoothDevice</ref> peer;</webidl>
11913         <descriptive>
11914             <brief>
11915  The remote device to which this channel is connected.
11916             </brief>
11917             <version>
11918  2.2
11919             </version>
11920         </descriptive>
11921         <Type name="BluetoothDevice"/>
11922       </Attribute>
11923       <Attribute readonly="readonly" name="channelType" id="::Bluetooth::BluetoothHealthChannel::channelType">
11924         <webidl>        readonly attribute <ref>BluetoothHealthChannelType</ref> channelType;</webidl>
11925         <descriptive>
11926             <brief>
11927  The type of of this channel.
11928             </brief>
11929             <version>
11930  2.2
11931             </version>
11932         </descriptive>
11933         <Type name="BluetoothHealthChannelType"/>
11934       </Attribute>
11935       <Attribute readonly="readonly" name="application" id="::Bluetooth::BluetoothHealthChannel::application">
11936         <webidl>        readonly attribute <ref>BluetoothHealthApplication</ref> application;</webidl>
11937         <descriptive>
11938             <brief>
11939  The health application which is used to communicate with the remote device.
11940             </brief>
11941             <version>
11942  2.2
11943             </version>
11944         </descriptive>
11945         <Type name="BluetoothHealthApplication"/>
11946       </Attribute>
11947       <Attribute readonly="readonly" name="isConnected" id="::Bluetooth::BluetoothHealthChannel::isConnected">
11948         <webidl>        readonly attribute boolean isConnected;</webidl>
11949         <descriptive>
11950             <brief>
11951  An attrbitue to check whether any remote device is connected or not.
11952             </brief>
11953             <version>
11954  2.2
11955             </version>
11956         </descriptive>
11957         <Type type="boolean"/>
11958       </Attribute>
11959       <Operation name="close" id="::Bluetooth::BluetoothHealthChannel::close">
11960         <webidl>        void close() raises(<ref>WebAPIException</ref>);</webidl>
11961         <descriptive>
11962             <brief>
11963  Close the connected channel.
11964 <em>BluetoothHealthChannel.isConnected</em> is changed to <var>false</var> and <em>BluetoothHealthChannelChangeCallback.onclose</em> is invoked when this channel is closed successfully.
11965             </brief>
11966             <version>
11967  2.2
11968             </version>
11969             <privilegelevel>
11970  public
11971             </privilegelevel>
11972             <privilege>
11973  http://tizen.org/privilege/bluetooth.health
11974             </privilege>
11975             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
11976  var healthProfileHandler = adapter.getBluetoothProfileHandler(&quot;HEALTH&quot;);
11977  
11978  function healthRegisterSuccess(app) {
11979      console.log(&quot;Registered application: &quot; + app.name);
11980      app.onconnect = function(channel) {;
11981          console.log(&quot;Health device is connected&quot;);
11982          channel.close();
11983      }
11984  }
11985
11986  function healthRegisterError(e) {
11987      console.log(&quot;Failed to register application: &quot; + e.message);
11988  };
11989
11990  healthProfileHandler.registerSinkApplication(4100, &quot;testSinkApp&quot;, healthRegisterSuccess, healthRegisterError);
11991  </Code>
11992         </descriptive>
11993         <Type type="void"/>
11994         <ArgumentList/>
11995         <Raises>
11996           <RaiseException name="WebAPIException">
11997             <descriptive>
11998                 <description><p>
11999  with error type SecurityError, if the application does not have the privilege to call this method.
12000                 </p></description>
12001                 <description><p>
12002  with error type ServiceNotAvailableError - If a Bluetooth device is turned off.
12003                 </p></description>
12004                 <description><p>
12005  with error type UnknownError, if any other error occurs.
12006                 </p></description>
12007                 <description><p>
12008  with error type NotSupportedError, if this feature is not supported.
12009                 </p></description>
12010             </descriptive>
12011           </RaiseException>
12012         </Raises>
12013       </Operation>
12014       <Operation name="sendData" id="::Bluetooth::BluetoothHealthChannel::sendData">
12015         <webidl>        unsigned long sendData(byte[] data) raises(<ref>WebAPIException</ref>);</webidl>
12016         <descriptive>
12017             <brief>
12018  Send data and returns the number of bytes actually written.
12019             </brief>
12020             <version>
12021  2.2
12022             </version>
12023             <privilegelevel>
12024  public
12025             </privilegelevel>
12026             <privilege>
12027  http://tizen.org/privilege/bluetooth.health
12028             </privilege>
12029             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
12030  var healthProfileHandler = adapter.getBluetoothProfileHandler(&quot;HEALTH&quot;);
12031
12032  function healthRegisterSuccess(app) {
12033      console.log(&quot;Registered application: &quot; + app.name);
12034      app.onconnect = function(channel) {
12035          console.log(&quot;Health device is connected&quot;);
12036          channel.sendData(dataToSend);
12037      }
12038  }
12039
12040  function healthRegisterError(e) {
12041      console.log(&quot;Failed to register application: &quot; + e.message);
12042  };
12043
12044  healthProfileHandler.registerSinkApplication(4100, &quot;testSinkApp&quot;, healthRegisterSuccess, healthRegisterError);
12045  </Code>
12046         </descriptive>
12047         <Type type="unsigned long">
12048           <descriptive>
12049               <description><p>
12050  unsigned long The number of bytes actually sent.
12051               </p></description>
12052           </descriptive>
12053         </Type>
12054         <ArgumentList>
12055           <Argument name="data">
12056             <descriptive>
12057                 <description><p>
12058  The data to send.
12059                 </p></description>
12060             </descriptive>
12061             <Type type="array">
12062               <Type type="byte"/>
12063             </Type>
12064           </Argument>
12065         </ArgumentList>
12066         <Raises>
12067           <RaiseException name="WebAPIException">
12068             <descriptive>
12069                 <description><p>
12070  with error type SecurityError, if the application does not have the privilege to call this method.
12071                 </p></description>
12072                 <description><p>
12073  with error type ServiceNotAvailableError - If a Bluetooth device is turned off.
12074                 </p></description>
12075                 <description><p>
12076  with error type TypeMismatchError, if any of the input parameter is not compatible with the expected type for that parameter.
12077                 </p></description>
12078                 <description><p>
12079  with error type UnknownError, if any other error occurs.
12080                 </p></description>
12081                 <description><p>
12082  with error type NotSupportedError, if this feature is not supported.
12083                 </p></description>
12084             </descriptive>
12085           </RaiseException>
12086         </Raises>
12087       </Operation>
12088       <Operation name="setListener" id="::Bluetooth::BluetoothHealthChannel::setListener">
12089         <webidl>        void setListener(<ref>BluetoothHealthChannelChangeCallback</ref> listener) raises(<ref>WebAPIException</ref>);</webidl>
12090         <descriptive>
12091             <brief>
12092  Sets the listener to receive notifications.
12093             </brief>
12094             <version>
12095  2.2
12096             </version>
12097             <privilegelevel>
12098  public
12099             </privilegelevel>
12100             <privilege>
12101  http://tizen.org/privilege/bluetooth.health
12102             </privilege>
12103             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
12104  var healthProfileHandler = adapter.getBluetoothProfileHandler(&quot;HEALTH&quot;);
12105
12106  var channelCallback = {
12107      onmessage: function(data) {
12108          console.log(&quot;data is received&quot;)
12109      },
12110      onclose: function() {
12111          console.log(&quot;channel is closed&quot;);
12112      }
12113  };
12114
12115  function healthRegisterSuccess(app) {
12116      console.log(&quot;Registered application: &quot; + app.name);
12117      app.onconnect = function(channel) {;
12118          console.log(&quot;Health device is connected&quot;);
12119          channel.setListener(channelCallback);
12120      }
12121  }
12122
12123  function healthRegisterError(e) {
12124      console.log(&quot;Failed to register application: &quot; + e.message);
12125  };
12126
12127  healthProfileHandler.registerSinkApplication(4100, &quot;testSinkApp&quot;, healthRegisterSuccess, healthRegisterError);
12128  </Code>
12129         </descriptive>
12130         <Type type="void"/>
12131         <ArgumentList>
12132           <Argument name="listener">
12133             <descriptive>
12134                 <description><p>
12135  The event listener of Bluetooth health channel.
12136                 </p></description>
12137             </descriptive>
12138             <Type name="BluetoothHealthChannelChangeCallback"/>
12139           </Argument>
12140         </ArgumentList>
12141         <Raises>
12142           <RaiseException name="WebAPIException">
12143             <descriptive>
12144                 <description><p>
12145  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
12146                 </p></description>
12147                 <description><p>
12148  with error type SecurityError, if the application does not have the privilege to call this method.
12149                 </p></description>
12150                 <description><p>
12151  with error type UnknownError, if any other error occurs.
12152                 </p></description>
12153             </descriptive>
12154           </RaiseException>
12155         </Raises>
12156       </Operation>
12157       <Operation name="unsetListener" id="::Bluetooth::BluetoothHealthChannel::unsetListener">
12158         <webidl>        void unsetListener() raises(<ref>WebAPIException</ref>);</webidl>
12159         <descriptive>
12160             <brief>
12161  Unsets the listener, so stop receiving notifications.
12162             </brief>
12163             <version>
12164  2.2
12165             </version>
12166             <privilegelevel>
12167  public
12168             </privilegelevel>
12169             <privilege>
12170  http://tizen.org/privilege/bluetooth.health
12171             </privilege>
12172             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
12173  var healthProfileHandler = adapter.getBluetoothProfileHandler(&quot;HEALTH&quot;);
12174  var connectedChannel = null;
12175
12176  var channelCallback = {
12177      onmessage: function(data) {
12178          console.log(&quot;data is received&quot;)
12179      },
12180      onclose: function() {
12181          console.log(&quot;channel is closed&quot;);
12182          connectedChannel.unsetListener();
12183      }
12184  };
12185
12186  function healthRegisterSuccess(app) {
12187      console.log(&quot;Registered application: &quot; + app.name);
12188      app.onconnect = function(channel) {;
12189          console.log(&quot;Health device is connected&quot;);
12190          connectedChannel = channel;
12191          connectedChannel.setListener(channelCallback);
12192      }
12193  }
12194
12195  function healthRegisterError(e) {
12196      console.log(&quot;Failed to register application: &quot; + e.message);
12197  };
12198
12199  healthProfileHandler.registerSinkApplication(4100, &quot;testSinkApp&quot;, healthRegisterSuccess, healthRegisterError);
12200  </Code>
12201         </descriptive>
12202         <Type type="void"/>
12203         <ArgumentList/>
12204         <Raises>
12205           <RaiseException name="WebAPIException">
12206             <descriptive>
12207                 <description><p>
12208  with error type SecurityError, if the application does not have the privilege to call this method.
12209                 </p></description>
12210                 <description><p>
12211  with error type UnknownError, if any other error occurs.
12212                 </p></description>
12213             </descriptive>
12214           </RaiseException>
12215         </Raises>
12216       </Operation>
12217     </Interface>
12218     <Interface name="BluetoothAdapterChangeCallback" id="::Bluetooth::BluetoothAdapterChangeCallback">
12219       <webidl>    [Callback, NoInterfaceObject] interface BluetoothAdapterChangeCallback {
12220         void onstatechanged(boolean powered);
12221         void onnamechanged(DOMString name);
12222         void onvisibilitychanged(boolean visible);
12223     };</webidl>
12224       <descriptive>
12225           <brief>
12226  This interface specifies a set of methods to be invoked when the changes of Bluetooth adapter occur.
12227           </brief>
12228           <version>
12229  2.2
12230           </version>
12231       </descriptive>
12232       <ExtendedAttributeList>
12233         <ExtendedAttribute name="Callback">
12234           <webidl>Callback</webidl>
12235         </ExtendedAttribute>
12236         <ExtendedAttribute name="NoInterfaceObject">
12237           <webidl> NoInterfaceObject</webidl>
12238         </ExtendedAttribute>
12239       </ExtendedAttributeList>
12240       <Operation name="onstatechanged" id="::Bluetooth::BluetoothAdapterChangeCallback::onstatechanged">
12241         <webidl>        void onstatechanged(boolean powered);</webidl>
12242         <descriptive>
12243             <brief>
12244  The method to be invoked when the power state is changed.
12245             </brief>
12246             <version>
12247  2.2
12248             </version>
12249         </descriptive>
12250         <Type type="void"/>
12251         <ArgumentList>
12252           <Argument name="powered">
12253             <descriptive>
12254                 <description><p>
12255  The power state of local Bluetooth: <var>true</var> means power-on, <var>false</var> means power-off.
12256                 </p></description>
12257             </descriptive>
12258             <Type type="boolean"/>
12259           </Argument>
12260         </ArgumentList>
12261       </Operation>
12262       <Operation name="onnamechanged" id="::Bluetooth::BluetoothAdapterChangeCallback::onnamechanged">
12263         <webidl>        void onnamechanged(DOMString name);</webidl>
12264         <descriptive>
12265             <brief>
12266  The method to be invoked when the name is changed.
12267             </brief>
12268             <version>
12269  2.2
12270             </version>
12271         </descriptive>
12272         <Type type="void"/>
12273         <ArgumentList>
12274           <Argument name="name">
12275             <descriptive>
12276                 <description><p>
12277  The name of local Bluetooth.
12278                 </p></description>
12279             </descriptive>
12280             <Type type="DOMString"/>
12281           </Argument>
12282         </ArgumentList>
12283       </Operation>
12284       <Operation name="onvisibilitychanged" id="::Bluetooth::BluetoothAdapterChangeCallback::onvisibilitychanged">
12285         <webidl>        void onvisibilitychanged(boolean visible);</webidl>
12286         <descriptive>
12287             <brief>
12288  The method to be invoked when the visibility is changed.
12289             </brief>
12290             <version>
12291  2.2
12292             </version>
12293         </descriptive>
12294         <Type type="void"/>
12295         <ArgumentList>
12296           <Argument name="visible">
12297             <descriptive>
12298                 <description><p>
12299  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.
12300                 </p></description>
12301             </descriptive>
12302             <Type type="boolean"/>
12303           </Argument>
12304         </ArgumentList>
12305       </Operation>
12306     </Interface>
12307     <Interface name="BluetoothDeviceSuccessCallback" id="::Bluetooth::BluetoothDeviceSuccessCallback">
12308       <webidl>    [Callback=FunctionOnly, NoInterfaceObject] interface BluetoothDeviceSuccessCallback {
12309         void onsuccess(<ref>BluetoothDevice</ref> device);
12310     };</webidl>
12311       <descriptive>
12312           <brief>
12313  This interface implements the success callback <em>BluetoothAdapter.getDevice() </em>and <em>BluetoothAdapter.createBonding()</em>.
12314           </brief>
12315           <version>
12316  1.0
12317           </version>
12318       </descriptive>
12319       <ExtendedAttributeList>
12320         <ExtendedAttribute name="Callback" value="FunctionOnly">
12321           <webidl>Callback</webidl>
12322         </ExtendedAttribute>
12323         <ExtendedAttribute name="NoInterfaceObject">
12324           <webidl> NoInterfaceObject</webidl>
12325         </ExtendedAttribute>
12326       </ExtendedAttributeList>
12327       <Operation name="onsuccess" id="::Bluetooth::BluetoothDeviceSuccessCallback::onsuccess">
12328         <webidl>        void onsuccess(<ref>BluetoothDevice</ref> device);</webidl>
12329         <descriptive>
12330             <brief>
12331  The method to be invoked on success.
12332             </brief>
12333             <version>
12334  1.0
12335             </version>
12336         </descriptive>
12337         <Type type="void"/>
12338         <ArgumentList>
12339           <Argument name="device">
12340             <descriptive>
12341                 <description><p>
12342  The BluetoothDevice object.
12343                 </p></description>
12344             </descriptive>
12345             <Type name="BluetoothDevice"/>
12346           </Argument>
12347         </ArgumentList>
12348       </Operation>
12349     </Interface>
12350     <Interface name="BluetoothDeviceArraySuccessCallback" id="::Bluetooth::BluetoothDeviceArraySuccessCallback">
12351       <webidl>    [Callback=FunctionOnly, NoInterfaceObject] interface BluetoothDeviceArraySuccessCallback {
12352         void onsuccess(<ref>BluetoothDevice</ref>[] devices);
12353     };</webidl>
12354       <descriptive>
12355           <brief>
12356  The success callback for <em>BluetoothAdapter.getKnownDevices()</em>.
12357           </brief>
12358           <version>
12359  1.0
12360           </version>
12361       </descriptive>
12362       <ExtendedAttributeList>
12363         <ExtendedAttribute name="Callback" value="FunctionOnly">
12364           <webidl>Callback</webidl>
12365         </ExtendedAttribute>
12366         <ExtendedAttribute name="NoInterfaceObject">
12367           <webidl> NoInterfaceObject</webidl>
12368         </ExtendedAttribute>
12369       </ExtendedAttributeList>
12370       <Operation name="onsuccess" id="::Bluetooth::BluetoothDeviceArraySuccessCallback::onsuccess">
12371         <webidl>        void onsuccess(<ref>BluetoothDevice</ref>[] devices);</webidl>
12372         <descriptive>
12373             <brief>
12374  The method to be invoked when device information is ready.
12375             </brief>
12376             <version>
12377  1.0
12378             </version>
12379         </descriptive>
12380         <Type type="void"/>
12381         <ArgumentList>
12382           <Argument name="devices">
12383             <descriptive>
12384                 <description><p>
12385  List of devices known to local Bluetooth adapter. Each element is a BluetoothDevice.
12386                 </p></description>
12387             </descriptive>
12388             <Type type="array">
12389               <Type name="BluetoothDevice"/>
12390             </Type>
12391           </Argument>
12392         </ArgumentList>
12393       </Operation>
12394     </Interface>
12395     <Interface name="BluetoothDiscoverDevicesSuccessCallback" id="::Bluetooth::BluetoothDiscoverDevicesSuccessCallback">
12396       <webidl>    [Callback, NoInterfaceObject] interface BluetoothDiscoverDevicesSuccessCallback {
12397         void onstarted();
12398         void ondevicefound(<ref>BluetoothDevice</ref> device);
12399         void ondevicedisappeared(<ref>BluetoothAddress</ref> address);
12400         void onfinished(<ref>BluetoothDevice</ref>[] foundDevices);
12401     };</webidl>
12402       <descriptive>
12403           <brief>
12404  The success callback for <em>BluetoothAdapter.discoverDevices()</em>.
12405           </brief>
12406           <version>
12407  1.0
12408           </version>
12409       </descriptive>
12410       <ExtendedAttributeList>
12411         <ExtendedAttribute name="Callback">
12412           <webidl>Callback</webidl>
12413         </ExtendedAttribute>
12414         <ExtendedAttribute name="NoInterfaceObject">
12415           <webidl> NoInterfaceObject</webidl>
12416         </ExtendedAttribute>
12417       </ExtendedAttributeList>
12418       <Operation name="onstarted" id="::Bluetooth::BluetoothDiscoverDevicesSuccessCallback::onstarted">
12419         <webidl>        void onstarted();</webidl>
12420         <descriptive>
12421             <brief>
12422  The method to be invoked at the beginning of a device discovery process for finding the nearby Bluetooth device.
12423             </brief>
12424             <version>
12425  1.0
12426             </version>
12427         </descriptive>
12428         <Type type="void"/>
12429         <ArgumentList/>
12430       </Operation>
12431       <Operation name="ondevicefound" id="::Bluetooth::BluetoothDiscoverDevicesSuccessCallback::ondevicefound">
12432         <webidl>        void ondevicefound(<ref>BluetoothDevice</ref> device);</webidl>
12433         <descriptive>
12434             <brief>
12435  The method to be invoked when a new device is discovered in the process of inquiry/discovery.
12436             </brief>
12437             <version>
12438  1.0
12439             </version>
12440         </descriptive>
12441         <Type type="void"/>
12442         <ArgumentList>
12443           <Argument name="device">
12444             <descriptive>
12445                 <description><p>
12446  The found device.
12447                 </p></description>
12448             </descriptive>
12449             <Type name="BluetoothDevice"/>
12450           </Argument>
12451         </ArgumentList>
12452       </Operation>
12453       <Operation name="ondevicedisappeared" id="::Bluetooth::BluetoothDiscoverDevicesSuccessCallback::ondevicedisappeared">
12454         <webidl>        void ondevicedisappeared(<ref>BluetoothAddress</ref> address);</webidl>
12455         <descriptive>
12456             <brief>
12457  The method to be invoked when a device is lost from proximity.
12458 After that, this device is no longer visible.
12459             </brief>
12460             <version>
12461  1.0
12462             </version>
12463         </descriptive>
12464         <Type type="void"/>
12465         <ArgumentList>
12466           <Argument name="address">
12467             <descriptive>
12468                 <description><p>
12469  The address of the device that is no longer in range or visible.
12470                 </p></description>
12471             </descriptive>
12472             <Type name="BluetoothAddress"/>
12473           </Argument>
12474         </ArgumentList>
12475       </Operation>
12476       <Operation name="onfinished" id="::Bluetooth::BluetoothDiscoverDevicesSuccessCallback::onfinished">
12477         <webidl>        void onfinished(<ref>BluetoothDevice</ref>[] foundDevices);</webidl>
12478         <descriptive>
12479             <brief>
12480  The method to be invoked when the device discovery process has finished.
12481             </brief>
12482             <version>
12483  1.0
12484             </version>
12485         </descriptive>
12486         <Type type="void"/>
12487         <ArgumentList>
12488           <Argument name="foundDevices">
12489             <descriptive>
12490                 <description><p>
12491  The array of devices found in this discovery session.                         </p></description>
12492             </descriptive>
12493             <Type type="array">
12494               <Type name="BluetoothDevice"/>
12495             </Type>
12496           </Argument>
12497         </ArgumentList>
12498       </Operation>
12499     </Interface>
12500     <Interface name="BluetoothSocketSuccessCallback" id="::Bluetooth::BluetoothSocketSuccessCallback">
12501       <webidl>    [Callback=FunctionOnly, NoInterfaceObject] interface BluetoothSocketSuccessCallback {
12502         void onsuccess(<ref>BluetoothSocket</ref> socket);
12503     };</webidl>
12504       <descriptive>
12505           <brief>
12506  The success method for <em>BluetoothDevice.connectToServiceByUUID()</em>.
12507           </brief>
12508           <version>
12509  1.0
12510           </version>
12511       </descriptive>
12512       <ExtendedAttributeList>
12513         <ExtendedAttribute name="Callback" value="FunctionOnly">
12514           <webidl>Callback</webidl>
12515         </ExtendedAttribute>
12516         <ExtendedAttribute name="NoInterfaceObject">
12517           <webidl> NoInterfaceObject</webidl>
12518         </ExtendedAttribute>
12519       </ExtendedAttributeList>
12520       <Operation name="onsuccess" id="::Bluetooth::BluetoothSocketSuccessCallback::onsuccess">
12521         <webidl>        void onsuccess(<ref>BluetoothSocket</ref> socket);</webidl>
12522         <descriptive>
12523             <brief>
12524  The method to be invoked when the connection to a service is ready.
12525             </brief>
12526             <version>
12527  1.0
12528             </version>
12529         </descriptive>
12530         <Type type="void"/>
12531         <ArgumentList>
12532           <Argument name="socket">
12533             <descriptive>
12534                 <description><p>
12535  The socket to connect to the specified service on a remote device.
12536                 </p></description>
12537             </descriptive>
12538             <Type name="BluetoothSocket"/>
12539           </Argument>
12540         </ArgumentList>
12541       </Operation>
12542     </Interface>
12543     <Interface name="BluetoothServiceSuccessCallback" id="::Bluetooth::BluetoothServiceSuccessCallback">
12544       <webidl>    [Callback=FunctionOnly, NoInterfaceObject] interface BluetoothServiceSuccessCallback {
12545         void onsuccess(<ref>BluetoothServiceHandler</ref> handler);
12546     };</webidl>
12547       <descriptive>
12548           <brief>
12549  This interface implements the success callback for <em>BluetoothAdapter.registerRFCOMMServiceByUUID()</em>.
12550           </brief>
12551           <version>
12552  1.0
12553           </version>
12554       </descriptive>
12555       <ExtendedAttributeList>
12556         <ExtendedAttribute name="Callback" value="FunctionOnly">
12557           <webidl>Callback</webidl>
12558         </ExtendedAttribute>
12559         <ExtendedAttribute name="NoInterfaceObject">
12560           <webidl> NoInterfaceObject</webidl>
12561         </ExtendedAttribute>
12562       </ExtendedAttributeList>
12563       <Operation name="onsuccess" id="::Bluetooth::BluetoothServiceSuccessCallback::onsuccess">
12564         <webidl>        void onsuccess(<ref>BluetoothServiceHandler</ref> handler);</webidl>
12565         <descriptive>
12566             <brief>
12567  The method to be invoked when registering a service with the local device is successful.
12568             </brief>
12569             <version>
12570  1.0
12571             </version>
12572         </descriptive>
12573         <Type type="void"/>
12574         <ArgumentList>
12575           <Argument name="handler">
12576             <descriptive>
12577                 <description><p>
12578  Bluetooth service handler.
12579                 </p></description>
12580             </descriptive>
12581             <Type name="BluetoothServiceHandler"/>
12582           </Argument>
12583         </ArgumentList>
12584       </Operation>
12585     </Interface>
12586     <Interface name="BluetoothHealthApplicationSuccessCallback" id="::Bluetooth::BluetoothHealthApplicationSuccessCallback">
12587       <webidl>    [Callback=FunctionOnly, NoInterfaceObject] interface BluetoothHealthApplicationSuccessCallback {
12588         void onsuccess(<ref>BluetoothHealthApplication</ref> application);
12589     };</webidl>
12590       <descriptive>
12591           <brief>
12592  The success method for <em>BluetoothHealthProfileHandler.registerSinkApplication()</em>.
12593           </brief>
12594           <version>
12595  2.2
12596           </version>
12597       </descriptive>
12598       <ExtendedAttributeList>
12599         <ExtendedAttribute name="Callback" value="FunctionOnly">
12600           <webidl>Callback</webidl>
12601         </ExtendedAttribute>
12602         <ExtendedAttribute name="NoInterfaceObject">
12603           <webidl> NoInterfaceObject</webidl>
12604         </ExtendedAttribute>
12605       </ExtendedAttributeList>
12606       <Operation name="onsuccess" id="::Bluetooth::BluetoothHealthApplicationSuccessCallback::onsuccess">
12607         <webidl>        void onsuccess(<ref>BluetoothHealthApplication</ref> application);</webidl>
12608         <descriptive>
12609             <brief>
12610  The method to be invoked when the application is registered successfully.
12611             </brief>
12612             <version>
12613  2.2
12614             </version>
12615         </descriptive>
12616         <Type type="void"/>
12617         <ArgumentList>
12618           <Argument name="application">
12619             <descriptive>
12620                 <description><p>
12621  The registered health application.
12622                 </p></description>
12623             </descriptive>
12624             <Type name="BluetoothHealthApplication"/>
12625           </Argument>
12626         </ArgumentList>
12627       </Operation>
12628     </Interface>
12629     <Interface name="BluetoothHealthChannelSuccessCallback" id="::Bluetooth::BluetoothHealthChannelSuccessCallback">
12630       <webidl>    [Callback=FunctionOnly, NoInterfaceObject] interface BluetoothHealthChannelSuccessCallback {
12631         void onsuccess(<ref>BluetoothHealthChannel</ref> channel);
12632     };</webidl>
12633       <descriptive>
12634           <brief>
12635  The success method for <em>BluetoothHealthProfileHandler.connectToSource()</em> and the event callback for <em>BluetoothHealthApplication.onconnect</em>.
12636           </brief>
12637           <version>
12638  2.2
12639           </version>
12640       </descriptive>
12641       <ExtendedAttributeList>
12642         <ExtendedAttribute name="Callback" value="FunctionOnly">
12643           <webidl>Callback</webidl>
12644         </ExtendedAttribute>
12645         <ExtendedAttribute name="NoInterfaceObject">
12646           <webidl> NoInterfaceObject</webidl>
12647         </ExtendedAttribute>
12648       </ExtendedAttributeList>
12649       <Operation name="onsuccess" id="::Bluetooth::BluetoothHealthChannelSuccessCallback::onsuccess">
12650         <webidl>        void onsuccess(<ref>BluetoothHealthChannel</ref> channel);</webidl>
12651         <descriptive>
12652             <brief>
12653  The method to be invoked when a connection is established.
12654             </brief>
12655             <version>
12656  2.2
12657             </version>
12658         </descriptive>
12659         <Type type="void"/>
12660         <ArgumentList>
12661           <Argument name="channel">
12662             <descriptive>
12663                 <description><p>
12664  The connected health channel.
12665                 </p></description>
12666             </descriptive>
12667             <Type name="BluetoothHealthChannel"/>
12668           </Argument>
12669         </ArgumentList>
12670       </Operation>
12671     </Interface>
12672     <Interface name="BluetoothHealthChannelChangeCallback" id="::Bluetooth::BluetoothHealthChannelChangeCallback">
12673       <webidl>    [Callback, NoInterfaceObject] interface BluetoothHealthChannelChangeCallback {
12674         void onmessage(byte[] data);
12675                 
12676         void onclose(); 
12677     };</webidl>
12678       <descriptive>
12679           <brief>
12680  This interface specifies a set of methods to be invoked when the changes of heath channel occur.
12681           </brief>
12682           <version>
12683  2.2
12684           </version>
12685       </descriptive>
12686       <ExtendedAttributeList>
12687         <ExtendedAttribute name="Callback">
12688           <webidl>Callback</webidl>
12689         </ExtendedAttribute>
12690         <ExtendedAttribute name="NoInterfaceObject">
12691           <webidl> NoInterfaceObject</webidl>
12692         </ExtendedAttribute>
12693       </ExtendedAttributeList>
12694       <Operation name="onmessage" id="::Bluetooth::BluetoothHealthChannelChangeCallback::onmessage">
12695         <webidl>        void onmessage(byte[] data);</webidl>
12696         <descriptive>
12697             <brief>
12698  The method to be invoked when the message is received.
12699             </brief>
12700             <version>
12701  2.2
12702             </version>
12703         </descriptive>
12704         <Type type="void"/>
12705         <ArgumentList>
12706           <Argument name="data">
12707             <descriptive>
12708                 <description><p>
12709  The received data.
12710                 </p></description>
12711             </descriptive>
12712             <Type type="array">
12713               <Type type="byte"/>
12714             </Type>
12715           </Argument>
12716         </ArgumentList>
12717       </Operation>
12718       <Operation name="onclose" id="::Bluetooth::BluetoothHealthChannelChangeCallback::onclose">
12719         <webidl>        void onclose();</webidl>
12720         <descriptive>
12721             <brief>
12722  The method to be invoked when the health channel is closed.
12723             </brief>
12724             <version>
12725  2.2
12726             </version>
12727         </descriptive>
12728         <Type type="void"/>
12729         <ArgumentList/>
12730       </Operation>
12731     </Interface>
12732   </Module>
12733   <Module name="Bookmark" id="::Bookmark">
12734     <webidl>module Bookmark {&#13;
12735 &#13;
12736   typedef (<ref>BookmarkItem</ref> or <ref>BookmarkFolder</ref>) Bookmark;&#13;
12737 &#13;
12738 &#13;
12739   [NoInterfaceObject] interface BookmarkManagerObject {&#13;
12740     readonly attribute <ref>BookmarkManager</ref> bookmark;&#13;
12741   };&#13;
12742   <ref>Tizen</ref> implements <ref>BookmarkManagerObject</ref>;&#13;
12743 &#13;
12744 &#13;
12745   [NoInterfaceObject] interface BookmarkManager {&#13;
12746 &#13;
12747     <ref>Bookmark</ref>[] get(optional <ref>BookmarkFolder</ref>? parentFolder, optional boolean? recursive) raises(<ref>WebAPIException</ref>);&#13;
12748 &#13;
12749     void add(<ref>Bookmark</ref> bookmark, optional <ref>BookmarkFolder</ref>? parentFolder) raises(<ref>WebAPIException</ref>);&#13;
12750 &#13;
12751     void remove(optional <ref>Bookmark</ref>? bookmark) raises(<ref>WebAPIException</ref>);&#13;
12752 &#13;
12753   };&#13;
12754 &#13;
12755 &#13;
12756   [Constructor(DOMString title, DOMString url)]&#13;
12757 &#13;
12758   interface BookmarkItem {&#13;
12759 &#13;
12760     readonly attribute <ref>BookmarkFolder</ref>? parent;&#13;
12761 &#13;
12762     readonly attribute DOMString title;&#13;
12763 &#13;
12764     readonly attribute DOMString url;&#13;
12765 &#13;
12766   };&#13;
12767 &#13;
12768   [Constructor(DOMString title)]&#13;
12769 &#13;
12770   interface BookmarkFolder {&#13;
12771 &#13;
12772     readonly attribute <ref>BookmarkFolder</ref>? parent;&#13;
12773 &#13;
12774     readonly attribute DOMString title;&#13;
12775 &#13;
12776   };&#13;
12777 };</webidl>
12778     <descriptive>
12779         <brief>
12780  This API provides interfaces and methods for accessing Bookmark.
12781 This API provides functionality to get, add, and remove bookmarks.
12782         </brief>
12783        <description>
12784         <p>
12785 For more information on the Bookmark features, see <a href="../../org.tizen.web.appprogramming/html/guide/social_guide/bookmark.htm">Bookmark Guide</a>. 
12786         </p>
12787        </description>
12788         <version>
12789  2.1
12790         </version>
12791     </descriptive>
12792     <Typedef name="Bookmark" id="::Bookmark::Bookmark">
12793       <webidl>  typedef (<ref>BookmarkItem</ref> or <ref>BookmarkFolder</ref>) Bookmark;</webidl>
12794       <descriptive>
12795           <brief>
12796  A bookmark, which could be either a <em>BookmarkItem </em>or a <em>BookmarkFolder</em>.
12797           </brief>
12798           <version>
12799  2.1
12800           </version>
12801       </descriptive>
12802       <Type type="union">
12803         <Type name="BookmarkItem"/>
12804         <Type name="BookmarkFolder"/>
12805       </Type>
12806     </Typedef>
12807     <Interface name="BookmarkManagerObject" id="::Bookmark::BookmarkManagerObject">
12808       <webidl>  [NoInterfaceObject] interface BookmarkManagerObject {&#13;
12809     readonly attribute <ref>BookmarkManager</ref> bookmark;&#13;
12810   };</webidl>
12811       <descriptive>
12812           <brief>
12813  Defines what is instantiated by the Tizen object from the Tizen Platform.
12814           </brief>
12815          <description>
12816           <p>
12817 There will be a <em>tizen.bookmark </em>object that allows to access the functionality of the Bookmark API.
12818           </p>
12819          </description>
12820           <version>
12821  2.1
12822           </version>
12823       </descriptive>
12824       <ExtendedAttributeList>
12825         <ExtendedAttribute name="NoInterfaceObject">
12826           <webidl>NoInterfaceObject</webidl>
12827         </ExtendedAttribute>
12828       </ExtendedAttributeList>
12829       <Attribute readonly="readonly" name="bookmark" id="::Bookmark::BookmarkManagerObject::bookmark">
12830         <webidl>    readonly attribute <ref>BookmarkManager</ref> bookmark;</webidl>
12831         <Type name="BookmarkManager"/>
12832       </Attribute>
12833     </Interface>
12834     <Implements name1="Tizen" name2="BookmarkManagerObject">
12835       <webidl>  <ref>Tizen</ref> implements <ref>BookmarkManagerObject</ref>;</webidl>
12836     </Implements>
12837     <Interface name="BookmarkManager" id="::Bookmark::BookmarkManager">
12838       <webidl>  [NoInterfaceObject] interface BookmarkManager {&#13;
12839 &#13;
12840     <ref>Bookmark</ref>[] get(optional <ref>BookmarkFolder</ref>? parentFolder, optional boolean? recursive) raises(<ref>WebAPIException</ref>);&#13;
12841 &#13;
12842     void add(<ref>Bookmark</ref> bookmark, optional <ref>BookmarkFolder</ref>? parentFolder) raises(<ref>WebAPIException</ref>);&#13;
12843 &#13;
12844     void remove(optional <ref>Bookmark</ref>? bookmark) raises(<ref>WebAPIException</ref>);&#13;
12845 &#13;
12846   };</webidl>
12847       <descriptive>
12848           <brief>
12849  This interface provides access to the bookmark folder and bookmark item.
12850           </brief>
12851          <description>
12852           <p>
12853 It provides access to the API functionalities through the <em>tizen.bookmark </em>interface.
12854           </p>
12855          </description>
12856           <version>
12857  2.1
12858           </version>
12859       </descriptive>
12860       <ExtendedAttributeList>
12861         <ExtendedAttribute name="NoInterfaceObject">
12862           <webidl>NoInterfaceObject</webidl>
12863         </ExtendedAttribute>
12864       </ExtendedAttributeList>
12865       <Operation name="get" id="::Bookmark::BookmarkManager::get">
12866         <webidl>    <ref>Bookmark</ref>[] get(optional <ref>BookmarkFolder</ref>? parentFolder, optional boolean? recursive) raises(<ref>WebAPIException</ref>);</webidl>
12867         <descriptive>
12868             <brief>
12869  Gets all bookmark items and bookmark folders.
12870             </brief>
12871            <description>
12872             <p>
12873 If no parentFolder is passed, or the parentFolder contains <var>null</var>, it is considered as the default bookmark folder(The root bookmark folder).
12874 In this case, the return will contain bookmarks under the root bookmark folder.
12875             </p>
12876            </description>
12877             <version>
12878  2.1
12879             </version>
12880             <privilege>
12881  http://tizen.org/privilege/bookmark.read
12882             </privilege>
12883             <privilegelevel>
12884  platform
12885             </privilegelevel>
12886             <Code> try {
12887   // retrieve bookmarks from the root bookmark folder recursively
12888   var allBookmarks = tizen.bookmark.get(null, true);
12889  } catch (err) {
12890   console.log (err.name +&quot;: &quot; + err.message);
12891  }
12892  </Code>
12893         </descriptive>
12894         <Type type="array">
12895           <descriptive>
12896               <description><p>
12897  Bookmark[] Array of Bookmarks.
12898               </p></description>
12899           </descriptive>
12900           <Type name="Bookmark"/>
12901         </Type>
12902         <ArgumentList>
12903           <Argument optional="optional" name="parentFolder">
12904             <descriptive>
12905                 <description><p>
12906  The parent bookmark folder to retrieve the result bookmarks.
12907                 </p></description>
12908             </descriptive>
12909             <Type name="BookmarkFolder" nullable="nullable"/>
12910           </Argument>
12911           <Argument optional="optional" name="recursive">
12912             <descriptive>
12913                 <description><p>
12914  The flag indicating whether sub-bookmarks are also retrieved recursively or not<br/> (The default value is <em>false</em>).
12915                 </p></description>
12916             </descriptive>
12917             <Type type="boolean" nullable="nullable"/>
12918           </Argument>
12919         </ArgumentList>
12920         <Raises>
12921           <RaiseException name="WebAPIException">
12922             <descriptive>
12923                 <description><p>
12924  with error type NotFoundError, if the parentFolder parameter isn't found in bookmark database.
12925                 </p></description>
12926                 <description><p>
12927  with error type TypeMismatchError, if an input parameter is not compatible with the expected type for that parameter.
12928                 </p></description>
12929                 <description><p>
12930  with error type SecurityError, if the application does not have the privilege to call this method.
12931                 </p></description>
12932                 <description><p>
12933  with error type UnknownError, if any other error occurs.
12934                 </p></description>
12935             </descriptive>
12936           </RaiseException>
12937         </Raises>
12938       </Operation>
12939       <Operation name="add" id="::Bookmark::BookmarkManager::add">
12940         <webidl>    void add(<ref>Bookmark</ref> bookmark, optional <ref>BookmarkFolder</ref>? parentFolder) raises(<ref>WebAPIException</ref>);</webidl>
12941         <descriptive>
12942             <brief>
12943  Adds a bookmark item or a bookmark folder.
12944             </brief>
12945            <description>
12946             <p>
12947 If no parentFolder is passed, or the parentFolder contains <var>null</var>, it is considered as the default bookmark folder(The root bookmark folder).
12948 In this case, the bookmark is added under the root bookmark folder.
12949             </p>
12950            </description>
12951             <version>
12952  2.1
12953             </version>
12954             <privilege>
12955  http://tizen.org/privilege/bookmark.write
12956             </privilege>
12957             <privilegelevel>
12958  platform
12959             </privilegelevel>
12960             <Code> try {
12961  // add a bookmark item to root bookmark folder.
12962   tizen.bookmark.add(new tizen.BookmarkItem(&quot;tizen&quot;, &quot;https://www.tizen.org&quot;));
12963  } catch (err) {
12964   console.log (err.name +&quot;: &quot; + err.message);
12965  }
12966  </Code>
12967         </descriptive>
12968         <Type type="void"/>
12969         <ArgumentList>
12970           <Argument name="bookmark">
12971             <descriptive>
12972                 <description><p>
12973  The bookmark to be added.
12974                 </p></description>
12975             </descriptive>
12976             <Type name="Bookmark"/>
12977           </Argument>
12978           <Argument optional="optional" name="parentFolder">
12979             <descriptive>
12980                 <description><p>
12981  The parent folder of a bookmark to be added.
12982                 </p></description>
12983             </descriptive>
12984             <Type name="BookmarkFolder" nullable="nullable"/>
12985           </Argument>
12986         </ArgumentList>
12987         <Raises>
12988           <RaiseException name="WebAPIException">
12989             <descriptive>
12990                 <description><p>
12991  with error type NotFoundError, if a parentFolder parameter isn't found in bookmark database.
12992                 </p></description>
12993                 <description><p>
12994  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.
12995                 </p></description>
12996                 <description><p>
12997  with error type TypeMismatchError, if an input parameter is not compatible with the expected type for that parameter.
12998                 </p></description>
12999                 <description><p>
13000  with error type SecurityError, if the application does not have the privilege to call this method.
13001                 </p></description>
13002                 <description><p>
13003  with error type UnknownError, if any other error occurs.
13004                 </p></description>
13005             </descriptive>
13006           </RaiseException>
13007         </Raises>
13008       </Operation>
13009       <Operation name="remove" id="::Bookmark::BookmarkManager::remove">
13010         <webidl>    void remove(optional <ref>Bookmark</ref>? bookmark) raises(<ref>WebAPIException</ref>);</webidl>
13011         <descriptive>
13012             <brief>
13013  Removes a bookmark item or a bookmark folder.
13014             </brief>
13015            <description>
13016             <p>
13017 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).
13018 In this case, all the bookmarks will be removed.
13019             </p>
13020            </description>
13021             <version>
13022  2.1
13023             </version>
13024             <privilege>
13025  http://tizen.org/privilege/bookmark.write
13026             </privilege>
13027             <privilegelevel>
13028  platform
13029             </privilegelevel>
13030             <Code> try {
13031  // remove all the bookmark folders and items
13032   tizen.bookmark.remove();
13033  } catch (err) {
13034   console.log (err.name +&quot;: &quot; + err.message);
13035  }
13036  </Code>
13037         </descriptive>
13038         <Type type="void"/>
13039         <ArgumentList>
13040           <Argument optional="optional" name="bookmark">
13041             <descriptive>
13042                 <description><p>
13043  The bookmark to be removed.
13044                 </p></description>
13045             </descriptive>
13046             <Type name="Bookmark" nullable="nullable"/>
13047           </Argument>
13048         </ArgumentList>
13049         <Raises>
13050           <RaiseException name="WebAPIException">
13051             <descriptive>
13052                 <description><p>
13053  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
13054                 </p></description>
13055                 <description><p>
13056  with error type SecurityError, if the application does not have the privilege to call this method.
13057                 </p></description>
13058                 <description><p>
13059  with error type UnknownError, if any other error occurs.
13060                 </p></description>
13061             </descriptive>
13062           </RaiseException>
13063         </Raises>
13064       </Operation>
13065     </Interface>
13066     <Interface name="BookmarkItem" id="::Bookmark::BookmarkItem">
13067       <webidl>  [Constructor(DOMString title, DOMString url)]&#13;
13068 &#13;
13069   interface BookmarkItem {&#13;
13070 &#13;
13071     readonly attribute <ref>BookmarkFolder</ref>? parent;&#13;
13072 &#13;
13073     readonly attribute DOMString title;&#13;
13074 &#13;
13075     readonly attribute DOMString url;&#13;
13076 &#13;
13077   };</webidl>
13078       <descriptive>
13079           <brief>
13080  This interface implements the <em>BookmarkItem </em>object.
13081           </brief>
13082           <version>
13083  2.1
13084           </version>
13085       </descriptive>
13086       <ExtendedAttributeList>
13087         <ExtendedAttribute name="Constructor">
13088           <webidl>Constructor(DOMString title, DOMString url)</webidl>
13089           <descriptive>
13090               <Code> try {
13091  // create a bookmark item
13092   var tizen = new tizen.BookmarkItem(&quot;tizen&quot;, &quot;https://www.tizen.org&quot;);
13093  } catch (err) {
13094   console.log (err.name +&quot;: &quot; + err.message);
13095  }
13096  </Code>
13097           </descriptive>
13098           <ArgumentList>
13099             <Argument name="title">
13100               <Type type="DOMString"/>
13101             </Argument>
13102             <Argument name="url">
13103               <Type type="DOMString"/>
13104             </Argument>
13105           </ArgumentList>
13106         </ExtendedAttribute>
13107       </ExtendedAttributeList>
13108       <Attribute readonly="readonly" name="parent" id="::Bookmark::BookmarkItem::parent">
13109         <webidl>    readonly attribute <ref>BookmarkFolder</ref>? parent;</webidl>
13110         <descriptive>
13111             <brief>
13112  The parent bookmark folder.
13113             </brief>
13114            <description>
13115             <p>
13116 This attribute is meaningful when this object is successfully added or retrieved.
13117 If this BookmarkItem is not added yet, its value is set to undefined.
13118             </p>
13119             <p>
13120 If the parent bookmark folder indicates the root bookmark folder, the value will be <var>null</var>.
13121             </p>
13122            </description>
13123             <version>
13124  2.1
13125             </version>
13126         </descriptive>
13127         <Type name="BookmarkFolder" nullable="nullable"/>
13128       </Attribute>
13129       <Attribute readonly="readonly" name="title" id="::Bookmark::BookmarkItem::title">
13130         <webidl>    readonly attribute DOMString title;</webidl>
13131         <descriptive>
13132             <brief>
13133  The title of the bookmark.
13134             </brief>
13135             <version>
13136  2.1
13137             </version>
13138         </descriptive>
13139         <Type type="DOMString"/>
13140       </Attribute>
13141       <Attribute readonly="readonly" name="url" id="::Bookmark::BookmarkItem::url">
13142         <webidl>    readonly attribute DOMString url;</webidl>
13143         <descriptive>
13144             <brief>
13145  The uri of the bookmark.
13146             </brief>
13147             <version>
13148  2.1
13149             </version>
13150         </descriptive>
13151         <Type type="DOMString"/>
13152       </Attribute>
13153     </Interface>
13154     <Interface name="BookmarkFolder" id="::Bookmark::BookmarkFolder">
13155       <webidl>  [Constructor(DOMString title)]&#13;
13156 &#13;
13157   interface BookmarkFolder {&#13;
13158 &#13;
13159     readonly attribute <ref>BookmarkFolder</ref>? parent;&#13;
13160 &#13;
13161     readonly attribute DOMString title;&#13;
13162 &#13;
13163   };</webidl>
13164       <descriptive>
13165           <brief>
13166  This interface implements the <em>BookmarkFolder </em>object.
13167           </brief>
13168           <version>
13169  2.1
13170           </version>
13171       </descriptive>
13172       <ExtendedAttributeList>
13173         <ExtendedAttribute name="Constructor">
13174           <webidl>Constructor(DOMString title)</webidl>
13175           <descriptive>
13176               <Code> try {
13177  // create a bookmark folder
13178   var folder = new tizen.BookmarkFolder(&quot;folder&quot;);
13179  } catch (err) {
13180   console.log (err.name +&quot;: &quot; + err.message);
13181  }
13182  </Code>
13183           </descriptive>
13184           <ArgumentList>
13185             <Argument name="title">
13186               <Type type="DOMString"/>
13187             </Argument>
13188           </ArgumentList>
13189         </ExtendedAttribute>
13190       </ExtendedAttributeList>
13191       <Attribute readonly="readonly" name="parent" id="::Bookmark::BookmarkFolder::parent">
13192         <webidl>    readonly attribute <ref>BookmarkFolder</ref>? parent;</webidl>
13193         <descriptive>
13194             <brief>
13195  The parent bookmark folder.
13196             </brief>
13197            <description>
13198             <p>
13199 This attribute is meaningful when this object is successfully added or retrieved.
13200 If this BookmarkFolder is not added yet, its value is set to undefined.
13201             </p>
13202             <p>
13203 If the parent bookmark folder indicates the root bookmark folder, the value will be <var>null</var>.
13204             </p>
13205            </description>
13206             <version>
13207  2.1
13208             </version>
13209         </descriptive>
13210         <Type name="BookmarkFolder" nullable="nullable"/>
13211       </Attribute>
13212       <Attribute readonly="readonly" name="title" id="::Bookmark::BookmarkFolder::title">
13213         <webidl>    readonly attribute DOMString title;</webidl>
13214         <descriptive>
13215             <brief>
13216  The title of the bookmark folder.
13217             </brief>
13218             <version>
13219  2.1
13220             </version>
13221         </descriptive>
13222         <Type type="DOMString"/>
13223       </Attribute>
13224     </Interface>
13225   </Module>
13226   <Module name="Calendar" id="::Calendar">
13227     <webidl>module Calendar {
13228   typedef DOMString CalendarId;
13229   
13230   typedef DOMString CalendarTaskId;
13231   
13232   typedef (<ref>CalendarEventId</ref> or <ref>CalendarTaskId</ref>) CalendarItemId;
13233   
13234   enum CalendarType { &quot;EVENT&quot;, &quot;TASK&quot; };
13235   
13236   enum CalendarTextFormat { &quot;ICALENDAR_20&quot;, &quot;VCALENDAR_10&quot; };
13237   
13238   enum AlarmMethod { &quot;SOUND&quot;, &quot;DISPLAY&quot; };
13239   
13240   
13241   enum RecurrenceRuleFrequency { &quot;DAILY&quot;, &quot;WEEKLY&quot;, &quot;MONTHLY&quot;, &quot;YEARLY&quot; };
13242   
13243   enum ByDayValue { &quot;MO&quot;, &quot;TU&quot;, &quot;WE&quot;, &quot;TH&quot;, &quot;FR&quot;, &quot;SA&quot;, &quot;SU&quot; };
13244   
13245   enum EventAvailability { &quot;BUSY&quot;, &quot;FREE&quot; };
13246   
13247   enum AttendeeType { &quot;INDIVIDUAL&quot;, &quot;GROUP&quot;, &quot;RESOURCE&quot;, &quot;ROOM&quot;, &quot;UNKNOWN&quot; };
13248   
13249   enum AttendeeStatus { &quot;PENDING&quot;, &quot;ACCEPTED&quot;, &quot;DECLINED&quot;, &quot;TENTATIVE&quot;, &quot;DELEGATED&quot;, &quot;COMPLETED&quot;, &quot;IN_PROCESS&quot; };
13250   
13251   enum AttendeeRole { &quot;REQ_PARTICIPANT&quot;, &quot;OPT_PARTICIPANT&quot;, &quot;NON_PARTICIPANT&quot;, &quot;CHAIR&quot; };
13252   
13253   enum CalendarItemPriority { &quot;HIGH&quot;, &quot;MEDIUM&quot;, &quot;LOW&quot; };
13254   
13255    enum CalendarItemVisibility { &quot;PUBLIC&quot;, &quot;PRIVATE&quot;, &quot;CONFIDENTIAL&quot; };
13256    
13257    enum CalendarItemStatus { &quot;TENTATIVE&quot;, &quot;CONFIRMED&quot;, &quot;CANCELLED&quot;, &quot;NEEDS_ACTION&quot;, &quot;IN_PROCESS&quot;, &quot;COMPLETED&quot; };
13258   
13259   [NoInterfaceObject] interface CalendarManagerObject{
13260     readonly attribute <ref>CalendarManager</ref> calendar; 
13261   };
13262   <ref>Tizen</ref> implements <ref>CalendarManagerObject</ref>;    
13263
13264   [NoInterfaceObject] interface CalendarManager {
13265     void getCalendars(<ref>CalendarType</ref> type,
13266                       <ref>CalendarArraySuccessCallback</ref> successCallback,
13267                       optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
13268
13269     <ref>Calendar</ref> getUnifiedCalendar(<ref>CalendarType</ref> type) raises(<ref>WebAPIException</ref>);
13270
13271     <ref>Calendar</ref> getDefaultCalendar(<ref>CalendarType</ref> type) raises(<ref>WebAPIException</ref>);
13272     
13273     <ref>Calendar</ref> getCalendar(<ref>CalendarType</ref> type, <ref>CalendarId</ref> id) raises(<ref>WebAPIException</ref>);
13274   };
13275
13276   [NoInterfaceObject] interface Calendar {
13277     
13278     readonly attribute <ref>CalendarId</ref> id;
13279
13280     readonly attribute DOMString name;
13281                               
13282     <ref>CalendarItem</ref> get(<ref>CalendarItemId</ref> id) raises(<ref>WebAPIException</ref>);
13283
13284     void add(<ref>CalendarItem</ref> item) raises(<ref>WebAPIException</ref>);
13285
13286     void addBatch(<ref>CalendarItem</ref>[] items,
13287                   optional <ref>CalendarItemArraySuccessCallback</ref>? successCallback,
13288                   optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
13289
13290     void update(<ref>CalendarItem</ref> item,
13291                 optional boolean? updateAllInstances) raises(<ref>WebAPIException</ref>);
13292
13293      void updateBatch(<ref>CalendarItem</ref>[] items,
13294                      optional <ref>SuccessCallback</ref>? successCallback,
13295                      optional <ref>ErrorCallback</ref>? errorCallback,
13296                      optional boolean? updateAllInstances) raises(<ref>WebAPIException</ref>);
13297
13298     void remove(<ref>CalendarItemId</ref> id) raises(<ref>WebAPIException</ref>);
13299
13300     void removeBatch(<ref>CalendarItemId</ref>[] ids,
13301                      optional <ref>SuccessCallback</ref>? successCallback,
13302                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
13303  
13304     void find(<ref>CalendarItemArraySuccessCallback</ref> successCallback,
13305               optional <ref>ErrorCallback</ref>? errorCallback,
13306               optional <ref>AbstractFilter</ref>? filter,
13307               optional <ref>SortMode</ref>? sortMode) raises(<ref>WebAPIException</ref>);
13308                                 
13309     long addChangeListener(<ref>CalendarChangeCallback</ref> successCallback) raises(<ref>WebAPIException</ref>);
13310                       
13311     void removeChangeListener(long watchId) raises(<ref>WebAPIException</ref>);
13312   };
13313   
13314   dictionary CalendarItemInit {
13315     DOMString description;
13316     DOMString summary;
13317     boolean isAllDay;
13318     <ref>TZDate</ref> startDate;
13319     <ref>TimeDuration</ref> duration;
13320     DOMString location;
13321     <ref>SimpleCoordinates</ref> geolocation;
13322     DOMString organizer;
13323     <ref>CalendarItemVisibility</ref> visibility;
13324     <ref>CalendarItemStatus</ref> status;
13325     <ref>CalendarItemPriority</ref> priority;
13326     <ref>CalendarAlarm</ref>[] alarms;
13327     DOMString[] categories;
13328     <ref>CalendarAttendee</ref>[] attendees;
13329   };
13330   
13331   dictionary CalendarTaskInit: <ref>CalendarItemInit</ref> {
13332     <ref>TZDate</ref> dueDate;
13333     <ref>TZDate</ref> completedDate;
13334     short progress;
13335   };
13336
13337   dictionary CalendarEventInit: <ref>CalendarItemInit</ref> {
13338     <ref>TZDate</ref> endDate;
13339     <ref>EventAvailability</ref> availability;
13340     <ref>CalendarRecurrenceRule</ref> recurrenceRule;
13341   };
13342   
13343   [NoInterfaceObject] interface CalendarItem {
13344     readonly attribute <ref>CalendarItemId</ref>? id;
13345
13346     readonly attribute <ref>CalendarId</ref>? calendarId;
13347
13348     readonly attribute <ref>TZDate</ref>? lastModificationDate;
13349     
13350     attribute DOMString? description setraises(<ref>WebAPIException</ref>);
13351     
13352     attribute DOMString? summary setraises(<ref>WebAPIException</ref>);
13353     
13354     attribute boolean isAllDay setraises(<ref>WebAPIException</ref>);
13355     
13356     attribute <ref>TZDate</ref>? startDate setraises(<ref>WebAPIException</ref>);
13357     
13358     attribute <ref>TimeDuration</ref>? duration setraises(<ref>WebAPIException</ref>);
13359     
13360     attribute DOMString? location setraises(<ref>WebAPIException</ref>);
13361     
13362     attribute <ref>SimpleCoordinates</ref>? geolocation setraises(<ref>WebAPIException</ref>);
13363     
13364     attribute DOMString? organizer setraises(<ref>WebAPIException</ref>);
13365     
13366     attribute <ref>CalendarItemVisibility</ref> visibility setraises(<ref>WebAPIException</ref>);
13367     
13368     attribute <ref>CalendarItemStatus</ref> status setraises(<ref>WebAPIException</ref>);
13369     
13370     attribute <ref>CalendarItemPriority</ref> priority setraises(<ref>WebAPIException</ref>);
13371     
13372     attribute <ref>CalendarAlarm</ref>[] alarms setraises(<ref>WebAPIException</ref>);
13373     
13374     attribute DOMString[] categories setraises(<ref>WebAPIException</ref>);
13375     
13376     attribute <ref>CalendarAttendee</ref>[] attendees setraises(<ref>WebAPIException</ref>);
13377     
13378     DOMString convertToString(<ref>CalendarTextFormat</ref> format) raises(<ref>WebAPIException</ref>);
13379
13380     <ref>CalendarItem</ref> clone() raises(<ref>WebAPIException</ref>);
13381   };
13382   
13383   [Constructor(optional <ref>CalendarTaskInit</ref>? taskInitDict),
13384    Constructor(DOMString stringRepresentation, <ref>CalendarTextFormat</ref> format)]
13385   interface CalendarTask : <ref>CalendarItem</ref> {
13386     attribute <ref>TZDate</ref>? dueDate setraises(<ref>WebAPIException</ref>);
13387     
13388     attribute <ref>TZDate</ref>? completedDate setraises(<ref>WebAPIException</ref>);
13389     
13390     attribute unsigned short progress setraises(<ref>WebAPIException</ref>);
13391   };
13392
13393   [Constructor(optional <ref>CalendarEventInit</ref>? eventInitDict),
13394    Constructor(DOMString stringRepresentation, <ref>CalendarTextFormat</ref> format)]
13395   interface CalendarEvent : <ref>CalendarItem</ref> {
13396     readonly attribute boolean isDetached;
13397     
13398     attribute <ref>TZDate</ref>? endDate setraises(<ref>WebAPIException</ref>);
13399     
13400     attribute <ref>EventAvailability</ref> availability setraises(<ref>WebAPIException</ref>);
13401     
13402     attribute <ref>CalendarRecurrenceRule</ref>? recurrenceRule setraises(<ref>WebAPIException</ref>);
13403     
13404     void expandRecurrence(<ref>TZDate</ref> startDate,
13405                           <ref>TZDate</ref> endDate,
13406                           <ref>CalendarEventArraySuccessCallback</ref> successCallback,
13407                           optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
13408   };
13409   
13410   dictionary CalendarAttendeeInit {
13411     DOMString name;
13412     <ref>AttendeeRole</ref> role;
13413     <ref>AttendeeStatus</ref> status;
13414     boolean RSVP;
13415     <ref>AttendeeType</ref> type;
13416     DOMString? group;
13417     DOMString delegatorURI;
13418     DOMString delegateURI;
13419     <ref>ContactRef</ref> contactRef;
13420   };
13421
13422   [Constructor(DOMString uri, optional <ref>CalendarAttendeeInit</ref>? attendeeInitDict)]
13423   interface CalendarAttendee
13424   {
13425     attribute DOMString uri;
13426     
13427     attribute DOMString? name;
13428     
13429     attribute <ref>AttendeeRole</ref> role;
13430     
13431     attribute <ref>AttendeeStatus</ref> status;
13432     
13433     attribute boolean RSVP;
13434     
13435     attribute <ref>AttendeeType</ref> type;
13436      
13437     attribute DOMString? group;
13438       
13439     attribute DOMString? delegatorURI;
13440       
13441     attribute DOMString? delegateURI;
13442      
13443     attribute <ref>ContactRef</ref>? contactRef;
13444   };
13445   
13446   dictionary CalendarRecurrenceRuleInit {
13447     short interval;
13448     <ref>TZDate</ref> untilDate;
13449     long occurrenceCount;
13450     <ref>ByDayValue</ref>[] daysOfTheWeek;
13451     short[] setPositions;
13452     <ref>TZDate</ref>[] exceptions;
13453   };
13454   
13455   [Constructor(<ref>RecurrenceRuleFrequency</ref> frequency, optional <ref>CalendarRecurrenceRuleInit</ref>? ruleInitDict)]
13456   interface CalendarRecurrenceRule
13457   { 
13458     attribute <ref>RecurrenceRuleFrequency</ref> frequency;
13459     
13460     attribute unsigned short interval;
13461     
13462     attribute <ref>TZDate</ref>? untilDate;
13463     
13464     attribute long occurrenceCount;
13465     
13466     attribute <ref>ByDayValue</ref>[] daysOfTheWeek;
13467     
13468     attribute short[] setPositions;
13469     
13470     attribute <ref>TZDate</ref>[] exceptions;
13471   };
13472   
13473   [Constructor(DOMString uid, optional DOMString? rid)]
13474   interface CalendarEventId {
13475     attribute DOMString uid;
13476     
13477     attribute DOMString? rid;
13478   };
13479   
13480   [Constructor(<ref>TZDate</ref> absoluteDate, <ref>AlarmMethod</ref> method, optional DOMString? description),
13481    Constructor(<ref>TimeDuration</ref> before, <ref>AlarmMethod</ref> method, optional DOMString? description)]
13482   interface CalendarAlarm {
13483     attribute <ref>TZDate</ref>? absoluteDate setraises(<ref>WebAPIException</ref>);
13484     
13485     attribute <ref>TimeDuration</ref>? before setraises(<ref>WebAPIException</ref>);
13486   
13487     attribute <ref>AlarmMethod</ref> method setraises(<ref>WebAPIException</ref>);
13488     
13489     attribute DOMString? description;
13490   };
13491
13492   [Callback=FunctionOnly, NoInterfaceObject]
13493   interface CalendarEventArraySuccessCallback {
13494     void onsuccess(<ref>CalendarEvent</ref>[] events);
13495   };
13496   
13497   [Callback=FunctionOnly, NoInterfaceObject]
13498   interface CalendarItemArraySuccessCallback {
13499     void onsuccess(<ref>CalendarItem</ref>[] items);
13500   };
13501
13502   [Callback=FunctionOnly, NoInterfaceObject]
13503   interface CalendarArraySuccessCallback {
13504     void onsuccess(<ref>Calendar</ref>[] calendars);
13505   };
13506   
13507   [Callback, NoInterfaceObject] interface CalendarChangeCallback {
13508     void onitemsadded(<ref>CalendarItem</ref>[] items);
13509     
13510     void onitemsupdated(<ref>CalendarItem</ref>[] items);
13511     
13512     void onitemsremoved(<ref>CalendarItemId</ref>[] ids);
13513   };
13514 };</webidl>
13515     <descriptive>
13516         <brief>
13517  This API provides interfaces and methods for users to manage their schedule. 
13518 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.
13519         </brief>
13520        <description>
13521         <p>
13522 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>. 
13523         </p>
13524         <p>
13525 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.
13526         </p>
13527         <p>
13528 For more information on the Calendar features, see <a href="../../org.tizen.web.appprogramming/html/guide/social_guide/calendar.htm">Calendar Guide</a>. 
13529         </p>
13530        </description>
13531         <version>
13532  1.0
13533         </version>
13534     </descriptive>
13535     <Typedef name="CalendarId" id="::Calendar::CalendarId">
13536       <webidl>  typedef DOMString CalendarId;</webidl>
13537       <descriptive>
13538           <brief>
13539  An attribute to identify the calendar.
13540           </brief>
13541           <version>
13542  1.0
13543           </version>
13544       </descriptive>
13545       <Type type="DOMString"/>
13546     </Typedef>
13547     <Typedef name="CalendarTaskId" id="::Calendar::CalendarTaskId">
13548       <webidl>  typedef DOMString CalendarTaskId;</webidl>
13549       <descriptive>
13550           <brief>
13551  An attribute to identify a calendar task.
13552           </brief>
13553           <version>
13554  1.0
13555           </version>
13556       </descriptive>
13557       <Type type="DOMString"/>
13558     </Typedef>
13559     <Typedef name="CalendarItemId" id="::Calendar::CalendarItemId">
13560       <webidl>  typedef (<ref>CalendarEventId</ref> or <ref>CalendarTaskId</ref>) CalendarItemId;</webidl>
13561       <descriptive>
13562           <brief>
13563  A calendar item identifier, which can either be a <em>CalendarEventId </em>or a <em>CalendarTaskId</em>.
13564           </brief>
13565           <version>
13566  1.0
13567           </version>
13568       </descriptive>
13569       <Type type="union">
13570         <Type name="CalendarEventId"/>
13571         <Type name="CalendarTaskId"/>
13572       </Type>
13573     </Typedef>
13574     <Enum name="CalendarType" id="::Calendar::CalendarType">
13575       <webidl>  enum CalendarType { &quot;EVENT&quot;, &quot;TASK&quot; };</webidl>
13576       <descriptive>
13577           <brief>
13578  An enumerator that indicates the type of a calendar.
13579           </brief>
13580          <description>
13581           <p>
13582 The following types are supported:
13583           </p>
13584           <ul>
13585             <li>
13586 EVENT - if a calendar contains events (VEVENT objects)            </li>
13587             <li>
13588 TASK - if a calendar contains tasks (VTODO objects)            </li>
13589           </ul>
13590          </description>
13591           <version>
13592  1.0
13593           </version>
13594       </descriptive>
13595       <EnumValue stringvalue="EVENT">
13596         <webidl> &quot;EVENT</webidl>
13597       </EnumValue>
13598       <EnumValue stringvalue="TASK">
13599         <webidl> &quot;TASK</webidl>
13600       </EnumValue>
13601     </Enum>
13602     <Enum name="CalendarTextFormat" id="::Calendar::CalendarTextFormat">
13603       <webidl>  enum CalendarTextFormat { &quot;ICALENDAR_20&quot;, &quot;VCALENDAR_10&quot; };</webidl>
13604       <descriptive>
13605           <brief>
13606  An enumerator that indicates the type of textual format of a Calendar.
13607           </brief>
13608          <description>
13609           <p>
13610 The following values are supported:
13611           </p>
13612           <ul>
13613             <li>
13614 ICALENDAR_20 -  if the textual format is iCalendar v2.0            </li>
13615             <li>
13616 VCALENDAR_10 -  if the textual format is vCalendar v1.0            </li>
13617           </ul>
13618          </description>
13619           <version>
13620  1.0
13621           </version>
13622       </descriptive>
13623       <EnumValue stringvalue="ICALENDAR_20">
13624         <webidl> &quot;ICALENDAR_20</webidl>
13625       </EnumValue>
13626       <EnumValue stringvalue="VCALENDAR_10">
13627         <webidl> &quot;VCALENDAR_10</webidl>
13628       </EnumValue>
13629     </Enum>
13630     <Enum name="AlarmMethod" id="::Calendar::AlarmMethod">
13631       <webidl>  enum AlarmMethod { &quot;SOUND&quot;, &quot;DISPLAY&quot; };</webidl>
13632       <descriptive>
13633           <brief>
13634  An enumerator that indicates the type of an alarm.
13635           </brief>
13636          <description>
13637           <p>
13638 The following values are supported:
13639           </p>
13640           <ul>
13641             <li>
13642 SOUND - if sound is played to alert the user            </li>
13643             <li>
13644 DISPLAY - if display on screen without any sound is used to alert the user            </li>
13645           </ul>
13646          </description>
13647           <version>
13648  1.0
13649           </version>
13650       </descriptive>
13651       <EnumValue stringvalue="SOUND">
13652         <webidl> &quot;SOUND</webidl>
13653       </EnumValue>
13654       <EnumValue stringvalue="DISPLAY">
13655         <webidl> &quot;DISPLAY</webidl>
13656       </EnumValue>
13657     </Enum>
13658     <Enum name="RecurrenceRuleFrequency" id="::Calendar::RecurrenceRuleFrequency">
13659       <webidl>  enum RecurrenceRuleFrequency { &quot;DAILY&quot;, &quot;WEEKLY&quot;, &quot;MONTHLY&quot;, &quot;YEARLY&quot; };</webidl>
13660       <descriptive>
13661           <brief>
13662  An enumerator that indicates the type of frequency for the recurrence of an event.
13663           </brief>
13664          <description>
13665           <p>
13666 Only the following values are valid for this attribute:
13667           </p>
13668           <ul>
13669             <li>
13670 DAILY - if the event occurs daily            </li>
13671             <li>
13672 WEEKLY - if the event occurs weekly            </li>
13673             <li>
13674 MONTHLY -  if the event occurs monthly            </li>
13675             <li>
13676 YEARLY - if the event occurs yearly            </li>
13677           </ul>
13678          </description>
13679           <version>
13680  1.0
13681           </version>
13682       </descriptive>
13683       <EnumValue stringvalue="DAILY">
13684         <webidl> &quot;DAILY</webidl>
13685       </EnumValue>
13686       <EnumValue stringvalue="WEEKLY">
13687         <webidl> &quot;WEEKLY</webidl>
13688       </EnumValue>
13689       <EnumValue stringvalue="MONTHLY">
13690         <webidl> &quot;MONTHLY</webidl>
13691       </EnumValue>
13692       <EnumValue stringvalue="YEARLY">
13693         <webidl> &quot;YEARLY</webidl>
13694       </EnumValue>
13695     </Enum>
13696     <Enum name="ByDayValue" id="::Calendar::ByDayValue">
13697       <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>
13698       <descriptive>
13699           <brief>
13700  An enumerator that indicates the values for <em>CalendarRecurrenceRule.daysOfWeek</em>.
13701           </brief>
13702          <description>
13703           <p>
13704 &quot;MO&quot; to &quot;SU&quot; correspond to &quot;Monday&quot; to &quot;Sunday&quot;.
13705           </p>
13706          </description>
13707           <version>
13708  1.0
13709           </version>
13710       </descriptive>
13711       <EnumValue stringvalue="MO">
13712         <webidl> &quot;MO</webidl>
13713       </EnumValue>
13714       <EnumValue stringvalue="TU">
13715         <webidl> &quot;TU</webidl>
13716       </EnumValue>
13717       <EnumValue stringvalue="WE">
13718         <webidl> &quot;WE</webidl>
13719       </EnumValue>
13720       <EnumValue stringvalue="TH">
13721         <webidl> &quot;TH</webidl>
13722       </EnumValue>
13723       <EnumValue stringvalue="FR">
13724         <webidl> &quot;FR</webidl>
13725       </EnumValue>
13726       <EnumValue stringvalue="SA">
13727         <webidl> &quot;SA</webidl>
13728       </EnumValue>
13729       <EnumValue stringvalue="SU">
13730         <webidl> &quot;SU</webidl>
13731       </EnumValue>
13732     </Enum>
13733     <Enum name="EventAvailability" id="::Calendar::EventAvailability">
13734       <webidl>  enum EventAvailability { &quot;BUSY&quot;, &quot;FREE&quot; };</webidl>
13735       <descriptive>
13736           <brief>
13737  An enumerator that indicates the availability of time for an event.
13738           </brief>
13739          <description>
13740           <p>
13741 The following values are supported:
13742           </p>
13743           <ul>
13744             <li>
13745 FREE - if the specified time slot is vacant            </li>
13746             <li>
13747 BUSY - if the specified time slot is not vacant            </li>
13748             <li>
13749 BUSY-UNAVAILABLE - if the specified time slot is not vacant and can not be scheduled            </li>
13750             <li>
13751 BUSY-TENTATIVE - if the specified time slot is not vacant because one or more events have been tentatively scheduled for that interval            </li>
13752           </ul>
13753          </description>
13754           <version>
13755  1.0
13756           </version>
13757       </descriptive>
13758       <EnumValue stringvalue="BUSY">
13759         <webidl> &quot;BUSY</webidl>
13760       </EnumValue>
13761       <EnumValue stringvalue="FREE">
13762         <webidl> &quot;FREE</webidl>
13763       </EnumValue>
13764     </Enum>
13765     <Enum name="AttendeeType" id="::Calendar::AttendeeType">
13766       <webidl>  enum AttendeeType { &quot;INDIVIDUAL&quot;, &quot;GROUP&quot;, &quot;RESOURCE&quot;, &quot;ROOM&quot;, &quot;UNKNOWN&quot; };</webidl>
13767       <descriptive>
13768           <brief>
13769  An enumerator that indicates the type of attendee.
13770           </brief>
13771          <description>
13772           <p>
13773 At least the following values must be supported:
13774           </p>
13775           <ul>
13776             <li>
13777 INDIVIDUAL - Individual            </li>
13778             <li>
13779 GROUP - Group of individuals            </li>
13780             <li>
13781 RESOURCE - Physical resource            </li>
13782             <li>
13783 ROOM - Room resource            </li>
13784             <li>
13785 UNKNOWN - Unknown            </li>
13786           </ul>
13787          </description>
13788           <version>
13789  1.0
13790           </version>
13791       </descriptive>
13792       <EnumValue stringvalue="INDIVIDUAL">
13793         <webidl> &quot;INDIVIDUAL</webidl>
13794       </EnumValue>
13795       <EnumValue stringvalue="GROUP">
13796         <webidl> &quot;GROUP</webidl>
13797       </EnumValue>
13798       <EnumValue stringvalue="RESOURCE">
13799         <webidl> &quot;RESOURCE</webidl>
13800       </EnumValue>
13801       <EnumValue stringvalue="ROOM">
13802         <webidl> &quot;ROOM</webidl>
13803       </EnumValue>
13804       <EnumValue stringvalue="UNKNOWN">
13805         <webidl> &quot;UNKNOWN</webidl>
13806       </EnumValue>
13807     </Enum>
13808     <Enum name="AttendeeStatus" id="::Calendar::AttendeeStatus">
13809       <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>
13810       <descriptive>
13811           <brief>
13812  An enumerator that indicates the attendance status of a participant.
13813           </brief>
13814          <description>
13815           <p>
13816 At least the following values must be supported:
13817           </p>
13818           <ul>
13819             <li>
13820 PENDING - if the participant has not yet responded to the event            </li>
13821             <li>
13822 ACCEPTED - if the participant has accepted the event            </li>
13823             <li>
13824 DECLINED - if the participant has declined the event            </li>
13825             <li>
13826 TENTATIVE - if the participant has tentatively accepted the event            </li>
13827             <li>
13828 DELEGATED - if the participant has delegated attendance to another participant            </li>
13829             <li>
13830 COMPLETED - if the participant's event has been completed            </li>
13831             <li>
13832 IN_PROCESS - if the participant's event is currently in process            </li>
13833           </ul>
13834          </description>
13835           <version>
13836  1.0
13837           </version>
13838       </descriptive>
13839       <EnumValue stringvalue="PENDING">
13840         <webidl> &quot;PENDING</webidl>
13841       </EnumValue>
13842       <EnumValue stringvalue="ACCEPTED">
13843         <webidl> &quot;ACCEPTED</webidl>
13844       </EnumValue>
13845       <EnumValue stringvalue="DECLINED">
13846         <webidl> &quot;DECLINED</webidl>
13847       </EnumValue>
13848       <EnumValue stringvalue="TENTATIVE">
13849         <webidl> &quot;TENTATIVE</webidl>
13850       </EnumValue>
13851       <EnumValue stringvalue="DELEGATED">
13852         <webidl> &quot;DELEGATED</webidl>
13853       </EnumValue>
13854       <EnumValue stringvalue="COMPLETED">
13855         <webidl> &quot;COMPLETED</webidl>
13856       </EnumValue>
13857       <EnumValue stringvalue="IN_PROCESS">
13858         <webidl> &quot;IN_PROCESS</webidl>
13859       </EnumValue>
13860     </Enum>
13861     <Enum name="AttendeeRole" id="::Calendar::AttendeeRole">
13862       <webidl>  enum AttendeeRole { &quot;REQ_PARTICIPANT&quot;, &quot;OPT_PARTICIPANT&quot;, &quot;NON_PARTICIPANT&quot;, &quot;CHAIR&quot; };</webidl>
13863       <descriptive>
13864           <brief>
13865  An enumerator that indicates the role of an attendee.
13866           </brief>
13867          <description>
13868           <p>
13869 At least the following values must be supported:
13870           </p>
13871           <ul>
13872             <li>
13873 REQ_PARTICIPANT - if the participation of an attendee is mandatory            </li>
13874             <li>
13875 OPT_PARTICIPANT - if the participation of an attendee is optional            </li>
13876             <li>
13877 NON_PARTICIPANT - if the attendee is not a participant but is copied for information purposes            </li>
13878             <li>
13879 CHAIR - if the attendee is the chairperson of the event.            </li>
13880           </ul>
13881          </description>
13882           <version>
13883  1.0
13884           </version>
13885       </descriptive>
13886       <EnumValue stringvalue="REQ_PARTICIPANT">
13887         <webidl> &quot;REQ_PARTICIPANT</webidl>
13888       </EnumValue>
13889       <EnumValue stringvalue="OPT_PARTICIPANT">
13890         <webidl> &quot;OPT_PARTICIPANT</webidl>
13891       </EnumValue>
13892       <EnumValue stringvalue="NON_PARTICIPANT">
13893         <webidl> &quot;NON_PARTICIPANT</webidl>
13894       </EnumValue>
13895       <EnumValue stringvalue="CHAIR">
13896         <webidl> &quot;CHAIR</webidl>
13897       </EnumValue>
13898     </Enum>
13899     <Enum name="CalendarItemPriority" id="::Calendar::CalendarItemPriority">
13900       <webidl>  enum CalendarItemPriority { &quot;HIGH&quot;, &quot;MEDIUM&quot;, &quot;LOW&quot; };</webidl>
13901       <descriptive>
13902           <brief>
13903  An enumerator that indicates the priority of a calendar item.
13904           </brief>
13905          <description>
13906           <p>
13907 The following values are supported:
13908           </p>
13909           <ul>
13910             <li>
13911 HIGH - if item priority is high            </li>
13912             <li>
13913 MEDIUM - if item priority is medium            </li>
13914             <li>
13915 LOW - if item priority is low            </li>
13916           </ul>
13917          </description>
13918           <version>
13919  1.0
13920           </version>
13921       </descriptive>
13922       <EnumValue stringvalue="HIGH">
13923         <webidl> &quot;HIGH</webidl>
13924       </EnumValue>
13925       <EnumValue stringvalue="MEDIUM">
13926         <webidl> &quot;MEDIUM</webidl>
13927       </EnumValue>
13928       <EnumValue stringvalue="LOW">
13929         <webidl> &quot;LOW</webidl>
13930       </EnumValue>
13931     </Enum>
13932     <Enum name="CalendarItemVisibility" id="::Calendar::CalendarItemVisibility">
13933       <webidl>   enum CalendarItemVisibility { &quot;PUBLIC&quot;, &quot;PRIVATE&quot;, &quot;CONFIDENTIAL&quot; };</webidl>
13934       <descriptive>
13935           <brief>
13936  An enumerator that indicates the visibility type of a calendar item.
13937           </brief>
13938          <description>
13939           <p>
13940 The following values are supported:
13941           </p>
13942           <ul>
13943             <li>
13944 PUBLIC - if item visibility is public            </li>
13945             <li>
13946 PRIVATE - if item visibility is private            </li>
13947             <li>
13948 CONFIDENTIAL - if item visibility is confidential            </li>
13949           </ul>
13950          </description>
13951           <version>
13952  1.0
13953           </version>
13954       </descriptive>
13955       <EnumValue stringvalue="PUBLIC">
13956         <webidl> &quot;PUBLIC</webidl>
13957       </EnumValue>
13958       <EnumValue stringvalue="PRIVATE">
13959         <webidl> &quot;PRIVATE</webidl>
13960       </EnumValue>
13961       <EnumValue stringvalue="CONFIDENTIAL">
13962         <webidl> &quot;CONFIDENTIAL</webidl>
13963       </EnumValue>
13964     </Enum>
13965     <Enum name="CalendarItemStatus" id="::Calendar::CalendarItemStatus">
13966       <webidl>   enum CalendarItemStatus { &quot;TENTATIVE&quot;, &quot;CONFIRMED&quot;, &quot;CANCELLED&quot;, &quot;NEEDS_ACTION&quot;, &quot;IN_PROCESS&quot;, &quot;COMPLETED&quot; };</webidl>
13967       <descriptive>
13968           <brief>
13969  An enumerator that indicates the status of a calendar item.
13970           </brief>
13971          <description>
13972           <p>
13973 For an event, the possible values are:
13974           </p>
13975           <ul>
13976             <li>
13977 TENTATIVE - if the event is tentative            </li>
13978             <li>
13979 CONFIRMED - if the event is confirmed            </li>
13980             <li>
13981 CANCELLED -  if the event is cancelled            </li>
13982           </ul>
13983           <p>
13984 For a task, the possible values are:
13985           </p>
13986           <ul>
13987             <li>
13988 NEEDS_ACTION - if the task needs action            </li>
13989             <li>
13990 IN_PROCESS -  if the task is in process or being worked on            </li>
13991             <li>
13992 COMPLETED - if the task has been completed            </li>
13993             <li>
13994 CANCELLED -  if the task has been cancelled            </li>
13995           </ul>
13996          </description>
13997           <version>
13998  1.0
13999           </version>
14000       </descriptive>
14001       <EnumValue stringvalue="TENTATIVE">
14002         <webidl> &quot;TENTATIVE</webidl>
14003       </EnumValue>
14004       <EnumValue stringvalue="CONFIRMED">
14005         <webidl> &quot;CONFIRMED</webidl>
14006       </EnumValue>
14007       <EnumValue stringvalue="CANCELLED">
14008         <webidl> &quot;CANCELLED</webidl>
14009       </EnumValue>
14010       <EnumValue stringvalue="NEEDS_ACTION">
14011         <webidl> &quot;NEEDS_ACTION</webidl>
14012       </EnumValue>
14013       <EnumValue stringvalue="IN_PROCESS">
14014         <webidl> &quot;IN_PROCESS</webidl>
14015       </EnumValue>
14016       <EnumValue stringvalue="COMPLETED">
14017         <webidl> &quot;COMPLETED</webidl>
14018       </EnumValue>
14019     </Enum>
14020     <Interface name="CalendarManagerObject" id="::Calendar::CalendarManagerObject">
14021       <webidl>  [NoInterfaceObject] interface CalendarManagerObject{
14022     readonly attribute <ref>CalendarManager</ref> calendar; 
14023   };</webidl>
14024       <descriptive>
14025           <brief>
14026  This interface gives access to the Calendar API from the <em>tizen.calendar </em>object. 
14027           </brief>
14028           <version>
14029  1.0
14030           </version>
14031       </descriptive>
14032       <ExtendedAttributeList>
14033         <ExtendedAttribute name="NoInterfaceObject">
14034           <webidl>NoInterfaceObject</webidl>
14035         </ExtendedAttribute>
14036       </ExtendedAttributeList>
14037       <Attribute readonly="readonly" name="calendar" id="::Calendar::CalendarManagerObject::calendar">
14038         <webidl>    readonly attribute <ref>CalendarManager</ref> calendar;</webidl>
14039         <Type name="CalendarManager"/>
14040       </Attribute>
14041     </Interface>
14042     <Implements name1="Tizen" name2="CalendarManagerObject">
14043       <webidl>  <ref>Tizen</ref> implements <ref>CalendarManagerObject</ref>;</webidl>
14044     </Implements>
14045     <Interface name="CalendarManager" id="::Calendar::CalendarManager">
14046       <webidl>  [NoInterfaceObject] interface CalendarManager {
14047     void getCalendars(<ref>CalendarType</ref> type,
14048                       <ref>CalendarArraySuccessCallback</ref> successCallback,
14049                       optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
14050
14051     <ref>Calendar</ref> getUnifiedCalendar(<ref>CalendarType</ref> type) raises(<ref>WebAPIException</ref>);
14052
14053     <ref>Calendar</ref> getDefaultCalendar(<ref>CalendarType</ref> type) raises(<ref>WebAPIException</ref>);
14054     
14055     <ref>Calendar</ref> getCalendar(<ref>CalendarType</ref> type, <ref>CalendarId</ref> id) raises(<ref>WebAPIException</ref>);
14056   };</webidl>
14057       <descriptive>
14058           <brief>
14059  This interface provides methods to access calendars and attributes for calendars. 
14060 Once a calendar object is obtained, it is possible to add, remove, or update the information it contains through the Calendar interface methods.   
14061           </brief>
14062           <version>
14063  1.0
14064           </version>
14065       </descriptive>
14066       <ExtendedAttributeList>
14067         <ExtendedAttribute name="NoInterfaceObject">
14068           <webidl>NoInterfaceObject</webidl>
14069         </ExtendedAttribute>
14070       </ExtendedAttributeList>
14071       <Operation name="getCalendars" id="::Calendar::CalendarManager::getCalendars">
14072         <webidl>    void getCalendars(<ref>CalendarType</ref> type,
14073                       <ref>CalendarArraySuccessCallback</ref> successCallback,
14074                       optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
14075         <descriptive>
14076             <brief>
14077  Gets an array of Calendar objects.
14078             </brief>
14079            <description>
14080             <p>
14081 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.
14082             </p>
14083             <p>
14084 If no Calendar object is available, the <em>successCallback()</em> is invoked with an empty array.
14085             </p>
14086             <p>
14087 The errorCallback is launched with these error types:
14088             </p>
14089             <ul>
14090               <li>
14091 InvalidValuesError - if any of the input parameters contain an invalid value.              </li>
14092               <li>
14093 UnknownError - if any other error occurs.              </li>
14094             </ul>
14095            </description>
14096             <version>
14097  1.0
14098             </version>
14099             <privilegelevel>
14100  public
14101             </privilegelevel>
14102             <privilege>
14103  http://tizen.org/privilege/calendar.read
14104             </privilege>
14105             <Code>  var calendar;
14106
14107   function eventFoundCallback(events) {
14108     // The event has been successfully found
14109     // Changes the summary
14110     events[0].summary = 'HTML6 Webinar'; 
14111     calendar.update(events[0]);
14112     console.log('First event was updated!');
14113   }
14114
14115   // Defines the error callback for all the asynchronous calls
14116   function errorCallback(response) {
14117     console.log( 'The following error occurred: ' +  response.name);
14118   }
14119
14120   // Defines the success callback for retrieving the list of calendars
14121   function calendarListCallback(calendars) {
14122     if(calendars.length > 0) {
14123       calendar = calendars[0];
14124       console.log('The calendar id is ' + calendar.id + ' and name ' + calendar.name);
14125
14126       var ev = new tizen.CalendarEvent({description:'HTML5 Introduction',
14127                                          summary:'HTML5 Webinar', 
14128                                          startDate: new tizen.TZDate(2011, 3, 30, 10, 0), 
14129                                          duration: new tizen.TimeDuration(1, &quot;HOURS&quot;),
14130                                          location:'Huesca'});
14131       calendar.add(ev);
14132
14133       // The event has been successfully added
14134       // Checks if the added event can be retrieved from the calendar
14135       // If the calendar was empty, only the item added through add() should be returned
14136       var filter = new tizen.AttributeFilter('summary', 'CONTAINS', 'HTML5');
14137       calendar.find(eventFoundCallback, errorCallback, filter);
14138     }
14139   }
14140
14141   // Gets a list of available calendars
14142   tizen.calendar.getCalendars(&quot;EVENT&quot;, calendarListCallback, errorCallback);
14143  </Code>
14144         </descriptive>
14145         <Type type="void"/>
14146         <ArgumentList>
14147           <Argument name="type">
14148             <descriptive>
14149                 <description><p>
14150  The type of calendar.
14151                 </p></description>
14152             </descriptive>
14153             <Type name="CalendarType"/>
14154           </Argument>
14155           <Argument name="successCallback">
14156             <descriptive>
14157                 <description><p>
14158  The method to invoke when the invocation ends successfully.
14159                 </p></description>
14160             </descriptive>
14161             <Type name="CalendarArraySuccessCallback"/>
14162           </Argument>
14163           <Argument optional="optional" name="errorCallback">
14164             <descriptive>
14165                 <description><p>
14166  The method to invoke when an error occurs. 
14167                 </p></description>
14168             </descriptive>
14169             <Type name="ErrorCallback" nullable="nullable"/>
14170           </Argument>
14171         </ArgumentList>
14172         <Raises>
14173           <RaiseException name="WebAPIException">
14174             <descriptive>
14175                 <description><p>
14176  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
14177                 </p></description>
14178                 <description><p>
14179  with error type SecurityError, if the application does not have the privilege to call this method.
14180                 </p></description>
14181                 <description><p>
14182  with error type NotSupportedError, if this feature is not supported.
14183                 </p></description>
14184             </descriptive>
14185           </RaiseException>
14186         </Raises>
14187       </Operation>
14188       <Operation name="getUnifiedCalendar" id="::Calendar::CalendarManager::getUnifiedCalendar">
14189         <webidl>    <ref>Calendar</ref> getUnifiedCalendar(<ref>CalendarType</ref> type) raises(<ref>WebAPIException</ref>);</webidl>
14190         <descriptive>
14191             <brief>
14192  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>.
14193             </brief>
14194            <description>
14195             <p>
14196 If an item is added to the unified calendar, it will be saved in the default calendar.
14197             </p>
14198            </description>
14199             <version>
14200  2.1
14201             </version>
14202             <privilegelevel>
14203  public
14204             </privilegelevel>
14205             <privilege>
14206  http://tizen.org/privilege/calendar.read
14207             </privilege>
14208             <Code>  var unifiedCalendar;
14209
14210   // Defines the error callback for all the asynchronous calls
14211   function errorCallback(response) {
14212     console.log( 'The following error occurred: ' +  response.name);
14213   }
14214
14215   function eventFoundCallback(events) {
14216     // The event has been successfully found
14217     // Changes the summary
14218     events[0].summary = 'HTML6 Webinar'; 
14219     unifiedCalendar.update(events[0]);
14220     console.log('First event was updated!');
14221   }
14222
14223   // Gets the unified calendar
14224   unifiedCalendar = tizen.calendar.getUnifiedCalendar(&quot;EVENT&quot;);
14225
14226   var ev = new tizen.CalendarEvent({description:'HTML5 Introduction', 
14227                                     summary:'HTML5 Webinar ', 
14228                                     startDate: new tizen.TZDate(2011, 3, 30, 10, 0), 
14229                                     duration: new tizen.TimeDuration(1, &quot;HOURS&quot;),
14230                                     location:'Huesca'});
14231
14232   unifiedCalendar.add(ev);
14233    
14234   // The event has been added
14235   // Checks if the added event can be retrieved from the calendar
14236   // If the calendar was empty, only the item added through add() should be returned
14237   var filter = new tizen.AttributeFilter('summary', 'CONTAINS', 'HTML5');
14238   unifiedCalendar.find(eventFoundCallback, errorCallback, filter);
14239      
14240 </Code>
14241         </descriptive>
14242         <Type name="Calendar">
14243           <descriptive>
14244               <description><p>
14245  Calendar The unified Calendar object.
14246               </p></description>
14247           </descriptive>
14248         </Type>
14249         <ArgumentList>
14250           <Argument name="type">
14251             <descriptive>
14252                 <description><p>
14253  The type of a calendar.
14254                 </p></description>
14255             </descriptive>
14256             <Type name="CalendarType"/>
14257           </Argument>
14258         </ArgumentList>
14259         <Raises>
14260           <RaiseException name="WebAPIException">
14261             <descriptive>
14262                 <description><p>
14263  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
14264                 </p></description>
14265                 <description><p>
14266  with error type InvalidValuesError, if any of the input parameters contain an invalid value.
14267                 </p></description>
14268                 <description><p>
14269  with error type SecurityError, if the application does not have the privilege to call this method.
14270                 </p></description>
14271                 <description><p>
14272  with error type NotSupportedError, if this feature is not supported.
14273                 </p></description>
14274                 <description><p>
14275  with error type UnknownError, if any other error occurs.
14276                 </p></description>
14277             </descriptive>
14278           </RaiseException>
14279         </Raises>
14280       </Operation>
14281       <Operation name="getDefaultCalendar" id="::Calendar::CalendarManager::getDefaultCalendar">
14282         <webidl>    <ref>Calendar</ref> getDefaultCalendar(<ref>CalendarType</ref> type) raises(<ref>WebAPIException</ref>);</webidl>
14283         <descriptive>
14284             <brief>
14285  Gets the default calendar, which is used for new items.
14286             </brief>
14287             <version>
14288  1.0
14289             </version>
14290             <privilegelevel>
14291  public
14292             </privilegelevel>
14293             <privilege>
14294  http://tizen.org/privilege/calendar.read
14295             </privilege>
14296             <Code>  var myCalendar;
14297
14298   // Defines the error callback for all the asynchronous calls
14299   function errorCallback(response) {
14300     console.log( 'The following error occurred: ' +  response.name);
14301   }
14302
14303   function eventFoundCallback(events) {
14304     // The event has been successfully found
14305     // Changes the summary
14306     events[0].summary = 'HTML6 Webinar'; 
14307     myCalendar.update(events[0]);
14308     console.log('First event was updated!');
14309   }
14310
14311   // Gets the default calendar
14312   myCalendar = tizen.calendar.getDefaultCalendar(&quot;EVENT&quot;);
14313
14314   var ev = new tizen.CalendarEvent({description:'HTML5 Introduction', 
14315                                     summary:'HTML5 Webinar ', 
14316                                     startDate: new tizen.TZDate(2011, 3, 30, 10, 0), 
14317                                     duration: new tizen.TimeDuration(1, &quot;HOURS&quot;),
14318                                     location:'Huesca'});
14319                   
14320   myCalendar.add(ev);
14321    
14322   // The event has been added
14323   // Checks if the added event can be retrieved from the calendar
14324   // If the calendar was empty, only the item added through add() should be returned
14325   var filter = new tizen.AttributeFilter('summary', 'CONTAINS', 'HTML5');
14326   myCalendar.find(eventFoundCallback, errorCallback, filter);
14327      
14328 </Code>
14329         </descriptive>
14330         <Type name="Calendar">
14331           <descriptive>
14332               <description><p>
14333  Calendar The default Calendar object.
14334               </p></description>
14335           </descriptive>
14336         </Type>
14337         <ArgumentList>
14338           <Argument name="type">
14339             <descriptive>
14340                 <description><p>
14341  The type of a calendar.
14342                 </p></description>
14343             </descriptive>
14344             <Type name="CalendarType"/>
14345           </Argument>
14346         </ArgumentList>
14347         <Raises>
14348           <RaiseException name="WebAPIException">
14349             <descriptive>
14350                 <description><p>
14351  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
14352                 </p></description>
14353                 <description><p>
14354  with error type InvalidValuesError, if any of the input parameters contain an invalid value.
14355                 </p></description>
14356                 <description><p>
14357  with error type SecurityError, if the application does not have the privilege to call this method.
14358                 </p></description>
14359                 <description><p>
14360  with error type NotSupportedError, if this feature is not supported.
14361                 </p></description>
14362                 <description><p>
14363  with error type UnknownError, if any other error occurs.
14364                 </p></description>
14365             </descriptive>
14366           </RaiseException>
14367         </Raises>
14368       </Operation>
14369       <Operation name="getCalendar" id="::Calendar::CalendarManager::getCalendar">
14370         <webidl>    <ref>Calendar</ref> getCalendar(<ref>CalendarType</ref> type, <ref>CalendarId</ref> id) raises(<ref>WebAPIException</ref>);</webidl>
14371         <descriptive>
14372             <brief>
14373  Gets the calendar with the specified identifier and type.
14374             </brief>
14375             <version>
14376  1.0
14377             </version>
14378             <privilegelevel>
14379  public
14380             </privilegelevel>
14381             <privilege>
14382  http://tizen.org/privilege/calendar.read
14383             </privilege>
14384             <Code>  var calendarId; // calendarId supposed to be initialized
14385   try {
14386     var calendar = tizen.calendar.getCalendar(&quot;EVENT&quot;, calendarId);
14387     console.log(&quot;Successfully retrieved event calendar with id: &quot; + calendarId);
14388   } catch(err) {
14389     console.log(&quot;Error: &quot; + err.name);
14390   }
14391  </Code>
14392         </descriptive>
14393         <Type name="Calendar">
14394           <descriptive>
14395               <description><p>
14396  Calendar The matching Calendar object.
14397               </p></description>
14398           </descriptive>
14399         </Type>
14400         <ArgumentList>
14401           <Argument name="type">
14402             <descriptive>
14403                 <description><p>
14404  The type of a calendar.
14405                 </p></description>
14406             </descriptive>
14407             <Type name="CalendarType"/>
14408           </Argument>
14409           <Argument name="id">
14410             <descriptive>
14411                 <description><p>
14412  The calendar identifier.
14413                 </p></description>
14414             </descriptive>
14415             <Type name="CalendarId"/>
14416           </Argument>
14417         </ArgumentList>
14418         <Raises>
14419           <RaiseException name="WebAPIException">
14420             <descriptive>
14421                 <description><p>
14422  with error type NotFoundError, if there is no calendar with the given identifier.  
14423                 </p></description>
14424                 <description><p>
14425  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
14426                 </p></description>
14427                 <description><p>
14428  with error type InvalidValuesError, if any of the input parameters contain an invalid value.
14429                 </p></description>
14430                 <description><p>
14431  with error type SecurityError, if the application does not have the privilege to call this method.
14432                 </p></description>
14433                 <description><p>
14434  with error type NotSupportedError, if this feature is not supported.
14435                 </p></description>
14436                 <description><p>
14437  with error type UnknownError, if any other error occurs.
14438                 </p></description>
14439             </descriptive>
14440           </RaiseException>
14441         </Raises>
14442       </Operation>
14443     </Interface>
14444     <Interface name="Calendar" id="::Calendar::Calendar">
14445       <webidl>  [NoInterfaceObject] interface Calendar {
14446     
14447     readonly attribute <ref>CalendarId</ref> id;
14448
14449     readonly attribute DOMString name;
14450                               
14451     <ref>CalendarItem</ref> get(<ref>CalendarItemId</ref> id) raises(<ref>WebAPIException</ref>);
14452
14453     void add(<ref>CalendarItem</ref> item) raises(<ref>WebAPIException</ref>);
14454
14455     void addBatch(<ref>CalendarItem</ref>[] items,
14456                   optional <ref>CalendarItemArraySuccessCallback</ref>? successCallback,
14457                   optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
14458
14459     void update(<ref>CalendarItem</ref> item,
14460                 optional boolean? updateAllInstances) raises(<ref>WebAPIException</ref>);
14461
14462      void updateBatch(<ref>CalendarItem</ref>[] items,
14463                      optional <ref>SuccessCallback</ref>? successCallback,
14464                      optional <ref>ErrorCallback</ref>? errorCallback,
14465                      optional boolean? updateAllInstances) raises(<ref>WebAPIException</ref>);
14466
14467     void remove(<ref>CalendarItemId</ref> id) raises(<ref>WebAPIException</ref>);
14468
14469     void removeBatch(<ref>CalendarItemId</ref>[] ids,
14470                      optional <ref>SuccessCallback</ref>? successCallback,
14471                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
14472  
14473     void find(<ref>CalendarItemArraySuccessCallback</ref> successCallback,
14474               optional <ref>ErrorCallback</ref>? errorCallback,
14475               optional <ref>AbstractFilter</ref>? filter,
14476               optional <ref>SortMode</ref>? sortMode) raises(<ref>WebAPIException</ref>);
14477                                 
14478     long addChangeListener(<ref>CalendarChangeCallback</ref> successCallback) raises(<ref>WebAPIException</ref>);
14479                       
14480     void removeChangeListener(long watchId) raises(<ref>WebAPIException</ref>);
14481   };</webidl>
14482       <descriptive>
14483           <brief>
14484  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.
14485           </brief>
14486          <description>
14487           <p>
14488 This interface offers the following methods to manage events in a calendar:
14489           </p>
14490           <ul>
14491             <li>
14492  Finding items using a key-value filter.            </li>
14493             <li>
14494  Adding items to a specific calendar using <em>add() </em>/ <em>addBatch() </em>methods.            </li>
14495             <li>
14496  Updating existing items using <em>update() </em>/ <em>updateBatch()</em> methods.            </li>
14497             <li>
14498  Deleting existing items using <em>remove()</em> / <em>removeBatch() </em>methods.            </li>
14499             <li>
14500  Tracking calendar changes using <em>addChangeListener()</em> / <em>removeChangeListener() </em>methods.            </li>
14501           </ul>
14502          </description>
14503           <version>
14504  1.0
14505           </version>
14506       </descriptive>
14507       <ExtendedAttributeList>
14508         <ExtendedAttribute name="NoInterfaceObject">
14509           <webidl>NoInterfaceObject</webidl>
14510         </ExtendedAttribute>
14511       </ExtendedAttributeList>
14512       <Attribute readonly="readonly" name="id" id="::Calendar::Calendar::id">
14513         <webidl>    readonly attribute <ref>CalendarId</ref> id;</webidl>
14514         <descriptive>
14515             <brief>
14516  An attribute to uniquely identify a calendar.
14517             </brief>
14518             <version>
14519  1.0
14520             </version>
14521         </descriptive>
14522         <Type name="CalendarId"/>
14523       </Attribute>
14524       <Attribute readonly="readonly" name="name" id="::Calendar::Calendar::name">
14525         <webidl>    readonly attribute DOMString name;</webidl>
14526         <descriptive>
14527             <brief>
14528  An attribute to assign a readable (descriptive) name for a calendar, such as work, personal, etc.
14529             </brief>
14530             <version>
14531  1.0
14532             </version>
14533             <Code>  // Gets the default calendar and show its name
14534   var calendar = tizen.calendar.getDefaultCalendar(&quot;EVENT&quot;);
14535   console.log('The calendar name is ' + calendar.name);
14536  </Code>
14537         </descriptive>
14538         <Type type="DOMString"/>
14539       </Attribute>
14540       <Operation name="get" id="::Calendar::Calendar::get">
14541         <webidl>    <ref>CalendarItem</ref> get(<ref>CalendarItemId</ref> id) raises(<ref>WebAPIException</ref>);</webidl>
14542         <descriptive>
14543             <brief>
14544  Gets the calendar item with the specified identifier.
14545             </brief>
14546             <version>
14547  1.0
14548             </version>
14549             <privilegelevel>
14550  public
14551             </privilegelevel>
14552             <privilege>
14553  http://tizen.org/privilege/calendar.read
14554             </privilege>
14555             <Code>  var myCalendar; // Calendar supposed to be initialized
14556   var itemId; // Calendar item identifier
14557   try {
14558     var item = myCalendar.get(itemId);
14559     console.log(&quot;Successfully retrieved item with id: &quot; + itemId);
14560   } catch(err) {
14561     console.log(&quot;Error: &quot; + err.name);
14562   }
14563  </Code>
14564         </descriptive>
14565         <Type name="CalendarItem">
14566           <descriptive>
14567               <description><p>
14568  CalendarItem The matching <em>CalendarItem </em>object.
14569               </p></description>
14570           </descriptive>
14571         </Type>
14572         <ArgumentList>
14573           <Argument name="id">
14574             <descriptive>
14575                 <description><p>
14576  The Calendar item identifier.
14577                 </p></description>
14578             </descriptive>
14579             <Type name="CalendarItemId"/>
14580           </Argument>
14581         </ArgumentList>
14582         <Raises>
14583           <RaiseException name="WebAPIException">
14584             <descriptive>
14585                 <description><p>
14586  with error type NotFoundError, if there is no calendar item with the given identifier.
14587                 </p></description>
14588                 <description><p>
14589  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
14590                 </p></description>
14591                 <description><p>
14592  with error type InvalidValuesError, if any of the input parameters contain an invalid value.
14593                 </p></description>
14594                 <description><p>
14595  with error type SecurityError, if the application does not have the privilege to call this method.
14596                 </p></description>
14597                 <description><p>
14598  with error type NotSupportedError, if this feature is not supported.
14599                 </p></description>
14600                 <description><p>
14601  with error type UnknownError, if any other error occurs.
14602                 </p></description>
14603             </descriptive>
14604           </RaiseException>
14605         </Raises>
14606       </Operation>
14607       <Operation name="add" id="::Calendar::Calendar::add">
14608         <webidl>    void add(<ref>CalendarItem</ref> item) raises(<ref>WebAPIException</ref>);</webidl>
14609         <descriptive>
14610             <brief>
14611  Adds an item to the calendar synchronously.
14612             </brief>
14613            <description>
14614             <p>
14615 If the item is successfully inserted in the calendar, the <em>CalendarItem </em>will have its identifier (id attribute) set when the method returns.
14616             </p>
14617             <p>
14618 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.
14619             </p>
14620            </description>
14621             <version>
14622  1.0
14623             </version>
14624             <privilegelevel>
14625  public
14626             </privilegelevel>
14627             <privilege>
14628  http://tizen.org/privilege/calendar.write
14629             </privilege>
14630             <Code>  // Gets the default calendar
14631   var calendar = tizen.calendar.getDefaultCalendar(&quot;EVENT&quot;);
14632   
14633   var ev = new tizen.CalendarEvent({description:'HTML5 Introduction', 
14634                                    summary:'HTML5 Webinar ', 
14635                                    startDate: new tizen.TZDate(2011, 3, 30, 10, 0), 
14636                                    duration: new tizen.TimeDuration(1, &quot;HOURS&quot;),
14637                                    location:'Huesca'});
14638                  
14639   calendar.add(ev);
14640   console.log('Event added with uid ' + ev.id.uid);
14641  </Code>
14642         </descriptive>
14643         <Type type="void"/>
14644         <ArgumentList>
14645           <Argument name="item">
14646             <descriptive>
14647                 <description><p>
14648  The calendar item to be added.
14649                 </p></description>
14650             </descriptive>
14651             <Type name="CalendarItem"/>
14652           </Argument>
14653         </ArgumentList>
14654         <Raises>
14655           <RaiseException name="WebAPIException">
14656             <descriptive>
14657                 <description><p>
14658  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
14659                 </p></description>
14660                 <description><p>
14661  with error type InvalidValuesError, if any of the input parameters contain an invalid value.
14662                 </p></description>
14663                 <description><p>
14664  with error type SecurityError, if the application does not have the privilege to call this method.
14665                 </p></description>
14666                 <description><p>
14667  with error type NotSupportedError, if the feature is not supported.
14668                 </p></description>
14669                 <description><p>
14670  with error type UnknownError, if any other error occurs.
14671                 </p></description>
14672             </descriptive>
14673           </RaiseException>
14674         </Raises>
14675       </Operation>
14676       <Operation name="addBatch" id="::Calendar::Calendar::addBatch">
14677         <webidl>    void addBatch(<ref>CalendarItem</ref>[] items,
14678                   optional <ref>CalendarItemArraySuccessCallback</ref>? successCallback,
14679                   optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
14680         <descriptive>
14681             <brief>
14682  Adds an array of items to the calendar asynchronously.
14683             </brief>
14684            <description>
14685             <p>
14686 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).
14687             </p>
14688             <p>
14689 The <em>errorCallback()</em> is launched with these error types:
14690             </p>
14691             <ul>
14692               <li>
14693 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>
14694               <li>
14695 UnknownError - if any other error occurs.               </li>
14696             </ul>
14697             <p>
14698 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.
14699             </p>
14700            </description>
14701             <version>
14702  1.0
14703             </version>
14704             <privilegelevel>
14705  public
14706             </privilegelevel>
14707             <privilege>
14708  http://tizen.org/privilege/calendar.write
14709             </privilege>
14710             <Code>  // Defines the error callback.
14711   function errorCallback(response) {
14712     console.log( 'The following error occurred: ' +  response.name);
14713   }
14714
14715   function addEventsSuccess(events) {
14716     console.log(&quot;Successfully added &quot; + events.length + &quot; events!&quot;);
14717   }
14718
14719   // Gets the default calendar
14720   var calendar = tizen.calendar.getDefaultCalendar(&quot;EVENT&quot;);
14721   
14722   var ev = new tizen.CalendarEvent({description:'HTML5 Introduction', 
14723                                    summary:'HTML5 Webinar ', 
14724                                    startDate: new tizen.TZDate(2011, 3, 30, 10, 0), 
14725                                    duration: new tizen.TimeDuration(1, &quot;HOURS&quot;),
14726                                    location:'Huesca'});
14727                  
14728   calendar.addBatch([ev], addEventsSuccess, errorCallback);
14729  </Code>
14730         </descriptive>
14731         <Type type="void"/>
14732         <ArgumentList>
14733           <Argument name="items">
14734             <descriptive>
14735                 <description><p>
14736  The list of calendar items to add.
14737                 </p></description>
14738             </descriptive>
14739             <Type type="array">
14740               <Type name="CalendarItem"/>
14741             </Type>
14742           </Argument>
14743           <Argument optional="optional" name="successCallback">
14744             <descriptive>
14745                 <description><p>
14746  The method to call when the invocation ends successfully.
14747                 </p></description>
14748             </descriptive>
14749             <Type name="CalendarItemArraySuccessCallback" nullable="nullable"/>
14750           </Argument>
14751           <Argument optional="optional" name="errorCallback">
14752             <descriptive>
14753                 <description><p>
14754  The method to invoke when the request fails.
14755                 </p></description>
14756             </descriptive>
14757             <Type name="ErrorCallback" nullable="nullable"/>
14758           </Argument>
14759         </ArgumentList>
14760         <Raises>
14761           <RaiseException name="WebAPIException">
14762             <descriptive>
14763                 <description><p>
14764  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
14765                 </p></description>
14766                 <description><p>
14767  with error type SecurityError, if the application does not have the privilege to call this method.
14768                 </p></description>
14769                 <description><p>
14770  with error type NotSupportedError, if the feature is not supported.
14771                 </p></description>
14772             </descriptive>
14773           </RaiseException>
14774         </Raises>
14775       </Operation>
14776       <Operation name="update" id="::Calendar::Calendar::update">
14777         <webidl>    void update(<ref>CalendarItem</ref> item,
14778                 optional boolean? updateAllInstances) raises(<ref>WebAPIException</ref>);</webidl>
14779         <descriptive>
14780             <brief>
14781  Updates an existing item in the calendar synchronously with the one specified in the argument.
14782             </brief>
14783            <description>
14784             <p>
14785 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>.
14786             </p>
14787            </description>
14788             <version>
14789  1.0
14790             </version>
14791             <privilegelevel>
14792  public
14793             </privilegelevel>
14794             <privilege>
14795  http://tizen.org/privilege/calendar.write
14796             </privilege>
14797             <Code>  var myCalendar;
14798
14799   // Defines the error callback.
14800   function errorCallback(response) {
14801     console.log( 'The following error occurred: ' +  response.name);
14802   }
14803
14804   // Defines the event success callback.
14805   function eventSearchSuccessCallback(events) {
14806     events[0].description = 'New Description';
14807     // Updates the first existing event.
14808     myCalendar.update(events[0]);
14809     console.log(&quot;The first item description was updated!&quot;);
14810   }
14811   
14812   // Gets the default calendar
14813   myCalendar = tizen.calendar.getDefaultCalendar(&quot;EVENT&quot;);
14814
14815   // Finds all events in a Calendar
14816   myCalendar.find(eventSearchSuccessCallback, errorCallback);
14817  </Code>
14818         </descriptive>
14819         <Type type="void"/>
14820         <ArgumentList>
14821           <Argument name="item">
14822             <descriptive>
14823                 <description><p>
14824  The Item object to update.
14825                 </p></description>
14826             </descriptive>
14827             <Type name="CalendarItem"/>
14828           </Argument>
14829           <Argument optional="optional" name="updateAllInstances">
14830             <descriptive>
14831                 <description><p>
14832  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.
14833                 </p></description>
14834             </descriptive>
14835             <Type type="boolean" nullable="nullable"/>
14836           </Argument>
14837         </ArgumentList>
14838         <Raises>
14839           <RaiseException name="WebAPIException">
14840             <descriptive>
14841                 <description><p>
14842  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
14843                 </p></description>
14844                 <description><p>
14845  with error type InvalidValuesError, if any of the input parameters contain an invalid value.
14846                 </p></description>
14847                 <description><p>
14848  with error type SecurityError, if the application does not have the privilege to call this method.
14849                 </p></description>
14850                 <description><p>
14851  with error type NotSupportedError, if the feature is not supported.
14852                 </p></description>
14853                 <description><p>
14854  with error type UnknownError, if any other error occurs.
14855                 </p></description>
14856             </descriptive>
14857           </RaiseException>
14858         </Raises>
14859       </Operation>
14860       <Operation name="updateBatch" id="::Calendar::Calendar::updateBatch">
14861         <webidl>     void updateBatch(<ref>CalendarItem</ref>[] items,
14862                      optional <ref>SuccessCallback</ref>? successCallback,
14863                      optional <ref>ErrorCallback</ref>? errorCallback,
14864                      optional boolean? updateAllInstances) raises(<ref>WebAPIException</ref>);</webidl>
14865         <descriptive>
14866             <brief>
14867  Updates an array of existing items in the calendar asynchronously with the specified values in the argument.
14868             </brief>
14869            <description>
14870             <p>
14871 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.
14872             </p>
14873             <p>
14874 The <em>errorCallback() </em>is launched with these error types:
14875             </p>
14876             <ul>
14877               <li>
14878 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>
14879               <li>
14880 UnknownError - if any other error occurs.              </li>
14881             </ul>
14882            </description>
14883             <version>
14884  1.0
14885             </version>
14886             <privilegelevel>
14887  public
14888             </privilegelevel>
14889             <privilege>
14890  http://tizen.org/privilege/calendar.write
14891             </privilege>
14892             <Code>  var myCalendar;
14893
14894   // Defines the error callback.
14895   function errorCallback(response) {
14896     console.log( 'The following error occurred: ' +  response.name);
14897   }
14898
14899   // Defines the success callback
14900   function updateEventsSuccess() {
14901     console.log(&quot;Successfully updated !&quot; );
14902   }
14903
14904   // Defines the event success callback.
14905   function eventSearchSuccessCallback(events) {
14906     events[0].description = 'New Description 1';
14907     events[1].description = 'New Description 2';
14908     // Update the first two existing events.
14909     myCalendar.updateBatch(events.slice(0,2), updateEventsSuccess, errorCallback);
14910   }
14911
14912   // Gets the default calendar
14913   myCalendar = tizen.calendar.getDefaultCalendar(&quot;EVENT&quot;);
14914
14915   // Finds all events in Calendar
14916   myCalendar.find(eventSearchSuccessCallback, errorCallback);
14917  </Code>
14918         </descriptive>
14919         <Type type="void"/>
14920         <ArgumentList>
14921           <Argument name="items">
14922             <descriptive>
14923                 <description><p>
14924  The list of calendar item objects to update.
14925                 </p></description>
14926             </descriptive>
14927             <Type type="array">
14928               <Type name="CalendarItem"/>
14929             </Type>
14930           </Argument>
14931           <Argument optional="optional" name="successCallback">
14932             <descriptive>
14933                 <description><p>
14934  The method to invoke when the <em>updateEvents() </em>request succeeds.
14935                 </p></description>
14936             </descriptive>
14937             <Type name="SuccessCallback" nullable="nullable"/>
14938           </Argument>
14939           <Argument optional="optional" name="errorCallback">
14940             <descriptive>
14941                 <description><p>
14942  The method to invoke when the <em>updateEvents() </em>request fails.
14943                 </p></description>
14944             </descriptive>
14945             <Type name="ErrorCallback" nullable="nullable"/>
14946           </Argument>
14947           <Argument optional="optional" name="updateAllInstances">
14948             <descriptive>
14949                 <description><p>
14950  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.
14951                 </p></description>
14952             </descriptive>
14953             <Type type="boolean" nullable="nullable"/>
14954           </Argument>
14955         </ArgumentList>
14956         <Raises>
14957           <RaiseException name="WebAPIException">
14958             <descriptive>
14959                 <description><p>
14960  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
14961                 </p></description>
14962                 <description><p>
14963  with error type SecurityError, if the application does not have the privilege to call this method.
14964                 </p></description>
14965                 <description><p>
14966  with error type NotSupportedError, if the feature is not supported.
14967                 </p></description>
14968             </descriptive>
14969           </RaiseException>
14970         </Raises>
14971       </Operation>
14972       <Operation name="remove" id="::Calendar::Calendar::remove">
14973         <webidl>    void remove(<ref>CalendarItemId</ref> id) raises(<ref>WebAPIException</ref>);</webidl>
14974         <descriptive>
14975             <brief>
14976  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.
14977             </brief>
14978             <version>
14979  1.0
14980             </version>
14981             <privilegelevel>
14982  public
14983             </privilegelevel>
14984             <privilege>
14985  http://tizen.org/privilege/calendar.write
14986             </privilege>
14987             <remark>
14988  <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.
14989             </remark>
14990             <Code>  var myCalendar;
14991
14992   // Defines the error callback.
14993   function errorCallback(response) {
14994     console.log( 'The following error occurred: ' +  response.name);
14995   }
14996
14997   // Defines the event success callback.
14998   function eventSearchSuccessCallback(events) {
14999     // Deletes the first existing event.
15000     myCalendar.remove(events[0].id);
15001     console.log('The first event was removed');
15002   }
15003
15004   // Gets default calendar
15005   myCalendar = tizen.calendar.getDefaultCalendar(&quot;EVENT&quot;);
15006   
15007   // Finds all events in Calendar
15008   myCalendar.find(eventSearchSuccessCallback, errorCallback);
15009  </Code>
15010         </descriptive>
15011         <Type type="void"/>
15012         <ArgumentList>
15013           <Argument name="id">
15014             <descriptive>
15015                 <description><p>
15016  The identifier (ID attribute) of the item object to delete.
15017                 </p></description>
15018             </descriptive>
15019             <Type name="CalendarItemId"/>
15020           </Argument>
15021         </ArgumentList>
15022         <Raises>
15023           <RaiseException name="WebAPIException">
15024             <descriptive>
15025                 <description><p>
15026  with error type NotFoundError, if the identifier does not match any item in the calendar.
15027                 </p></description>
15028                 <description><p>
15029  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
15030                 </p></description>
15031                 <description><p>
15032  with error type InvalidValuesError, if any of the input parameters contain an invalid value.
15033                 </p></description>
15034                 <description><p>
15035  with error type SecurityError, if the application does not have the privilege to call this method.
15036                 </p></description>
15037                 <description><p>
15038  with error type NotSupportedError, if the feature is not supported.
15039                 </p></description>
15040                 <description><p>
15041  with error type UnknownError, if the item could not be removed because of an unknown error.
15042                 </p></description>
15043             </descriptive>
15044           </RaiseException>
15045         </Raises>
15046       </Operation>
15047       <Operation name="removeBatch" id="::Calendar::Calendar::removeBatch">
15048         <webidl>    void removeBatch(<ref>CalendarItemId</ref>[] ids,
15049                      optional <ref>SuccessCallback</ref>? successCallback,
15050                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
15051         <descriptive>
15052             <brief>
15053  Removes several items from the calendar asynchronously depending on the specified identifiers.
15054             </brief>
15055            <description>
15056             <p>
15057 The errorCallback is launched with these error types:
15058             </p>
15059             <ul>
15060               <li>
15061 NotFoundError - if an identifier in the <em>ids </em>parameter does not correspond to the ID attribute of an item in the calendar.              </li>
15062               <li>
15063 InvalidValuesError - if any of the input parameters contain an invalid value.              </li>
15064               <li>
15065 UnknownError - if any other error occurs.              </li>
15066             </ul>
15067            </description>
15068             <version>
15069  1.0
15070             </version>
15071             <privilegelevel>
15072  public
15073             </privilegelevel>
15074             <privilege>
15075  http://tizen.org/privilege/calendar.write
15076             </privilege>
15077             <remark>
15078  <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.
15079             </remark>
15080             <Code>  var myCalendar;
15081
15082   // Defines the error callback.
15083   function errorCallback(response) {
15084     console.log( 'The following error occurred: ' +  response.name);
15085   }
15086
15087   // Defines the removeBatch callback
15088   function removeBatchCallback() {
15089     console.log(&quot;Requested events were successfully removed.&quot;);
15090   }
15091
15092   // Defines the event search success callback.
15093   function eventSearchSuccessCallback(events) {
15094     // Deletes the first two existing events.
15095     myCalendar.removeBatch([events[0].id, events[1].id], 
15096                            removeBatchCallback, 
15097                            errorCallback);
15098   }
15099
15100   // Gets default calendar
15101   myCalendar = tizen.calendar.getDefaultCalendar(&quot;EVENT&quot;);
15102     
15103   // Retrieves all events in Calendar
15104   myCalendar.find(eventSearchSuccessCallback, errorCallback);
15105  </Code>
15106         </descriptive>
15107         <Type type="void"/>
15108         <ArgumentList>
15109           <Argument name="ids">
15110             <descriptive>
15111                 <description><p>
15112  The identifiers (<em>id </em>attribute) of the items to delete.
15113                 </p></description>
15114             </descriptive>
15115             <Type type="array">
15116               <Type name="CalendarItemId"/>
15117             </Type>
15118           </Argument>
15119           <Argument optional="optional" name="successCallback">
15120             <descriptive>
15121                 <description><p>
15122  The method to invoke when the <em>removeBatch()</em> request succeeds.
15123                 </p></description>
15124             </descriptive>
15125             <Type name="SuccessCallback" nullable="nullable"/>
15126           </Argument>
15127           <Argument optional="optional" name="errorCallback">
15128             <descriptive>
15129                 <description><p>
15130  The method to invoke when the <em>removeBatch()</em> request fails.
15131                 </p></description>
15132             </descriptive>
15133             <Type name="ErrorCallback" nullable="nullable"/>
15134           </Argument>
15135         </ArgumentList>
15136         <Raises>
15137           <RaiseException name="WebAPIException">
15138             <descriptive>
15139                 <description><p>
15140  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
15141                 </p></description>
15142                 <description><p>
15143  with error type SecurityError, if the application does not have the privilege to call this method.
15144                 </p></description>
15145                 <description><p>
15146  with error type NotSupportedError, if the feature is not supported.
15147                 </p></description>
15148             </descriptive>
15149           </RaiseException>
15150         </Raises>
15151       </Operation>
15152       <Operation name="find" id="::Calendar::Calendar::find">
15153         <webidl>    void find(<ref>CalendarItemArraySuccessCallback</ref> successCallback,
15154               optional <ref>ErrorCallback</ref>? errorCallback,
15155               optional <ref>AbstractFilter</ref>? filter,
15156               optional <ref>SortMode</ref>? sortMode) raises(<ref>WebAPIException</ref>);</webidl>
15157         <descriptive>
15158             <brief>
15159  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.
15160             </brief>
15161            <description>
15162             <p>
15163 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>.
15164 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>.
15165 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.
15166             </p>
15167             <p>
15168 The errorCallback is launched with these error types:
15169             </p>
15170             <ul>
15171               <li>
15172 InvalidValuesError - if any of the input parameters contain an invalid value.              </li>
15173               <li>
15174 UnknownError - if any other error occurs.              </li>
15175             </ul>
15176             <p>
15177 <b>Filter specific remarks:</b>            </p>
15178             <ul>
15179               <li>
15180 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>
15181               <li>
15182 For event filtering based on the identifier, the identifier type should be CalendarEventID (<em>uid</em> and <em>rid</em>).
15183 If no recurrence ID is given, the filter will match both the parent event and all its detached instances.              </li>
15184             </ul>
15185            </description>
15186             <version>
15187  1.0
15188             </version>
15189             <privilegelevel>
15190  public
15191             </privilegelevel>
15192             <privilege>
15193  http://tizen.org/privilege/calendar.read
15194             </privilege>
15195             <Code>  // Defines the error callback.
15196   function errorCallback(response) {
15197     console.log( 'The following error occurred: ' +  response.name);
15198   }
15199
15200   // Defines the event search success callback.
15201   function eventSearchSuccessCallback(events) {
15202     console.log(events.length + ' results found.');
15203   }
15204
15205   // Gets default calendar
15206   var calendar = tizen.calendar.getDefaultCalendar(&quot;EVENT&quot;);
15207   
15208   // Finds all events the calendar that contain in the summary the string Tizen.
15209   var filter = new tizen.AttributeFilter('summary', 'CONTAINS', 'Tizen');
15210
15211   // The events returned by the find() query will be sorted by ascending summary
15212   var sortingMode = new tizen.SortMode('summary', 'ASC');
15213                         
15214   calendar.find(eventSearchSuccessCallback, errorCallback, filter, sortingMode);
15215  </Code>
15216         </descriptive>
15217         <Type type="void"/>
15218         <ArgumentList>
15219           <Argument name="successCallback">
15220             <descriptive>
15221                 <description><p>
15222  The method to call when the invocation ends successfully.
15223                 </p></description>
15224             </descriptive>
15225             <Type name="CalendarItemArraySuccessCallback"/>
15226           </Argument>
15227           <Argument optional="optional" name="errorCallback">
15228             <descriptive>
15229                 <description><p>
15230  The method to call when an error occurs.
15231                 </p></description>
15232             </descriptive>
15233             <Type name="ErrorCallback" nullable="nullable"/>
15234           </Argument>
15235           <Argument optional="optional" name="filter">
15236             <descriptive>
15237                 <description><p>
15238  The supplied data used to filter the results of the <em>find() </em>method.
15239                 </p></description>
15240             </descriptive>
15241             <Type name="AbstractFilter" nullable="nullable"/>
15242           </Argument>
15243           <Argument optional="optional" name="sortMode">
15244             <descriptive>
15245                 <description><p>
15246  The sort order in which the items return.
15247                 </p></description>
15248             </descriptive>
15249             <Type name="SortMode" nullable="nullable"/>
15250           </Argument>
15251         </ArgumentList>
15252         <Raises>
15253           <RaiseException name="WebAPIException">
15254             <descriptive>
15255                 <description><p>
15256  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
15257                 </p></description>
15258                 <description><p>
15259  with error type SecurityError, if the application does not have the privilege to call this method.
15260                 </p></description>
15261                 <description><p>
15262  with error type NotSupportedError, if the feature is not supported.
15263                 </p></description>
15264             </descriptive>
15265           </RaiseException>
15266         </Raises>
15267       </Operation>
15268       <Operation name="addChangeListener" id="::Calendar::Calendar::addChangeListener">
15269         <webidl>    long addChangeListener(<ref>CalendarChangeCallback</ref> successCallback) raises(<ref>WebAPIException</ref>);</webidl>
15270         <descriptive>
15271             <brief>
15272  Adds a listener to receive notifications about calendar changes.
15273             </brief>
15274            <description>
15275             <p>
15276 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.
15277             </p>
15278            </description>
15279             <version>
15280  1.0
15281             </version>
15282             <privilegelevel>
15283  public
15284             </privilegelevel>
15285             <privilege>
15286  http://tizen.org/privilege/calendar.read
15287             </privilege>
15288             <Code>  var watcherId = 0; // watcher identifier
15289   var calendar; // This example assumes calendar is initialized
15290
15291   var watcher = {
15292     onitemsadded: function(items) {
15293       console.log(items.length + ' items were added');
15294     },
15295     onitemsupdated: function(items) {
15296       console.log(items.length + ' items were updated');
15297     },
15298     onitemsremoved: function(ids) {
15299       console.log(ids.length + ' items were removed');
15300     }
15301   };
15302
15303   // Registers to be notified when the calendar changes
15304   watcherId = calendar.addChangeListener(watcher);
15305  </Code>
15306         </descriptive>
15307         <Type type="long">
15308           <descriptive>
15309               <description><p>
15310  long The identifier used to clear the watch subscription.
15311               </p></description>
15312           </descriptive>
15313         </Type>
15314         <ArgumentList>
15315           <Argument name="successCallback">
15316             <descriptive>
15317                 <description><p>
15318  The methods to invoke on receiving calendar change notifications.
15319                 </p></description>
15320             </descriptive>
15321             <Type name="CalendarChangeCallback"/>
15322           </Argument>
15323         </ArgumentList>
15324         <Raises>
15325           <RaiseException name="WebAPIException">
15326             <descriptive>
15327                 <description><p>
15328  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
15329                 </p></description>
15330                 <description><p>
15331  with error type InvalidValuesError, if any of the input parameters contain an invalid value.
15332                 </p></description>
15333                 <description><p>
15334  with error type SecurityError, if the application does not have the privilege to call this method.
15335                 </p></description>
15336                 <description><p>
15337  with error type NotSupportedError, if the feature is not supported.
15338                 </p></description>
15339                 <description><p>
15340  with error type UnknownError, if any other error occurs.
15341                 </p></description>
15342             </descriptive>
15343           </RaiseException>
15344         </Raises>
15345       </Operation>
15346       <Operation name="removeChangeListener" id="::Calendar::Calendar::removeChangeListener">
15347         <webidl>    void removeChangeListener(long watchId) raises(<ref>WebAPIException</ref>);</webidl>
15348         <descriptive>
15349             <brief>
15350  Unsubscribes from receiving notification for a calendar item changes.
15351             </brief>
15352            <description>
15353             <p>
15354 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.
15355             </p>
15356            </description>
15357             <version>
15358  1.0
15359             </version>
15360             <privilegelevel>
15361  public
15362             </privilegelevel>
15363             <privilege>
15364  http://tizen.org/privilege/calendar.read
15365             </privilege>
15366             <Code>  var watcherId = 0; // watcher identifier
15367   var calendar; // This example assumes calendar is initialized
15368
15369   // Receives calendar changes
15370   var watcher = {
15371     onitemsadded: function(items) {
15372       console.log(items.length + ' items were added');
15373     },
15374     onitemsupdated: function(items) {
15375       console.log(evitemsents.length + ' items were updated');
15376     },
15377     onitemsremoved: function(ids) {
15378       console.log(ids.length + ' items were removed');
15379     }
15380   };
15381
15382   // Registers to be notified when the calendar changes
15383   watcherId = calendar.addChangeListener(watcher);
15384
15385   // Cancels the watch operation
15386   calendar.removeChangeListener(watcherId);
15387  </Code>
15388         </descriptive>
15389         <Type type="void"/>
15390         <ArgumentList>
15391           <Argument name="watchId">
15392             <descriptive>
15393                 <description><p>
15394  Subscription Identifier.
15395                 </p></description>
15396             </descriptive>
15397             <Type type="long"/>
15398           </Argument>
15399         </ArgumentList>
15400         <Raises>
15401           <RaiseException name="WebAPIException">
15402             <descriptive>
15403                 <description><p>
15404  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
15405                 </p></description>
15406                 <description><p>
15407  with error type InvalidValuesError, if any of the input parameters contain an invalid value.
15408                 </p></description>
15409                 <description><p>
15410  with error type SecurityError, if the application does not have the privilege to call this method.
15411                 </p></description>
15412                 <description><p>
15413  with error type NotSupportedError, if the feature is not supported.
15414                 </p></description>
15415                 <description><p>
15416  with error type UnknownError if any other error occurs.
15417                 </p></description>
15418             </descriptive>
15419           </RaiseException>
15420         </Raises>
15421       </Operation>
15422     </Interface>
15423     <Dictionary name="CalendarItemInit" id="::Calendar::CalendarItemInit">
15424       <webidl>  dictionary CalendarItemInit {
15425     DOMString description;
15426     DOMString summary;
15427     boolean isAllDay;
15428     <ref>TZDate</ref> startDate;
15429     <ref>TimeDuration</ref> duration;
15430     DOMString location;
15431     <ref>SimpleCoordinates</ref> geolocation;
15432     DOMString organizer;
15433     <ref>CalendarItemVisibility</ref> visibility;
15434     <ref>CalendarItemStatus</ref> status;
15435     <ref>CalendarItemPriority</ref> priority;
15436     <ref>CalendarAlarm</ref>[] alarms;
15437     DOMString[] categories;
15438     <ref>CalendarAttendee</ref>[] attendees;
15439   };</webidl>
15440       <descriptive>
15441           <brief>
15442  A dictionary that is used for creating calendar items.
15443           </brief>
15444          <description>
15445           <p>
15446 These attributes are shared by both calendar events and tasks.
15447           </p>
15448          </description>
15449           <version>
15450  1.0
15451           </version>
15452       </descriptive>
15453       <DictionaryMember name="description" id="::Calendar::CalendarItemInit::description">
15454         <webidl>    DOMString description;</webidl>
15455         <Type type="DOMString"/>
15456       </DictionaryMember>
15457       <DictionaryMember name="summary" id="::Calendar::CalendarItemInit::summary">
15458         <webidl>    DOMString summary;</webidl>
15459         <Type type="DOMString"/>
15460       </DictionaryMember>
15461       <DictionaryMember name="isAllDay" id="::Calendar::CalendarItemInit::isAllDay">
15462         <webidl>    boolean isAllDay;</webidl>
15463         <Type type="boolean"/>
15464       </DictionaryMember>
15465       <DictionaryMember name="startDate" id="::Calendar::CalendarItemInit::startDate">
15466         <webidl>    <ref>TZDate</ref> startDate;</webidl>
15467         <Type name="TZDate"/>
15468       </DictionaryMember>
15469       <DictionaryMember name="duration" id="::Calendar::CalendarItemInit::duration">
15470         <webidl>    <ref>TimeDuration</ref> duration;</webidl>
15471         <Type name="TimeDuration"/>
15472       </DictionaryMember>
15473       <DictionaryMember name="location" id="::Calendar::CalendarItemInit::location">
15474         <webidl>    DOMString location;</webidl>
15475         <Type type="DOMString"/>
15476       </DictionaryMember>
15477       <DictionaryMember name="geolocation" id="::Calendar::CalendarItemInit::geolocation">
15478         <webidl>    <ref>SimpleCoordinates</ref> geolocation;</webidl>
15479         <Type name="SimpleCoordinates"/>
15480       </DictionaryMember>
15481       <DictionaryMember name="organizer" id="::Calendar::CalendarItemInit::organizer">
15482         <webidl>    DOMString organizer;</webidl>
15483         <Type type="DOMString"/>
15484       </DictionaryMember>
15485       <DictionaryMember name="visibility" id="::Calendar::CalendarItemInit::visibility">
15486         <webidl>    <ref>CalendarItemVisibility</ref> visibility;</webidl>
15487         <Type name="CalendarItemVisibility"/>
15488       </DictionaryMember>
15489       <DictionaryMember name="status" id="::Calendar::CalendarItemInit::status">
15490         <webidl>    <ref>CalendarItemStatus</ref> status;</webidl>
15491         <Type name="CalendarItemStatus"/>
15492       </DictionaryMember>
15493       <DictionaryMember name="priority" id="::Calendar::CalendarItemInit::priority">
15494         <webidl>    <ref>CalendarItemPriority</ref> priority;</webidl>
15495         <Type name="CalendarItemPriority"/>
15496       </DictionaryMember>
15497       <DictionaryMember name="alarms" id="::Calendar::CalendarItemInit::alarms">
15498         <webidl>    <ref>CalendarAlarm</ref>[] alarms;</webidl>
15499         <Type type="array">
15500           <Type name="CalendarAlarm"/>
15501         </Type>
15502       </DictionaryMember>
15503       <DictionaryMember name="categories" id="::Calendar::CalendarItemInit::categories">
15504         <webidl>    DOMString[] categories;</webidl>
15505         <Type type="array">
15506           <Type type="DOMString"/>
15507         </Type>
15508       </DictionaryMember>
15509       <DictionaryMember name="attendees" id="::Calendar::CalendarItemInit::attendees">
15510         <webidl>    <ref>CalendarAttendee</ref>[] attendees;</webidl>
15511         <Type type="array">
15512           <Type name="CalendarAttendee"/>
15513         </Type>
15514       </DictionaryMember>
15515     </Dictionary>
15516     <Dictionary name="CalendarTaskInit" id="::Calendar::CalendarTaskInit">
15517       <webidl>  dictionary CalendarTaskInit: <ref>CalendarItemInit</ref> {
15518     <ref>TZDate</ref> dueDate;
15519     <ref>TZDate</ref> completedDate;
15520     short progress;
15521   };</webidl>
15522       <descriptive>
15523           <brief>
15524  A dictionary that is used for creating calendar tasks.
15525           </brief>
15526          <description>
15527           <p>
15528 It also provides an interface for specifying task attributes upon task creation (in the <em>CalendarTask </em>constructor).
15529           </p>
15530           <p>
15531 All the attributes are optional and are undefined by default.
15532           </p>
15533          </description>
15534           <version>
15535  1.0
15536           </version>
15537       </descriptive>
15538       <DictionaryInheritance>
15539         <Name name="CalendarItemInit"/>
15540       </DictionaryInheritance>
15541       <DictionaryMember name="dueDate" id="::Calendar::CalendarTaskInit::dueDate">
15542         <webidl>    <ref>TZDate</ref> dueDate;</webidl>
15543         <Type name="TZDate"/>
15544       </DictionaryMember>
15545       <DictionaryMember name="completedDate" id="::Calendar::CalendarTaskInit::completedDate">
15546         <webidl>    <ref>TZDate</ref> completedDate;</webidl>
15547         <Type name="TZDate"/>
15548       </DictionaryMember>
15549       <DictionaryMember name="progress" id="::Calendar::CalendarTaskInit::progress">
15550         <webidl>    short progress;</webidl>
15551         <Type type="short"/>
15552       </DictionaryMember>
15553     </Dictionary>
15554     <Dictionary name="CalendarEventInit" id="::Calendar::CalendarEventInit">
15555       <webidl>  dictionary CalendarEventInit: <ref>CalendarItemInit</ref> {
15556     <ref>TZDate</ref> endDate;
15557     <ref>EventAvailability</ref> availability;
15558     <ref>CalendarRecurrenceRule</ref> recurrenceRule;
15559   };</webidl>
15560       <descriptive>
15561           <brief>
15562  A dictionary that is used for creating calendar events.
15563           </brief>
15564          <description>
15565           <p>
15566 Provides an interface for specifying event attributes upon event creation (in the <em>CalendarEvent </em>constructor).
15567           </p>
15568           <p>
15569 All the attributes are optional and are undefined by default.
15570           </p>
15571          </description>
15572           <version>
15573  1.0
15574           </version>
15575       </descriptive>
15576       <DictionaryInheritance>
15577         <Name name="CalendarItemInit"/>
15578       </DictionaryInheritance>
15579       <DictionaryMember name="endDate" id="::Calendar::CalendarEventInit::endDate">
15580         <webidl>    <ref>TZDate</ref> endDate;</webidl>
15581         <Type name="TZDate"/>
15582       </DictionaryMember>
15583       <DictionaryMember name="availability" id="::Calendar::CalendarEventInit::availability">
15584         <webidl>    <ref>EventAvailability</ref> availability;</webidl>
15585         <Type name="EventAvailability"/>
15586       </DictionaryMember>
15587       <DictionaryMember name="recurrenceRule" id="::Calendar::CalendarEventInit::recurrenceRule">
15588         <webidl>    <ref>CalendarRecurrenceRule</ref> recurrenceRule;</webidl>
15589         <Type name="CalendarRecurrenceRule"/>
15590       </DictionaryMember>
15591     </Dictionary>
15592     <Interface name="CalendarItem" id="::Calendar::CalendarItem">
15593       <webidl>  [NoInterfaceObject] interface CalendarItem {
15594     readonly attribute <ref>CalendarItemId</ref>? id;
15595
15596     readonly attribute <ref>CalendarId</ref>? calendarId;
15597
15598     readonly attribute <ref>TZDate</ref>? lastModificationDate;
15599     
15600     attribute DOMString? description setraises(<ref>WebAPIException</ref>);
15601     
15602     attribute DOMString? summary setraises(<ref>WebAPIException</ref>);
15603     
15604     attribute boolean isAllDay setraises(<ref>WebAPIException</ref>);
15605     
15606     attribute <ref>TZDate</ref>? startDate setraises(<ref>WebAPIException</ref>);
15607     
15608     attribute <ref>TimeDuration</ref>? duration setraises(<ref>WebAPIException</ref>);
15609     
15610     attribute DOMString? location setraises(<ref>WebAPIException</ref>);
15611     
15612     attribute <ref>SimpleCoordinates</ref>? geolocation setraises(<ref>WebAPIException</ref>);
15613     
15614     attribute DOMString? organizer setraises(<ref>WebAPIException</ref>);
15615     
15616     attribute <ref>CalendarItemVisibility</ref> visibility setraises(<ref>WebAPIException</ref>);
15617     
15618     attribute <ref>CalendarItemStatus</ref> status setraises(<ref>WebAPIException</ref>);
15619     
15620     attribute <ref>CalendarItemPriority</ref> priority setraises(<ref>WebAPIException</ref>);
15621     
15622     attribute <ref>CalendarAlarm</ref>[] alarms setraises(<ref>WebAPIException</ref>);
15623     
15624     attribute DOMString[] categories setraises(<ref>WebAPIException</ref>);
15625     
15626     attribute <ref>CalendarAttendee</ref>[] attendees setraises(<ref>WebAPIException</ref>);
15627     
15628     DOMString convertToString(<ref>CalendarTextFormat</ref> format) raises(<ref>WebAPIException</ref>);
15629
15630     <ref>CalendarItem</ref> clone() raises(<ref>WebAPIException</ref>);
15631   };</webidl>
15632       <descriptive>
15633           <brief>
15634  This is a parent interface that is used to create Calendar events and tasks.
15635 These attributes are shared by both events and tasks.
15636           </brief>
15637           <version>
15638  1.0
15639           </version>
15640       </descriptive>
15641       <ExtendedAttributeList>
15642         <ExtendedAttribute name="NoInterfaceObject">
15643           <webidl>NoInterfaceObject</webidl>
15644         </ExtendedAttribute>
15645       </ExtendedAttributeList>
15646       <Attribute readonly="readonly" name="id" id="::Calendar::CalendarItem::id">
15647         <webidl>    readonly attribute <ref>CalendarItemId</ref>? id;</webidl>
15648         <descriptive>
15649             <brief>
15650  An attribute to persistently and uniquely identify an item in implementation.
15651             </brief>
15652            <description>
15653             <p>
15654 Includes a UID and a possible recurrence ID that is needed to identify a particular instance of a recurring event.
15655             </p>
15656             <p>
15657 By default, this attribute is set to null.
15658             </p>
15659            </description>
15660             <version>
15661  1.0
15662             </version>
15663         </descriptive>
15664         <Type name="CalendarItemId" nullable="nullable"/>
15665       </Attribute>
15666       <Attribute readonly="readonly" name="calendarId" id="::Calendar::CalendarItem::calendarId">
15667         <webidl>    readonly attribute <ref>CalendarId</ref>? calendarId;</webidl>
15668         <descriptive>
15669             <brief>
15670  An attribute to identify the calendar in which this item is saved.
15671             </brief>
15672            <description>
15673             <p>
15674 By default, this attribute is set to null.
15675             </p>
15676            </description>
15677             <version>
15678  2.1
15679             </version>
15680         </descriptive>
15681         <Type name="CalendarId" nullable="nullable"/>
15682       </Attribute>
15683       <Attribute readonly="readonly" name="lastModificationDate" id="::Calendar::CalendarItem::lastModificationDate">
15684         <webidl>    readonly attribute <ref>TZDate</ref>? lastModificationDate;</webidl>
15685         <descriptive>
15686             <brief>
15687  An attribute to identify the last modified date and time of an item.
15688             </brief>
15689            <description>
15690             <p>
15691 This attribute is automatically populated and cannot be edited by the client.
15692 (See RFC 5545 - Section 3.8.7.3).
15693             </p>
15694            </description>
15695             <version>
15696  1.0
15697             </version>
15698         </descriptive>
15699         <Type name="TZDate" nullable="nullable"/>
15700       </Attribute>
15701       <Attribute name="description" id="::Calendar::CalendarItem::description">
15702         <webidl>    attribute DOMString? description setraises(<ref>WebAPIException</ref>);</webidl>
15703         <descriptive>
15704             <brief>
15705  An attribute to store the textual descriptions of an item.
15706             </brief>
15707            <description>
15708             <p>
15709 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.
15710 (See RFC 5545 - Section 3.8.1.5).
15711             </p>
15712             <p>
15713 The default value is an empty string. 
15714             </p>
15715            </description>
15716             <version>
15717  1.0
15718             </version>
15719             <Code>  event.description = 'Tizen Codefest';
15720  </Code>
15721         </descriptive>
15722         <Type type="DOMString" nullable="nullable"/>
15723         <SetRaises>
15724           <RaiseException name="WebAPIException"/>
15725         </SetRaises>
15726       </Attribute>
15727       <Attribute name="summary" id="::Calendar::CalendarItem::summary">
15728         <webidl>    attribute DOMString? summary setraises(<ref>WebAPIException</ref>);</webidl>
15729         <descriptive>
15730             <brief>
15731  An attribute to store a short summary or subject for an item.
15732 (See RFC 5545 - Section 3.8.1.12)
15733             </brief>
15734            <description>
15735             <p>
15736 The default value is an empty string. 
15737             </p>
15738            </description>
15739             <version>
15740  1.0
15741             </version>
15742             <Code>  event.summary = 'Launching the Tizen reference implementation';
15743  </Code>
15744         </descriptive>
15745         <Type type="DOMString" nullable="nullable"/>
15746         <SetRaises>
15747           <RaiseException name="WebAPIException"/>
15748         </SetRaises>
15749       </Attribute>
15750       <Attribute name="isAllDay" id="::Calendar::CalendarItem::isAllDay">
15751         <webidl>    attribute boolean isAllDay setraises(<ref>WebAPIException</ref>);</webidl>
15752         <descriptive>
15753             <brief>
15754  An attribute that behaves like a flag to indicate whether an event is an all-day event or not.
15755             </brief>
15756            <description>
15757             <p>
15758 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.
15759             </p>
15760             <p>
15761 The default value for this attribute is <var>false</var>.
15762             </p>
15763            </description>
15764             <version>
15765  1.0
15766             </version>
15767             <Code>  event.isAllDay = true; // All-Day event
15768  </Code>
15769         </descriptive>
15770         <Type type="boolean"/>
15771         <SetRaises>
15772           <RaiseException name="WebAPIException"/>
15773         </SetRaises>
15774       </Attribute>
15775       <Attribute name="startDate" id="::Calendar::CalendarItem::startDate">
15776         <webidl>    attribute <ref>TZDate</ref>? startDate setraises(<ref>WebAPIException</ref>);</webidl>
15777         <descriptive>
15778             <brief>
15779  An attribute to store the start date/time for an item.
15780 (see RFC 5545 - Section 3.8.2.4).
15781             </brief>
15782            <description>
15783             <p>
15784 The default value for this attribute is <var>null</var>.
15785             </p>
15786             <p>
15787 <em>startDate</em> must be specified in the same time zone as <em>endDate / dueDate</em> if provided.
15788             </p>
15789            </description>
15790             <version>
15791  1.0
15792             </version>
15793            <description>
15794             <p>
15795 This attribute is precise to the second. Milliseconds are ignored.
15796             </p>
15797            </description>
15798             <Code>  // 2010-04-30 09:00
15799   event.startDate = new tizen.TZDate(2010, 3, 30, 9, 0);
15800  </Code>
15801         </descriptive>
15802         <Type name="TZDate" nullable="nullable"/>
15803         <SetRaises>
15804           <RaiseException name="WebAPIException"/>
15805         </SetRaises>
15806       </Attribute>
15807       <Attribute name="duration" id="::Calendar::CalendarItem::duration">
15808         <webidl>    attribute <ref>TimeDuration</ref>? duration setraises(<ref>WebAPIException</ref>);</webidl>
15809         <descriptive>
15810             <brief>
15811  An attribute to denote the duration of the calendar component.
15812 (See RFC 5545 - Section 3.8.2.5).
15813             </brief>
15814            <description>
15815             <p>
15816 By default, this attribute is set to <var>null</var>.
15817             </p>
15818             <p>
15819 <em>duration</em> and <em>endDate / dueDate</em> are mutually exclusive, hence, only one of them can be non-null.
15820             </p>
15821             <p>
15822 This attribute is precise to the second. Milliseconds are ignored.
15823             </p>
15824            </description>
15825             <remark>
15826  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.
15827             </remark>
15828             <version>
15829  1.0
15830             </version>
15831             <Code>  // 1 hour meeting
15832   event.duration = new tizen.TimeDuration(1, &quot;HOURS&quot;);
15833  </Code>
15834         </descriptive>
15835         <Type name="TimeDuration" nullable="nullable"/>
15836         <SetRaises>
15837           <RaiseException name="WebAPIException"/>
15838         </SetRaises>
15839       </Attribute>
15840       <Attribute name="location" id="::Calendar::CalendarItem::location">
15841         <webidl>    attribute DOMString? location setraises(<ref>WebAPIException</ref>);</webidl>
15842         <descriptive>
15843             <brief>
15844  An attribute to store the location or the intended venue for the activity defined by the calendar item.
15845 (See RFC 5545 - Section 3.8.1.7)
15846             </brief>
15847            <description>
15848             <p>
15849 The default value for this attribute is an empty string. 
15850             </p>
15851            </description>
15852             <version>
15853  1.0
15854             </version>
15855             <Code>  event.location = 'Huesca';
15856  </Code>
15857         </descriptive>
15858         <Type type="DOMString" nullable="nullable"/>
15859         <SetRaises>
15860           <RaiseException name="WebAPIException"/>
15861         </SetRaises>
15862       </Attribute>
15863       <Attribute name="geolocation" id="::Calendar::CalendarItem::geolocation">
15864         <webidl>    attribute <ref>SimpleCoordinates</ref>? geolocation setraises(<ref>WebAPIException</ref>);</webidl>
15865         <descriptive>
15866             <brief>
15867  An attribute to store the global position latitude and longitude of the location where the event is planned to take place.
15868 (See RFC 5545 - Section 3.8.1.6).
15869             </brief>
15870             <version>
15871  1.0
15872             </version>
15873             <Code>  event.geolocation = new tizen.SimpleCoordinates(60.175, 24.934);
15874  </Code>
15875         </descriptive>
15876         <Type name="SimpleCoordinates" nullable="nullable"/>
15877         <SetRaises>
15878           <RaiseException name="WebAPIException"/>
15879         </SetRaises>
15880       </Attribute>
15881       <Attribute name="organizer" id="::Calendar::CalendarItem::organizer">
15882         <webidl>    attribute DOMString? organizer setraises(<ref>WebAPIException</ref>);</webidl>
15883         <descriptive>
15884             <brief>
15885  An attribute to store the name of the person who organized this event.
15886 (See RFC 5545 - Section 3.8.4.3).
15887             </brief>
15888            <description>
15889             <p>
15890 By default, this attribute is initialized to an empty string.
15891             </p>
15892            </description>
15893             <version>
15894  1.0
15895             </version>
15896             <Code>  event.organizer = 'Mr. Jones';
15897  </Code>
15898         </descriptive>
15899         <Type type="DOMString" nullable="nullable"/>
15900         <SetRaises>
15901           <RaiseException name="WebAPIException"/>
15902         </SetRaises>
15903       </Attribute>
15904       <Attribute name="visibility" id="::Calendar::CalendarItem::visibility">
15905         <webidl>    attribute <ref>CalendarItemVisibility</ref> visibility setraises(<ref>WebAPIException</ref>);</webidl>
15906         <descriptive>
15907             <brief>
15908  An attribute to mark the visibility (secrecy) level of the item.
15909 (See RFC 5545 - Section 3.8.1.3).
15910             </brief>
15911            <description>
15912             <p>
15913 The default value is <var>PUBLIC</var>.
15914             </p>
15915            </description>
15916             <version>
15917  1.0
15918             </version>
15919         </descriptive>
15920         <Type name="CalendarItemVisibility"/>
15921         <SetRaises>
15922           <RaiseException name="WebAPIException"/>
15923         </SetRaises>
15924       </Attribute>
15925       <Attribute name="status" id="::Calendar::CalendarItem::status">
15926         <webidl>    attribute <ref>CalendarItemStatus</ref> status setraises(<ref>WebAPIException</ref>);</webidl>
15927         <descriptive>
15928             <brief>
15929  An attribute to store the overall confirmation status for a calendar component.
15930 (See RFC 5545 - Section 3.8.1.11).
15931             </brief>
15932            <description>
15933             <p>
15934 For an event, the default value is <var>CONFIRMED</var>. For a task, the default value is <var>NEEDS_ACTION</var>.
15935             </p>
15936            </description>
15937             <version>
15938  1.0
15939             </version>
15940             <Code>  event.status = &quot;TENTATIVE&quot;;
15941  </Code>
15942         </descriptive>
15943         <Type name="CalendarItemStatus"/>
15944         <SetRaises>
15945           <RaiseException name="WebAPIException"/>
15946         </SetRaises>
15947       </Attribute>
15948       <Attribute name="priority" id="::Calendar::CalendarItem::priority">
15949         <webidl>    attribute <ref>CalendarItemPriority</ref> priority setraises(<ref>WebAPIException</ref>);</webidl>
15950         <descriptive>
15951             <brief>
15952  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.
15953 (See RFC 5545 - Section 3.8.1.9).
15954             </brief>
15955            <description>
15956             <p>
15957 The default value for this attribute is <var>LOW </var>priority.
15958             </p>
15959             <p>
15960 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:
15961             </p>
15962             <ul>
15963               <li>
15964 1-4 to HIGH,              </li>
15965               <li>
15966 5 to MEDIUM,              </li>
15967               <li>
15968 6-9 to LOW.              </li>
15969             </ul>
15970            </description>
15971             <version>
15972  1.0
15973             </version>
15974             <Code>  task.priority = &quot;HIGH&quot;;
15975  </Code>
15976         </descriptive>
15977         <Type name="CalendarItemPriority"/>
15978         <SetRaises>
15979           <RaiseException name="WebAPIException"/>
15980         </SetRaises>
15981       </Attribute>
15982       <Attribute name="alarms" id="::Calendar::CalendarItem::alarms">
15983         <webidl>    attribute <ref>CalendarAlarm</ref>[] alarms setraises(<ref>WebAPIException</ref>);</webidl>
15984         <descriptive>
15985             <brief>
15986  An attribute array to lists the alarms (or reminders) associated to an item.
15987             </brief>
15988             <version>
15989  1.0
15990             </version>
15991             <Code>  ev.startDate = new tizen.TZDate(2011, 2, 11, 8, 0, 0);
15992   // Gives a sound notification 30 minutes before the item's start time
15993   var alarm = new tizen.CalendarAlarm(new tizen.TimeDuration(30, &quot;MINS&quot;),
15994                                        &quot;SOUND&quot;);
15995   ev.alarms = [alarm];
15996  </Code>
15997         </descriptive>
15998         <Type type="array">
15999           <Type name="CalendarAlarm"/>
16000         </Type>
16001         <SetRaises>
16002           <RaiseException name="WebAPIException"/>
16003         </SetRaises>
16004       </Attribute>
16005       <Attribute name="categories" id="::Calendar::CalendarItem::categories">
16006         <webidl>    attribute DOMString[] categories setraises(<ref>WebAPIException</ref>);</webidl>
16007         <descriptive>
16008             <brief>
16009  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.
16010 (See RFC 5545 - Section 3.8.1.2).
16011             </brief>
16012            <description>
16013             <p>
16014 Examples of categories are personal, work, vacation, travel, etc.
16015             </p>
16016             <p>
16017 By default, this attribute is set to an empty array.
16018             </p>
16019            </description>
16020             <version>
16021  1.0
16022             </version>
16023             <Code>  event.categories = ['Personal'];
16024  </Code>
16025         </descriptive>
16026         <Type type="array">
16027           <Type type="DOMString"/>
16028         </Type>
16029         <SetRaises>
16030           <RaiseException name="WebAPIException"/>
16031         </SetRaises>
16032       </Attribute>
16033       <Attribute name="attendees" id="::Calendar::CalendarItem::attendees">
16034         <webidl>    attribute <ref>CalendarAttendee</ref>[] attendees setraises(<ref>WebAPIException</ref>);</webidl>
16035         <descriptive>
16036             <brief>
16037  An attribute array that lists the people attending an event.
16038 (See RFC 5545 - Section 3.8.4.3).
16039             </brief>
16040            <description>
16041             <p>
16042 By default, this attribute is set to an empty array.
16043             </p>
16044            </description>
16045             <version>
16046  1.0
16047             </version>
16048             <Code>  var attendee = new tizen.CalendarAttendee('mailto:bob@domain.com',
16049                                            {role: &quot;CHAIR&quot;, RSVP: true});
16050   event.attendees = [attendee];
16051  </Code>
16052         </descriptive>
16053         <Type type="array">
16054           <Type name="CalendarAttendee"/>
16055         </Type>
16056         <SetRaises>
16057           <RaiseException name="WebAPIException"/>
16058         </SetRaises>
16059       </Attribute>
16060       <Operation name="convertToString" id="::Calendar::CalendarItem::convertToString">
16061         <webidl>    DOMString convertToString(<ref>CalendarTextFormat</ref> format) raises(<ref>WebAPIException</ref>);</webidl>
16062         <descriptive>
16063             <brief>
16064  Converts the calendar item to a string format that will be generated and returned synchronously.
16065 The export format is set using the format parameter.
16066             </brief>
16067             <version>
16068  1.0
16069             </version>
16070             <privilegelevel>
16071  public
16072             </privilegelevel>
16073             <privilege>
16074  http://tizen.org/privilege/calendar.read
16075             </privilege>
16076             <Code>  // Defines the event search success callback.
16077   function eventSearchSuccessCallback(events) {
16078     // Converts the first event to iCalendar 2.0 format (default)
16079     var vevent = events[0].convertToString(&quot;ICALENDAR_20&quot;);
16080     console.log('iCalendar 2.0 representation of the event is: ' + vevent);
16081   }
16082
16083   function errorCallback(response) {
16084     console.log( 'The following error occurred: ' +  response.name);
16085   }
16086
16087   // Gets the default calendar
16088   var myCalendar = tizen.calendar.getDefaultCalendar(&quot;EVENT&quot;);
16089     
16090   // Finds all events in the first calendar that contain in the summary the string Tizen.
16091   var filter = new tizen.AttributeFilter('summary', 'CONTAINS', 'Tizen');
16092   myCalendar.find(eventSearchSuccessCallback, errorCallback, filter);
16093  </Code>
16094         </descriptive>
16095         <Type type="DOMString">
16096           <descriptive>
16097               <description><p>
16098  DOMString The representation of the Calendar item.
16099               </p></description>
16100           </descriptive>
16101         </Type>
16102         <ArgumentList>
16103           <Argument name="format">
16104             <descriptive>
16105                 <description><p>
16106  The format to use for exporting.
16107                 </p></description>
16108             </descriptive>
16109             <Type name="CalendarTextFormat"/>
16110           </Argument>
16111         </ArgumentList>
16112         <Raises>
16113           <RaiseException name="WebAPIException">
16114             <descriptive>
16115                 <description><p>
16116  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
16117                 </p></description>
16118                 <description><p>
16119  with error type InvalidValuesError, if any of the input parameters contain an invalid value.
16120                 </p></description>
16121                 <description><p>
16122  with error type SecurityError, if the application does not have the privilege to call this method.
16123                 </p></description>
16124                 <description><p>
16125  with error type NotSupportedError, if the feature is not supported.
16126                 </p></description>
16127                 <description><p>
16128  with error type UnknownError, if any other error occurs.
16129                 </p></description>
16130             </descriptive>
16131           </RaiseException>
16132         </Raises>
16133       </Operation>
16134       <Operation name="clone" id="::Calendar::CalendarItem::clone">
16135         <webidl>    <ref>CalendarItem</ref> clone() raises(<ref>WebAPIException</ref>);</webidl>
16136         <descriptive>
16137             <brief>
16138  Clones the <em>CalendarItem </em>object, detached from any calendar.
16139             </brief>
16140            <description>
16141             <p>
16142 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.
16143             </p>
16144            </description>
16145             <version>
16146  1.0
16147             </version>
16148             <privilegelevel>
16149  public
16150             </privilegelevel>
16151             <privilege>
16152  http://tizen.org/privilege/calendar.read
16153             </privilege>
16154             <Code>  // Gets default calendar.
16155   var calendar = tizen.calendar.getDefaultCalendar();
16156
16157   var html5seminar = new tizen.CalendarEvent({startDate: new tizen.TZDate(2012, 3, 4),
16158                                               duration: new tizen.TimeDuration(3, &quot;DAYS&quot;),
16159                                               summary: &quot;HTML5 Seminar&quot;});
16160                                      
16161   calendar.add(html5seminar);
16162   var tizenseminar = html5seminar.clone();
16163   tizenseminar.summary = &quot;Tizen Seminar&quot;;
16164   calendar.add(tizenseminar);
16165  </Code>
16166         </descriptive>
16167         <Type name="CalendarItem">
16168           <descriptive>
16169               <description><p>
16170  CalendarItem The new clone of the <em>CalendarItem </em>object.
16171               </p></description>
16172           </descriptive>
16173         </Type>
16174         <ArgumentList/>
16175         <Raises>
16176           <RaiseException name="WebAPIException">
16177             <descriptive>
16178                 <description><p>
16179  with error type SecurityError, if the application does not have the privilege to call this method.
16180                 </p></description>
16181                 <description><p>
16182  with error type NotSupportedError, if the feature is not supported.
16183                 </p></description>
16184                 <description><p>
16185  with error type UnknownError if any other error occurs.
16186                 </p></description>
16187             </descriptive>
16188           </RaiseException>
16189         </Raises>
16190       </Operation>
16191     </Interface>
16192     <Interface name="CalendarTask" id="::Calendar::CalendarTask">
16193       <webidl>  [Constructor(optional <ref>CalendarTaskInit</ref>? taskInitDict),
16194    Constructor(DOMString stringRepresentation, <ref>CalendarTextFormat</ref> format)]
16195   interface CalendarTask : <ref>CalendarItem</ref> {
16196     attribute <ref>TZDate</ref>? dueDate setraises(<ref>WebAPIException</ref>);
16197     
16198     attribute <ref>TZDate</ref>? completedDate setraises(<ref>WebAPIException</ref>);
16199     
16200     attribute unsigned short progress setraises(<ref>WebAPIException</ref>);
16201   };</webidl>
16202       <descriptive>
16203           <brief>
16204  An interface that implements the <em>CalendarTask </em>object.
16205           </brief>
16206           <version>
16207  1.0
16208           </version>
16209       </descriptive>
16210       <ExtendedAttributeList>
16211         <ExtendedAttribute name="Constructor">
16212           <webidl>Constructor(optional <ref>CalendarTaskInit</ref>? taskInitDict)</webidl>
16213           <ArgumentList>
16214             <Argument optional="optional" name="taskInitDict">
16215               <Type name="CalendarTaskInit" nullable="nullable"/>
16216             </Argument>
16217           </ArgumentList>
16218         </ExtendedAttribute>
16219         <ExtendedAttribute name="Constructor">
16220           <webidl>   Constructor(DOMString stringRepresentation, <ref>CalendarTextFormat</ref> format)</webidl>
16221           <ArgumentList>
16222             <Argument name="stringRepresentation">
16223               <Type type="DOMString"/>
16224             </Argument>
16225             <Argument name="format">
16226               <Type name="CalendarTextFormat"/>
16227             </Argument>
16228           </ArgumentList>
16229         </ExtendedAttribute>
16230       </ExtendedAttributeList>
16231       <InterfaceInheritance>
16232         <Name name="CalendarItem"/>
16233       </InterfaceInheritance>
16234       <Attribute name="dueDate" id="::Calendar::CalendarTask::dueDate">
16235         <webidl>    attribute <ref>TZDate</ref>? dueDate setraises(<ref>WebAPIException</ref>);</webidl>
16236         <descriptive>
16237             <brief>
16238  An attribute to store the due date and time for completing a task. (See RFC 5545 - Section 3.8.2.3).
16239             </brief>
16240            <description>
16241             <p>
16242 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.
16243             </p>
16244             <p>
16245 This attribute is precise to the second. Milliseconds are ignored.
16246             </p>
16247             <p>
16248 The default value is <var>null</var>. If no value is provided, the task doesn't have a due date.
16249             </p>
16250            </description>
16251             <version>
16252  1.0
16253             </version>
16254             <Code>  task.dueDate = new tizen.TZDate(2011, 2, 11);
16255  </Code>
16256         </descriptive>
16257         <Type name="TZDate" nullable="nullable"/>
16258         <SetRaises>
16259           <RaiseException name="WebAPIException"/>
16260         </SetRaises>
16261       </Attribute>
16262       <Attribute name="completedDate" id="::Calendar::CalendarTask::completedDate">
16263         <webidl>    attribute <ref>TZDate</ref>? completedDate setraises(<ref>WebAPIException</ref>);</webidl>
16264         <descriptive>
16265             <brief>
16266  An attribute to record the date and time when an task is completed.
16267 (See RFC 5545 - Section 3.8.2.1).
16268             </brief>
16269            <description>
16270             <p>
16271 This attribute is precise to the second. Milliseconds are ignored.
16272             </p>
16273             <p>
16274 The default value is <var>null</var>. If no value is provided, the task is not completed yet.  
16275             </p>
16276            </description>
16277             <version>
16278  1.0
16279             </version>
16280             <Code>  task.completedDate = new tizen.TZDate(2011, 2, 11);
16281  </Code>
16282         </descriptive>
16283         <Type name="TZDate" nullable="nullable"/>
16284         <SetRaises>
16285           <RaiseException name="WebAPIException"/>
16286         </SetRaises>
16287       </Attribute>
16288       <Attribute name="progress" id="::Calendar::CalendarTask::progress">
16289         <webidl>    attribute unsigned short progress setraises(<ref>WebAPIException</ref>);</webidl>
16290         <descriptive>
16291             <brief>
16292  An attribute to denote the percent of completion of a task.
16293             </brief>
16294            <description>
16295             <p>
16296 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.
16297             </p>
16298             <p>
16299 Integer values in between indicate the percent partially complete.
16300 (See RFC 5545 - Section 3.8.1.8).
16301             </p>
16302             <p>
16303 The default value is <var>0</var>, implies that the task has not been started.
16304             </p>
16305            </description>
16306             <version>
16307  1.0
16308             </version>
16309             <Code>  task.progress = 50; // 50% done
16310  </Code>
16311         </descriptive>
16312         <Type type="unsigned short"/>
16313         <SetRaises>
16314           <RaiseException name="WebAPIException"/>
16315         </SetRaises>
16316       </Attribute>
16317     </Interface>
16318     <Interface name="CalendarEvent" id="::Calendar::CalendarEvent">
16319       <webidl>  [Constructor(optional <ref>CalendarEventInit</ref>? eventInitDict),
16320    Constructor(DOMString stringRepresentation, <ref>CalendarTextFormat</ref> format)]
16321   interface CalendarEvent : <ref>CalendarItem</ref> {
16322     readonly attribute boolean isDetached;
16323     
16324     attribute <ref>TZDate</ref>? endDate setraises(<ref>WebAPIException</ref>);
16325     
16326     attribute <ref>EventAvailability</ref> availability setraises(<ref>WebAPIException</ref>);
16327     
16328     attribute <ref>CalendarRecurrenceRule</ref>? recurrenceRule setraises(<ref>WebAPIException</ref>);
16329     
16330     void expandRecurrence(<ref>TZDate</ref> startDate,
16331                           <ref>TZDate</ref> endDate,
16332                           <ref>CalendarEventArraySuccessCallback</ref> successCallback,
16333                           optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
16334   };</webidl>
16335       <descriptive>
16336           <brief>
16337  An interface that implements the <em>calendarEvent </em>object.
16338           </brief>
16339           <version>
16340  1.0
16341           </version>
16342           <Code>  // Gets the default calendar
16343   var calendar = tizen.calendar.getDefaultCalendar(&quot;EVENT&quot;);
16344
16345   try {
16346     var ev = new tizen.CalendarEvent(&quot;BEGIN:VCALENDAR\r\n&quot; +
16347                   &quot;BEGIN:VEVENT\r\n&quot; +
16348                   &quot;DTSTAMP:19970901T1300Z\r\n&quot; +
16349                   &quot;DTSTART:19970903T163000Z\r\n&quot; +
16350                   &quot;DTEND:19970903T190000Z\r\n&quot; +
16351                   &quot;SUMMARY:Annual Employee Review\r\n&quot; +
16352                   &quot;CATEGORIES:BUSINESS,HUMAN RESOURCES\r\n&quot; +
16353                   &quot;END:VEVENT\r\n&quot; +
16354                   &quot;END:VCALENDAR&quot;, &quot;ICALENDAR_20&quot;);
16355                    
16356     calendar.add(ev);
16357     console.log('Event added with UID ' + ev.id.uid);
16358   } catch (err) {
16359     console.log(&quot;Failed to add VEVENT to the calendar, error: &quot; + err.name);
16360   }
16361  </Code>
16362       </descriptive>
16363       <ExtendedAttributeList>
16364         <ExtendedAttribute name="Constructor">
16365           <webidl>Constructor(optional <ref>CalendarEventInit</ref>? eventInitDict)</webidl>
16366           <ArgumentList>
16367             <Argument optional="optional" name="eventInitDict">
16368               <Type name="CalendarEventInit" nullable="nullable"/>
16369             </Argument>
16370           </ArgumentList>
16371         </ExtendedAttribute>
16372         <ExtendedAttribute name="Constructor">
16373           <webidl>   Constructor(DOMString stringRepresentation, <ref>CalendarTextFormat</ref> format)</webidl>
16374           <ArgumentList>
16375             <Argument name="stringRepresentation">
16376               <Type type="DOMString"/>
16377             </Argument>
16378             <Argument name="format">
16379               <Type name="CalendarTextFormat"/>
16380             </Argument>
16381           </ArgumentList>
16382         </ExtendedAttribute>
16383       </ExtendedAttributeList>
16384       <InterfaceInheritance>
16385         <Name name="CalendarItem"/>
16386       </InterfaceInheritance>
16387       <Attribute readonly="readonly" name="isDetached" id="::Calendar::CalendarEvent::isDetached">
16388         <webidl>    readonly attribute boolean isDetached;</webidl>
16389         <descriptive>
16390             <brief>
16391  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.
16392             </brief>
16393             <version>
16394  1.0
16395             </version>
16396         </descriptive>
16397         <Type type="boolean"/>
16398       </Attribute>
16399       <Attribute name="endDate" id="::Calendar::CalendarEvent::endDate">
16400         <webidl>    attribute <ref>TZDate</ref>? endDate setraises(<ref>WebAPIException</ref>);</webidl>
16401         <descriptive>
16402             <brief>
16403  An attribute to store the end date/time of an event.
16404             </brief>
16405            <description>
16406             <p>
16407 (see RFC 5545 - Section 3.8.2.2).
16408             </p>
16409             <p>
16410 This <em>endDate</em> must be in the same time zone as the <em>startDate</em>. 
16411 Note that <em>duration</em> and <em>endDate</em> are mutually exclusive, only one of them can be non-null.
16412             </p>
16413             <p>
16414 This attribute is precise to the second. Milliseconds are ignored.
16415             </p>
16416             <p>
16417 The default value for this attribute is <var>null</var>. 
16418             </p>
16419            </description>
16420             <version>
16421  1.0
16422             </version>
16423             <Code>  // 2010-04-30 09:00
16424   event.endDate = new tizen.TZDate(2010, 3, 30, 9, 0);
16425  </Code>
16426         </descriptive>
16427         <Type name="TZDate" nullable="nullable"/>
16428         <SetRaises>
16429           <RaiseException name="WebAPIException"/>
16430         </SetRaises>
16431       </Attribute>
16432       <Attribute name="availability" id="::Calendar::CalendarEvent::availability">
16433         <webidl>    attribute <ref>EventAvailability</ref> availability setraises(<ref>WebAPIException</ref>);</webidl>
16434         <descriptive>
16435             <brief>
16436  An attribute to indicate the availability of a person for an event.
16437 (See RFC 5545 - Section 3.2.9).
16438             </brief>
16439            <description>
16440             <p>
16441 The default value is <var>BUSY</var>.
16442             </p>
16443            </description>
16444             <version>
16445  1.0
16446             </version>
16447         </descriptive>
16448         <Type name="EventAvailability"/>
16449         <SetRaises>
16450           <RaiseException name="WebAPIException"/>
16451         </SetRaises>
16452       </Attribute>
16453       <Attribute name="recurrenceRule" id="::Calendar::CalendarEvent::recurrenceRule">
16454         <webidl>    attribute <ref>CalendarRecurrenceRule</ref>? recurrenceRule setraises(<ref>WebAPIException</ref>);</webidl>
16455         <descriptive>
16456             <brief>
16457  An attribute to denote the recurrence rule for the event.
16458             </brief>
16459            <description>
16460             <p>
16461 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.
16462             </p>
16463             <p>
16464 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.
16465 (See RFC 5545, Section 3.3.10.)
16466             </p>
16467            </description>
16468             <version>
16469  1.0
16470             </version>
16471             <Code>  // Repeats daily for 7 days
16472   var rule = new tizen.CalendarRecurrenceRule(&quot;DAILY&quot;, {occurrenceCount: 7});
16473   event.recurrenceRule = rule;
16474  </Code>
16475         </descriptive>
16476         <Type name="CalendarRecurrenceRule" nullable="nullable"/>
16477         <SetRaises>
16478           <RaiseException name="WebAPIException"/>
16479         </SetRaises>
16480       </Attribute>
16481       <Operation name="expandRecurrence" id="::Calendar::CalendarEvent::expandRecurrence">
16482         <webidl>    void expandRecurrence(<ref>TZDate</ref> startDate,
16483                           <ref>TZDate</ref> endDate,
16484                           <ref>CalendarEventArraySuccessCallback</ref> successCallback,
16485                           optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
16486         <descriptive>
16487             <brief>
16488  Expands a recurring event and returns asynchronously the list of instances occurring in a given time interval (inclusive).
16489             </brief>
16490            <description>
16491             <p>
16492 This method takes into consideration all the parameters of the event recurrence rule to generate the instances occurring in a given time interval.
16493             </p>
16494             <p>
16495 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.
16496             </p>
16497             <p>
16498 The errorCallback is launched with these error types: 
16499             </p>
16500             <ul>
16501               <li>
16502 InvalidValuesError - if the event in operation is not recurring.              </li>
16503               <li>
16504 UnknownError - if any other error occurs.              </li>
16505             </ul>
16506            </description>
16507             <version>
16508  1.0
16509             </version>
16510             <privilegelevel>
16511  public
16512             </privilegelevel>
16513             <privilege>
16514  http://tizen.org/privilege/calendar.read
16515             </privilege>
16516             <Code>  // eventId should be set to ID of event obtained with the find function.
16517   var eventId;
16518   // Defines the error callback.
16519   function errorCallback(response) {
16520     console.log( 'The following error occurred: ' +  response.name);
16521   }
16522
16523   // Defines the event expanding success callback.
16524   function eventExpandingSuccessCallback(events) {
16525     console.log(events.length + ' event instances were returned.');
16526   }
16527  
16528   var calendar = tizen.calendar.getDefaultCalendar();
16529   var event = calendar.get(eventId);
16530
16531   if (event.recurrenceRule != null) {
16532     // This is a recurring event. Expand all the instances during August 2011.
16533     event.expandRecurrence(new tizen.TZDate(2011, 7, 1),
16534                           new tizen.TZDate(2011, 7, 31),
16535                           eventExpandingSuccessCallback,
16536                           errorCallback);
16537   }
16538  </Code>
16539         </descriptive>
16540         <Type type="void"/>
16541         <ArgumentList>
16542           <Argument name="startDate">
16543             <descriptive>
16544                 <description><p>
16545  The start date/ time of an event(inclusive).
16546                 </p></description>
16547             </descriptive>
16548             <Type name="TZDate"/>
16549           </Argument>
16550           <Argument name="endDate">
16551             <descriptive>
16552                 <description><p>
16553  The end date/ time of an event (inclusive).
16554                 </p></description>
16555             </descriptive>
16556             <Type name="TZDate"/>
16557           </Argument>
16558           <Argument name="successCallback">
16559             <descriptive>
16560                 <description><p>
16561  The method to call when the invocation ends successfully.
16562                 </p></description>
16563             </descriptive>
16564             <Type name="CalendarEventArraySuccessCallback"/>
16565           </Argument>
16566           <Argument optional="optional" name="errorCallback">
16567             <descriptive>
16568                 <description><p>
16569  The method to call when an error occurs.
16570                 </p></description>
16571             </descriptive>
16572             <Type name="ErrorCallback" nullable="nullable"/>
16573           </Argument>
16574         </ArgumentList>
16575         <Raises>
16576           <RaiseException name="WebAPIException">
16577             <descriptive>
16578                 <description><p>
16579  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
16580                 </p></description>
16581                 <description><p>
16582  with error type SecurityError, if the application does not have the privilege to call this method.
16583                 </p></description>
16584                 <description><p>
16585  with error type NotSupportedError, if the feature is not supported.
16586                 </p></description>
16587             </descriptive>
16588           </RaiseException>
16589         </Raises>
16590       </Operation>
16591     </Interface>
16592     <Dictionary name="CalendarAttendeeInit" id="::Calendar::CalendarAttendeeInit">
16593       <webidl>  dictionary CalendarAttendeeInit {
16594     DOMString name;
16595     <ref>AttendeeRole</ref> role;
16596     <ref>AttendeeStatus</ref> status;
16597     boolean RSVP;
16598     <ref>AttendeeType</ref> type;
16599     DOMString? group;
16600     DOMString delegatorURI;
16601     DOMString delegateURI;
16602     <ref>ContactRef</ref> contactRef;
16603   };</webidl>
16604       <descriptive>
16605           <brief>
16606  The properties of a <em>CalendarAttendee</em>, to pass to its constructor.
16607           </brief>
16608          <description>
16609           <p>
16610 See <em>CalendarAttendee </em>interface for more information about the members.
16611           </p>
16612          </description>
16613           <version>
16614  1.0
16615           </version>
16616       </descriptive>
16617       <DictionaryMember name="name" id="::Calendar::CalendarAttendeeInit::name">
16618         <webidl>    DOMString name;</webidl>
16619         <Type type="DOMString"/>
16620       </DictionaryMember>
16621       <DictionaryMember name="role" id="::Calendar::CalendarAttendeeInit::role">
16622         <webidl>    <ref>AttendeeRole</ref> role;</webidl>
16623         <Type name="AttendeeRole"/>
16624       </DictionaryMember>
16625       <DictionaryMember name="status" id="::Calendar::CalendarAttendeeInit::status">
16626         <webidl>    <ref>AttendeeStatus</ref> status;</webidl>
16627         <Type name="AttendeeStatus"/>
16628       </DictionaryMember>
16629       <DictionaryMember name="RSVP" id="::Calendar::CalendarAttendeeInit::RSVP">
16630         <webidl>    boolean RSVP;</webidl>
16631         <Type type="boolean"/>
16632       </DictionaryMember>
16633       <DictionaryMember name="type" id="::Calendar::CalendarAttendeeInit::type">
16634         <webidl>    <ref>AttendeeType</ref> type;</webidl>
16635         <Type name="AttendeeType"/>
16636       </DictionaryMember>
16637       <DictionaryMember name="group" id="::Calendar::CalendarAttendeeInit::group">
16638         <webidl>    DOMString? group;</webidl>
16639         <Type type="DOMString" nullable="nullable"/>
16640       </DictionaryMember>
16641       <DictionaryMember name="delegatorURI" id="::Calendar::CalendarAttendeeInit::delegatorURI">
16642         <webidl>    DOMString delegatorURI;</webidl>
16643         <Type type="DOMString"/>
16644       </DictionaryMember>
16645       <DictionaryMember name="delegateURI" id="::Calendar::CalendarAttendeeInit::delegateURI">
16646         <webidl>    DOMString delegateURI;</webidl>
16647         <Type type="DOMString"/>
16648       </DictionaryMember>
16649       <DictionaryMember name="contactRef" id="::Calendar::CalendarAttendeeInit::contactRef">
16650         <webidl>    <ref>ContactRef</ref> contactRef;</webidl>
16651         <Type name="ContactRef"/>
16652       </DictionaryMember>
16653     </Dictionary>
16654     <Interface name="CalendarAttendee" id="::Calendar::CalendarAttendee">
16655       <webidl>  [Constructor(DOMString uri, optional <ref>CalendarAttendeeInit</ref>? attendeeInitDict)]
16656   interface CalendarAttendee
16657   {
16658     attribute DOMString uri;
16659     
16660     attribute DOMString? name;
16661     
16662     attribute <ref>AttendeeRole</ref> role;
16663     
16664     attribute <ref>AttendeeStatus</ref> status;
16665     
16666     attribute boolean RSVP;
16667     
16668     attribute <ref>AttendeeType</ref> type;
16669      
16670     attribute DOMString? group;
16671       
16672     attribute DOMString? delegatorURI;
16673       
16674     attribute DOMString? delegateURI;
16675      
16676     attribute <ref>ContactRef</ref>? contactRef;
16677   };</webidl>
16678       <descriptive>
16679           <brief>
16680  This interface implements the <em>CalendarAttendee </em>object that contains information about an event attendee.
16681           </brief>
16682          <description>
16683           <p>
16684 By default, each of the attributes of this interface are undefined.
16685           </p>
16686           <p>
16687 (For more details, see RFC 5545, Section 3.8.4.1.)
16688           </p>
16689          </description>
16690           <version>
16691  1.0
16692           </version>
16693           <Code>  var attendee = new tizen.CalendarAttendee('mailto:bob@domain.com',
16694                                            {role: &quot;CHAIR&quot;, RSVP: true});
16695   event.attendees = [attendee];
16696  </Code>
16697       </descriptive>
16698       <ExtendedAttributeList>
16699         <ExtendedAttribute name="Constructor">
16700           <webidl>Constructor(DOMString uri, optional <ref>CalendarAttendeeInit</ref>? attendeeInitDict)</webidl>
16701           <ArgumentList>
16702             <Argument name="uri">
16703               <Type type="DOMString"/>
16704             </Argument>
16705             <Argument optional="optional" name="attendeeInitDict">
16706               <Type name="CalendarAttendeeInit" nullable="nullable"/>
16707             </Argument>
16708           </ArgumentList>
16709         </ExtendedAttribute>
16710       </ExtendedAttributeList>
16711       <Attribute name="uri" id="::Calendar::CalendarAttendee::uri">
16712         <webidl>    attribute DOMString uri;</webidl>
16713         <descriptive>
16714             <brief>
16715  An attribute to store the URI for the attendee.
16716             </brief>
16717            <description>
16718             <p>
16719 This is often an email in the form 'mailto:name@domain.com'.
16720             </p>
16721            </description>
16722             <version>
16723  1.0
16724             </version>
16725         </descriptive>
16726         <Type type="DOMString"/>
16727       </Attribute>
16728       <Attribute name="name" id="::Calendar::CalendarAttendee::name">
16729         <webidl>    attribute DOMString? name;</webidl>
16730         <descriptive>
16731             <brief>
16732  An attribute to store the name of an attendee.
16733             </brief>
16734             <version>
16735  1.0
16736             </version>
16737         </descriptive>
16738         <Type type="DOMString" nullable="nullable"/>
16739       </Attribute>
16740       <Attribute name="role" id="::Calendar::CalendarAttendee::role">
16741         <webidl>    attribute <ref>AttendeeRole</ref> role;</webidl>
16742         <descriptive>
16743             <brief>
16744  An attribute to denote the role of the attendee.
16745             </brief>
16746            <description>
16747             <p>
16748 (See RFC 5545, Section 3.2.16.)
16749             </p>
16750             <p>
16751 The default value is <var>REQ_PARTICIPANT</var>.
16752             </p>
16753            </description>
16754             <version>
16755  1.0
16756             </version>
16757         </descriptive>
16758         <Type name="AttendeeRole"/>
16759       </Attribute>
16760       <Attribute name="status" id="::Calendar::CalendarAttendee::status">
16761         <webidl>    attribute <ref>AttendeeStatus</ref> status;</webidl>
16762         <descriptive>
16763             <brief>
16764  An attribute to store the participant's attendance status.
16765 (See RFC 5545, Section 3.2.12.)
16766             </brief>
16767            <description>
16768             <p>
16769 The default value is <var>PENDING</var>.
16770             </p>
16771            </description>
16772             <version>
16773  1.0
16774             </version>
16775         </descriptive>
16776         <Type name="AttendeeStatus"/>
16777       </Attribute>
16778       <Attribute name="RSVP" id="::Calendar::CalendarAttendee::RSVP">
16779         <webidl>    attribute boolean RSVP;</webidl>
16780         <descriptive>
16781             <brief>
16782  An attribute to store the attendee's participation status reply (RSVP).
16783 (See RFC 5545, Section 3.2.17.)
16784             </brief>
16785            <description>
16786             <p>
16787 By default, this attribute is set to <var>FALSE</var>.
16788             </p>
16789            </description>
16790             <version>
16791  1.0
16792             </version>
16793         </descriptive>
16794         <Type type="boolean"/>
16795       </Attribute>
16796       <Attribute name="type" id="::Calendar::CalendarAttendee::type">
16797         <webidl>    attribute <ref>AttendeeType</ref> type;</webidl>
16798         <descriptive>
16799             <brief>
16800  An attribute to indicate the type of a participant.
16801 (See RFC 5545, Section 3.2.3.)
16802             </brief>
16803            <description>
16804             <p>
16805 The default value is <var>INDIVIDUAL</var>.
16806             </p>
16807            </description>
16808             <version>
16809  1.0
16810             </version>
16811         </descriptive>
16812         <Type name="AttendeeType"/>
16813       </Attribute>
16814       <Attribute name="group" id="::Calendar::CalendarAttendee::group">
16815         <webidl>    attribute DOMString? group;</webidl>
16816         <descriptive>
16817             <brief>
16818  An attribute to store the participant's group or list membership.
16819 (See RFC 5545, Section 3.2.11.)
16820             </brief>
16821             <version>
16822  1.0
16823             </version>
16824         </descriptive>
16825         <Type type="DOMString" nullable="nullable"/>
16826       </Attribute>
16827       <Attribute name="delegatorURI" id="::Calendar::CalendarAttendee::delegatorURI">
16828         <webidl>    attribute DOMString? delegatorURI;</webidl>
16829         <descriptive>
16830             <brief>
16831  An attribute to store the URI of the person who has delegated their participation to this attendee.
16832 (See RFC 5545, Section 3.2.4.)
16833             </brief>
16834             <version>
16835  1.0
16836             </version>
16837         </descriptive>
16838         <Type type="DOMString" nullable="nullable"/>
16839       </Attribute>
16840       <Attribute name="delegateURI" id="::Calendar::CalendarAttendee::delegateURI">
16841         <webidl>    attribute DOMString? delegateURI;</webidl>
16842         <descriptive>
16843             <brief>
16844  An attribute to stores the URI of the attendee to whom the person has delegated his participation.
16845 (See RFC 5545, Section 3.2.5.)
16846             </brief>
16847             <version>
16848  1.0
16849             </version>
16850         </descriptive>
16851         <Type type="DOMString" nullable="nullable"/>
16852       </Attribute>
16853       <Attribute name="contactRef" id="::Calendar::CalendarAttendee::contactRef">
16854         <webidl>    attribute <ref>ContactRef</ref>? contactRef;</webidl>
16855         <descriptive>
16856             <brief>
16857  An attribute to store the participant's reference in the Contact API.
16858             </brief>
16859            <description>
16860             <p>
16861 If the contact is not resolved, this attribute will be set to<var> null</var>.
16862 For more information, see the <a href="../../org.tizen.web.device.apireference/tizen/contact.html">Contact API</a>.
16863             </p>
16864            </description>
16865             <version>
16866  1.0
16867             </version>
16868         </descriptive>
16869         <Type name="ContactRef" nullable="nullable"/>
16870       </Attribute>
16871     </Interface>
16872     <Dictionary name="CalendarRecurrenceRuleInit" id="::Calendar::CalendarRecurrenceRuleInit">
16873       <webidl>  dictionary CalendarRecurrenceRuleInit {
16874     short interval;
16875     <ref>TZDate</ref> untilDate;
16876     long occurrenceCount;
16877     <ref>ByDayValue</ref>[] daysOfTheWeek;
16878     short[] setPositions;
16879     <ref>TZDate</ref>[] exceptions;
16880   };</webidl>
16881       <descriptive>
16882           <brief>
16883  The properties of a <em>CalendarRecurrenceRule</em> to pass to its constructor.
16884           </brief>
16885          <description>
16886           <p>
16887 For more information about the members, see <em>CalendarRecurrenceRule </em>interface.
16888           </p>
16889          </description>
16890           <version>
16891  1.0
16892           </version>
16893       </descriptive>
16894       <DictionaryMember name="interval" id="::Calendar::CalendarRecurrenceRuleInit::interval">
16895         <webidl>    short interval;</webidl>
16896         <Type type="short"/>
16897       </DictionaryMember>
16898       <DictionaryMember name="untilDate" id="::Calendar::CalendarRecurrenceRuleInit::untilDate">
16899         <webidl>    <ref>TZDate</ref> untilDate;</webidl>
16900         <Type name="TZDate"/>
16901       </DictionaryMember>
16902       <DictionaryMember name="occurrenceCount" id="::Calendar::CalendarRecurrenceRuleInit::occurrenceCount">
16903         <webidl>    long occurrenceCount;</webidl>
16904         <Type type="long"/>
16905       </DictionaryMember>
16906       <DictionaryMember name="daysOfTheWeek" id="::Calendar::CalendarRecurrenceRuleInit::daysOfTheWeek">
16907         <webidl>    <ref>ByDayValue</ref>[] daysOfTheWeek;</webidl>
16908         <Type type="array">
16909           <Type name="ByDayValue"/>
16910         </Type>
16911       </DictionaryMember>
16912       <DictionaryMember name="setPositions" id="::Calendar::CalendarRecurrenceRuleInit::setPositions">
16913         <webidl>    short[] setPositions;</webidl>
16914         <Type type="array">
16915           <Type type="short"/>
16916         </Type>
16917       </DictionaryMember>
16918       <DictionaryMember name="exceptions" id="::Calendar::CalendarRecurrenceRuleInit::exceptions">
16919         <webidl>    <ref>TZDate</ref>[] exceptions;</webidl>
16920         <Type type="array">
16921           <Type name="TZDate"/>
16922         </Type>
16923       </DictionaryMember>
16924     </Dictionary>
16925     <Interface name="CalendarRecurrenceRule" id="::Calendar::CalendarRecurrenceRule">
16926       <webidl>  [Constructor(<ref>RecurrenceRuleFrequency</ref> frequency, optional <ref>CalendarRecurrenceRuleInit</ref>? ruleInitDict)]
16927   interface CalendarRecurrenceRule
16928   { 
16929     attribute <ref>RecurrenceRuleFrequency</ref> frequency;
16930     
16931     attribute unsigned short interval;
16932     
16933     attribute <ref>TZDate</ref>? untilDate;
16934     
16935     attribute long occurrenceCount;
16936     
16937     attribute <ref>ByDayValue</ref>[] daysOfTheWeek;
16938     
16939     attribute short[] setPositions;
16940     
16941     attribute <ref>TZDate</ref>[] exceptions;
16942   };</webidl>
16943       <descriptive>
16944           <brief>
16945  This interface implements the<em> CalendarRecurrenceRule </em>object, which contains information about the recurrence of an event.
16946 (See RFC 5545, Section 3.3.10.)
16947           </brief>
16948           <version>
16949  1.0
16950           </version>
16951           <Code>  // Repeats daily for 7 days
16952   var rule = new tizen.CalendarRecurrenceRule(&quot;DAILY&quot;, {occurrenceCount:7});
16953   event.recurrenceRule = rule;
16954  </Code>
16955       </descriptive>
16956       <ExtendedAttributeList>
16957         <ExtendedAttribute name="Constructor">
16958           <webidl>Constructor(<ref>RecurrenceRuleFrequency</ref> frequency, optional <ref>CalendarRecurrenceRuleInit</ref>? ruleInitDict)</webidl>
16959           <ArgumentList>
16960             <Argument name="frequency">
16961               <Type name="RecurrenceRuleFrequency"/>
16962             </Argument>
16963             <Argument optional="optional" name="ruleInitDict">
16964               <Type name="CalendarRecurrenceRuleInit" nullable="nullable"/>
16965             </Argument>
16966           </ArgumentList>
16967         </ExtendedAttribute>
16968       </ExtendedAttributeList>
16969       <Attribute name="frequency" id="::Calendar::CalendarRecurrenceRule::frequency">
16970         <webidl>    attribute <ref>RecurrenceRuleFrequency</ref> frequency;</webidl>
16971         <descriptive>
16972             <brief>
16973  An attribute to store the frequency of a recurrence rule.
16974             </brief>
16975            <description>
16976             <p>
16977 This property corresponds to <em>FREQ</em> in RFC 5545.
16978             </p>
16979            </description>
16980             <version>
16981  1.0
16982             </version>
16983         </descriptive>
16984         <Type name="RecurrenceRuleFrequency"/>
16985       </Attribute>
16986       <Attribute name="interval" id="::Calendar::CalendarRecurrenceRule::interval">
16987         <webidl>    attribute unsigned short interval;</webidl>
16988         <descriptive>
16989             <brief>
16990  An attribute to specify how often the recurrence rule repeats over the unit of time indicated by its frequency.
16991             </brief>
16992            <description>
16993             <p>
16994 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.
16995             </p>
16996             <p>
16997 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.
16998             </p>
16999             <p>
17000 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>.
17001             </p>
17002             <p>
17003 This property corresponds to <em>INTERVAL</em> in RFC 5545.
17004             </p>
17005            </description>
17006             <version>
17007  1.0
17008             </version>
17009         </descriptive>
17010         <Type type="unsigned short"/>
17011       </Attribute>
17012       <Attribute name="untilDate" id="::Calendar::CalendarRecurrenceRule::untilDate">
17013         <webidl>    attribute <ref>TZDate</ref>? untilDate;</webidl>
17014         <descriptive>
17015             <brief>
17016  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).
17017             </brief>
17018            <description>
17019             <p>
17020 By default, this attribute is set to <var>null</var>, meaning that the event recurs infinitely, unless <em>occurrenceCount </em>is set.
17021             </p>
17022             <p>
17023 This attribute is precise to the second. Milliseconds are ignored.
17024             </p>
17025             <p>
17026 This property corresponds to <em>UNTIL</em> in RFC 5545.
17027             </p>
17028            </description>
17029             <version>
17030  1.0
17031             </version>
17032         </descriptive>
17033         <Type name="TZDate" nullable="nullable"/>
17034       </Attribute>
17035       <Attribute name="occurrenceCount" id="::Calendar::CalendarRecurrenceRule::occurrenceCount">
17036         <webidl>    attribute long occurrenceCount;</webidl>
17037         <descriptive>
17038             <brief>
17039  An attribute to indicate the number of occurrences of a recurring event.
17040             </brief>
17041            <description>
17042             <p>
17043 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).
17044             </p>
17045             <p>
17046 By default, this attribute is set to <var>-1</var>, meaning that the event recurs infinitely, unless <em>untilDate </em>is set.
17047             </p>
17048             <p>
17049 This property corresponds to <em>COUNT</em> in RFC 5545.
17050             </p>
17051            </description>
17052             <version>
17053  1.0
17054             </version>
17055         </descriptive>
17056         <Type type="long"/>
17057       </Attribute>
17058       <Attribute name="daysOfTheWeek" id="::Calendar::CalendarRecurrenceRule::daysOfTheWeek">
17059         <webidl>    attribute <ref>ByDayValue</ref>[] daysOfTheWeek;</webidl>
17060         <descriptive>
17061             <brief>
17062  An attribute to store the days of the week associated with the recurrence rule.
17063             </brief>
17064            <description>
17065             <p>
17066 This property value is valid only for recurrence rules with a frequency type of <em>WEEKLY</em>, <em>MONTHLY</em>, and <em>YEARLY</em>.
17067             </p>
17068             <p>
17069 This property corresponds to <em>BYDAY</em> in RFC 5545.
17070             </p>
17071             <p>
17072 By default, this attribute is set to an empty array.
17073             </p>
17074            </description>
17075             <version>
17076  1.0
17077             </version>
17078         </descriptive>
17079         <Type type="array">
17080           <Type name="ByDayValue"/>
17081         </Type>
17082       </Attribute>
17083       <Attribute name="setPositions" id="::Calendar::CalendarRecurrenceRule::setPositions">
17084         <webidl>    attribute short[] setPositions;</webidl>
17085         <descriptive>
17086             <brief>
17087  An attribute to store a list of ordinal numbers that filters which recurrences to include in the recurrence rule's frequency.
17088             </brief>
17089            <description>
17090             <p>
17091 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.
17092             </p>
17093             <p>
17094 Values can be from 1 to 366 or -366 to -1. 
17095 Negative values indicate counting backwards from the end of the recurrence rule's frequency (week, month, or year). 
17096             </p>
17097             <p>
17098 This attribute must only be used in conjunction with another BYxxx rule part (such as <em>daysOfTheWeek</em>).
17099             </p>
17100             <p>
17101 This property corresponds to <em>BYSETPOS</em> in RFC 5545.
17102             </p>
17103             <p>
17104 By default, this attribute is set to an empty array.
17105             </p>
17106            </description>
17107             <version>
17108  1.0
17109             </version>
17110         </descriptive>
17111         <Type type="array">
17112           <Type type="short"/>
17113         </Type>
17114       </Attribute>
17115       <Attribute name="exceptions" id="::Calendar::CalendarRecurrenceRule::exceptions">
17116         <webidl>    attribute <ref>TZDate</ref>[] exceptions;</webidl>
17117         <descriptive>
17118             <brief>
17119  An attribute to list date/time exceptions for the recurring event.
17120 (See RFC 5545, Section 3.8.5.1.) 
17121             </brief>
17122            <description>
17123             <p>
17124 This attribute is precise to the second. Milliseconds are ignored.
17125             </p>
17126             <p>
17127 This property corresponds to <em>EXDATE</em> in RFC 5545.
17128             </p>
17129             <p>
17130 By default, this attribute is set to an empty array.
17131             </p>
17132            </description>
17133             <version>
17134  1.0
17135             </version>
17136         </descriptive>
17137         <Type type="array">
17138           <Type name="TZDate"/>
17139         </Type>
17140       </Attribute>
17141     </Interface>
17142     <Interface name="CalendarEventId" id="::Calendar::CalendarEventId">
17143       <webidl>  [Constructor(DOMString uid, optional DOMString? rid)]
17144   interface CalendarEventId {
17145     attribute DOMString uid;
17146     
17147     attribute DOMString? rid;
17148   };</webidl>
17149       <descriptive>
17150           <brief>
17151  This interface contains a UID and an optional recurrence ID attribute to identify calendar events.
17152           </brief>
17153          <description>
17154           <p>
17155 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.
17156           </p>
17157          </description>
17158           <version>
17159  1.0
17160           </version>
17161       </descriptive>
17162       <ExtendedAttributeList>
17163         <ExtendedAttribute name="Constructor">
17164           <webidl>Constructor(DOMString uid, optional DOMString? rid)</webidl>
17165           <ArgumentList>
17166             <Argument name="uid">
17167               <Type type="DOMString"/>
17168             </Argument>
17169             <Argument optional="optional" name="rid">
17170               <Type type="DOMString" nullable="nullable"/>
17171             </Argument>
17172           </ArgumentList>
17173         </ExtendedAttribute>
17174       </ExtendedAttributeList>
17175       <Attribute name="uid" id="::Calendar::CalendarEventId::uid">
17176         <webidl>    attribute DOMString uid;</webidl>
17177         <descriptive>
17178             <brief>
17179  An attribute to persistently, and uniquely identify a calendar event.
17180             </brief>
17181            <description>
17182             <p>
17183 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.
17184             </p>
17185             <p>
17186 See RFC 5545 (section 3.8.4.7) for more details about this parameter and algorithms to guarantee assignment of unique values.
17187 This value is assigned by the platform when the <em>add()</em> method is successfully invoked.
17188             </p>
17189            </description>
17190             <version>
17191  1.0
17192             </version>
17193         </descriptive>
17194         <Type type="DOMString"/>
17195       </Attribute>
17196       <Attribute name="rid" id="::Calendar::CalendarEventId::rid">
17197         <webidl>    attribute DOMString? rid;</webidl>
17198         <descriptive>
17199             <brief>
17200  An attribute to store the recurrence ID of a <em>CalendarEvent </em>instance.
17201             </brief>
17202            <description>
17203             <p>
17204 This attribute is used in conjunction with the <em>uid</em> property to identify a specific instance of a recurring event.
17205             </p>
17206             <p>
17207 The parent of a recurrence instance has its <em>rid</em> set to <var>null</var>.
17208             </p>
17209             <p>
17210 By default, this attribute is set to <var>null</var>.
17211 (See RFC 5545 (section 3.8.4.4) for more details about this parameter.)
17212             </p>
17213            </description>
17214             <version>
17215  1.0
17216             </version>
17217         </descriptive>
17218         <Type type="DOMString" nullable="nullable"/>
17219       </Attribute>
17220     </Interface>
17221     <Interface name="CalendarAlarm" id="::Calendar::CalendarAlarm">
17222       <webidl>  [Constructor(<ref>TZDate</ref> absoluteDate, <ref>AlarmMethod</ref> method, optional DOMString? description),
17223    Constructor(<ref>TimeDuration</ref> before, <ref>AlarmMethod</ref> method, optional DOMString? description)]
17224   interface CalendarAlarm {
17225     attribute <ref>TZDate</ref>? absoluteDate setraises(<ref>WebAPIException</ref>);
17226     
17227     attribute <ref>TimeDuration</ref>? before setraises(<ref>WebAPIException</ref>);
17228   
17229     attribute <ref>AlarmMethod</ref> method setraises(<ref>WebAPIException</ref>);
17230     
17231     attribute DOMString? description;
17232   };</webidl>
17233       <descriptive>
17234           <brief>
17235  An interface that contains information related to an event alarm or reminder.
17236           </brief>
17237           <version>
17238  1.0
17239           </version>
17240           <Code>  // Creates a sound alarm 30 minutes before the event's start time
17241   var alarm = new tizen.CalendarAlarm(new tizen.TimeDuration(30, &quot;MINS&quot;), &quot;SOUND&quot;);
17242  </Code>
17243       </descriptive>
17244       <ExtendedAttributeList>
17245         <ExtendedAttribute name="Constructor">
17246           <webidl>Constructor(<ref>TZDate</ref> absoluteDate, <ref>AlarmMethod</ref> method, optional DOMString? description)</webidl>
17247           <ArgumentList>
17248             <Argument name="absoluteDate">
17249               <Type name="TZDate"/>
17250             </Argument>
17251             <Argument name="method">
17252               <Type name="AlarmMethod"/>
17253             </Argument>
17254             <Argument optional="optional" name="description">
17255               <Type type="DOMString" nullable="nullable"/>
17256             </Argument>
17257           </ArgumentList>
17258         </ExtendedAttribute>
17259         <ExtendedAttribute name="Constructor">
17260           <webidl>   Constructor(<ref>TimeDuration</ref> before, <ref>AlarmMethod</ref> method, optional DOMString? description)</webidl>
17261           <ArgumentList>
17262             <Argument name="before">
17263               <Type name="TimeDuration"/>
17264             </Argument>
17265             <Argument name="method">
17266               <Type name="AlarmMethod"/>
17267             </Argument>
17268             <Argument optional="optional" name="description">
17269               <Type type="DOMString" nullable="nullable"/>
17270             </Argument>
17271           </ArgumentList>
17272         </ExtendedAttribute>
17273       </ExtendedAttributeList>
17274       <Attribute name="absoluteDate" id="::Calendar::CalendarAlarm::absoluteDate">
17275         <webidl>    attribute <ref>TZDate</ref>? absoluteDate setraises(<ref>WebAPIException</ref>);</webidl>
17276         <descriptive>
17277             <brief>
17278  An attribute to record the absolute date and time when an alarm should be triggered.
17279             </brief>
17280            <description>
17281             <p>
17282 <em>absoluteDate </em>and <em>before </em>are mutually exclusive.
17283             </p>
17284             <p>
17285 This attribute is precise to the second. Milliseconds are ignored.
17286             </p>
17287            </description>
17288             <version>
17289  1.0
17290             </version>
17291         </descriptive>
17292         <Type name="TZDate" nullable="nullable"/>
17293         <SetRaises>
17294           <RaiseException name="WebAPIException"/>
17295         </SetRaises>
17296       </Attribute>
17297       <Attribute name="before" id="::Calendar::CalendarAlarm::before">
17298         <webidl>    attribute <ref>TimeDuration</ref>? before setraises(<ref>WebAPIException</ref>);</webidl>
17299         <descriptive>
17300             <brief>
17301  An attribute to store the duration before an event starts on which the alarm should be triggered.
17302             </brief>
17303            <description>
17304             <p>
17305 The duration should be positive.
17306             </p>
17307             <p>
17308 <em>absoluteDate </em>and <em>before </em>are mutually exclusive.
17309             </p>
17310             <p>
17311 This attribute is precise to the second. Milliseconds are ignored.
17312             </p>
17313            </description>
17314             <version>
17315  1.0
17316             </version>
17317         </descriptive>
17318         <Type name="TimeDuration" nullable="nullable"/>
17319         <SetRaises>
17320           <RaiseException name="WebAPIException"/>
17321         </SetRaises>
17322       </Attribute>
17323       <Attribute name="method" id="::Calendar::CalendarAlarm::method">
17324         <webidl>    attribute <ref>AlarmMethod</ref> method setraises(<ref>WebAPIException</ref>);</webidl>
17325         <descriptive>
17326             <brief>
17327  An attribute to denote the notification method used by an alarm.
17328             </brief>
17329             <version>
17330  1.0
17331             </version>
17332         </descriptive>
17333         <Type name="AlarmMethod"/>
17334         <SetRaises>
17335           <RaiseException name="WebAPIException"/>
17336         </SetRaises>
17337       </Attribute>
17338       <Attribute name="description" id="::Calendar::CalendarAlarm::description">
17339         <webidl>    attribute DOMString? description;</webidl>
17340         <descriptive>
17341             <brief>
17342  An attribute to store the description of an alarm.
17343             </brief>
17344            <description>
17345             <p>
17346 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.
17347             </p>
17348             <p>
17349 The default value is an empty string.
17350             </p>
17351            </description>
17352             <version>
17353  1.0
17354             </version>
17355         </descriptive>
17356         <Type type="DOMString" nullable="nullable"/>
17357       </Attribute>
17358     </Interface>
17359     <Interface name="CalendarEventArraySuccessCallback" id="::Calendar::CalendarEventArraySuccessCallback">
17360       <webidl>  [Callback=FunctionOnly, NoInterfaceObject]
17361   interface CalendarEventArraySuccessCallback {
17362     void onsuccess(<ref>CalendarEvent</ref>[] events);
17363   };</webidl>
17364       <descriptive>
17365           <brief>
17366  An interface that implements the success callback used in the asynchronous operation for retrieving a list of calendar events.
17367           </brief>
17368           <version>
17369  1.0
17370           </version>
17371       </descriptive>
17372       <ExtendedAttributeList>
17373         <ExtendedAttribute name="Callback" value="FunctionOnly">
17374           <webidl>Callback</webidl>
17375         </ExtendedAttribute>
17376         <ExtendedAttribute name="NoInterfaceObject">
17377           <webidl> NoInterfaceObject</webidl>
17378         </ExtendedAttribute>
17379       </ExtendedAttributeList>
17380       <Operation name="onsuccess" id="::Calendar::CalendarEventArraySuccessCallback::onsuccess">
17381         <webidl>    void onsuccess(<ref>CalendarEvent</ref>[] events);</webidl>
17382         <descriptive>
17383             <brief>
17384  Called when the list of calendar events is retrieved successfully.
17385             </brief>
17386             <version>
17387  1.0
17388             </version>
17389         </descriptive>
17390         <Type type="void"/>
17391         <ArgumentList>
17392           <Argument name="events">
17393             <descriptive>
17394                 <description><p>
17395  The array of <em>CalendarEvent </em>objects.
17396                 </p></description>
17397             </descriptive>
17398             <Type type="array">
17399               <Type name="CalendarEvent"/>
17400             </Type>
17401           </Argument>
17402         </ArgumentList>
17403       </Operation>
17404     </Interface>
17405     <Interface name="CalendarItemArraySuccessCallback" id="::Calendar::CalendarItemArraySuccessCallback">
17406       <webidl>  [Callback=FunctionOnly, NoInterfaceObject]
17407   interface CalendarItemArraySuccessCallback {
17408     void onsuccess(<ref>CalendarItem</ref>[] items);
17409   };</webidl>
17410       <descriptive>
17411           <brief>
17412  This interface implements the success callback used in the asynchronous operation for retrieving a list of calendar items.
17413           </brief>
17414           <version>
17415  1.0
17416           </version>
17417       </descriptive>
17418       <ExtendedAttributeList>
17419         <ExtendedAttribute name="Callback" value="FunctionOnly">
17420           <webidl>Callback</webidl>
17421         </ExtendedAttribute>
17422         <ExtendedAttribute name="NoInterfaceObject">
17423           <webidl> NoInterfaceObject</webidl>
17424         </ExtendedAttribute>
17425       </ExtendedAttributeList>
17426       <Operation name="onsuccess" id="::Calendar::CalendarItemArraySuccessCallback::onsuccess">
17427         <webidl>    void onsuccess(<ref>CalendarItem</ref>[] items);</webidl>
17428         <descriptive>
17429             <brief>
17430  Called when the list of calendar items is retrieved successfully.
17431             </brief>
17432             <version>
17433  1.0
17434             </version>
17435         </descriptive>
17436         <Type type="void"/>
17437         <ArgumentList>
17438           <Argument name="items">
17439             <descriptive>
17440                 <description><p>
17441  The array of <em>CalendarItem </em>objects.
17442                 </p></description>
17443             </descriptive>
17444             <Type type="array">
17445               <Type name="CalendarItem"/>
17446             </Type>
17447           </Argument>
17448         </ArgumentList>
17449       </Operation>
17450     </Interface>
17451     <Interface name="CalendarArraySuccessCallback" id="::Calendar::CalendarArraySuccessCallback">
17452       <webidl>  [Callback=FunctionOnly, NoInterfaceObject]
17453   interface CalendarArraySuccessCallback {
17454     void onsuccess(<ref>Calendar</ref>[] calendars);
17455   };</webidl>
17456       <descriptive>
17457           <brief>
17458  This interface implements the success callback used in the asynchronous operation to get a list of calendars using the <em>getCalendars()</em> method.
17459           </brief>
17460           <version>
17461  1.0
17462           </version>
17463       </descriptive>
17464       <ExtendedAttributeList>
17465         <ExtendedAttribute name="Callback" value="FunctionOnly">
17466           <webidl>Callback</webidl>
17467         </ExtendedAttribute>
17468         <ExtendedAttribute name="NoInterfaceObject">
17469           <webidl> NoInterfaceObject</webidl>
17470         </ExtendedAttribute>
17471       </ExtendedAttributeList>
17472       <Operation name="onsuccess" id="::Calendar::CalendarArraySuccessCallback::onsuccess">
17473         <webidl>    void onsuccess(<ref>Calendar</ref>[] calendars);</webidl>
17474         <descriptive>
17475             <brief>
17476  Called when the array of <em>Calendar </em>objects is retrieved successfully.
17477             </brief>
17478             <version>
17479  1.0
17480             </version>
17481         </descriptive>
17482         <Type type="void"/>
17483         <ArgumentList>
17484           <Argument name="calendars">
17485             <descriptive>
17486                 <description><p>
17487  The array of <em>Calendar </em>objects.
17488                 </p></description>
17489             </descriptive>
17490             <Type type="array">
17491               <Type name="Calendar"/>
17492             </Type>
17493           </Argument>
17494         </ArgumentList>
17495       </Operation>
17496     </Interface>
17497     <Interface name="CalendarChangeCallback" id="::Calendar::CalendarChangeCallback">
17498       <webidl>  [Callback, NoInterfaceObject] interface CalendarChangeCallback {
17499     void onitemsadded(<ref>CalendarItem</ref>[] items);
17500     
17501     void onitemsupdated(<ref>CalendarItem</ref>[] items);
17502     
17503     void onitemsremoved(<ref>CalendarItemId</ref>[] ids);
17504   };</webidl>
17505       <descriptive>
17506           <brief>
17507  This interface specifies a set of methods that will be invoked every time a calendar change occurs (calendar item addition/update/removal).
17508           </brief>
17509           <version>
17510  1.0
17511           </version>
17512       </descriptive>
17513       <ExtendedAttributeList>
17514         <ExtendedAttribute name="Callback">
17515           <webidl>Callback</webidl>
17516         </ExtendedAttribute>
17517         <ExtendedAttribute name="NoInterfaceObject">
17518           <webidl> NoInterfaceObject</webidl>
17519         </ExtendedAttribute>
17520       </ExtendedAttributeList>
17521       <Operation name="onitemsadded" id="::Calendar::CalendarChangeCallback::onitemsadded">
17522         <webidl>    void onitemsadded(<ref>CalendarItem</ref>[] items);</webidl>
17523         <descriptive>
17524             <brief>
17525  Called when items are added to the calendar.
17526             </brief>
17527             <version>
17528  1.0
17529             </version>
17530         </descriptive>
17531         <Type type="void"/>
17532         <ArgumentList>
17533           <Argument name="items">
17534             <descriptive>
17535                 <description><p>
17536  The list of items that were added.
17537                 </p></description>
17538             </descriptive>
17539             <Type type="array">
17540               <Type name="CalendarItem"/>
17541             </Type>
17542           </Argument>
17543         </ArgumentList>
17544       </Operation>
17545       <Operation name="onitemsupdated" id="::Calendar::CalendarChangeCallback::onitemsupdated">
17546         <webidl>    void onitemsupdated(<ref>CalendarItem</ref>[] items);</webidl>
17547         <descriptive>
17548             <brief>
17549  Called when items are updated in the calendar.
17550             </brief>
17551             <version>
17552  1.0
17553             </version>
17554         </descriptive>
17555         <Type type="void"/>
17556         <ArgumentList>
17557           <Argument name="items">
17558             <descriptive>
17559                 <description><p>
17560  The list of items that were updated.
17561                 </p></description>
17562             </descriptive>
17563             <Type type="array">
17564               <Type name="CalendarItem"/>
17565             </Type>
17566           </Argument>
17567         </ArgumentList>
17568       </Operation>
17569       <Operation name="onitemsremoved" id="::Calendar::CalendarChangeCallback::onitemsremoved">
17570         <webidl>    void onitemsremoved(<ref>CalendarItemId</ref>[] ids);</webidl>
17571         <descriptive>
17572             <brief>
17573  Called when item are removed from the calendar.
17574             </brief>
17575             <version>
17576  1.0
17577             </version>
17578         </descriptive>
17579         <Type type="void"/>
17580         <ArgumentList>
17581           <Argument name="ids">
17582             <descriptive>
17583                 <description><p>
17584  The list of identifiers for the items that were removed.
17585                 </p></description>
17586             </descriptive>
17587             <Type type="array">
17588               <Type name="CalendarItemId"/>
17589             </Type>
17590           </Argument>
17591         </ArgumentList>
17592       </Operation>
17593     </Interface>
17594   </Module>
17595   <Module name="Callhistory" id="::Callhistory">
17596     <webidl>module Callhistory {
17597     [NoInterfaceObject] interface CallHistoryObject {
17598         readonly attribute <ref>CallHistory</ref> callhistory;
17599     };
17600     
17601     <ref>Tizen</ref> implements <ref>CallHistoryObject</ref>;
17602
17603     [NoInterfaceObject] interface RemoteParty {
17604         readonly attribute DOMString? remoteParty;
17605
17606         readonly attribute <ref>PersonId</ref>? personId;
17607
17608     };
17609
17610     [NoInterfaceObject] interface CallHistoryEntry {
17611     
17612         readonly attribute DOMString uid;
17613
17614         readonly attribute DOMString type;
17615
17616         readonly attribute DOMString[]? features;
17617
17618         readonly attribute <ref>RemoteParty</ref>[] remoteParties;
17619
17620         readonly attribute Date startTime;
17621
17622         readonly attribute unsigned long duration;
17623
17624         attribute DOMString direction;
17625     };
17626
17627     [NoInterfaceObject] interface CallHistory {
17628
17629         void find(<ref>CallHistoryEntryArraySuccessCallback</ref> successCallback,
17630                   optional <ref>ErrorCallback</ref>? errorCallback,
17631                   optional <ref>AbstractFilter</ref>? filter,
17632                   optional <ref>SortMode</ref>? sortMode,
17633                   optional unsigned long? limit,
17634                   optional unsigned long? offset) raises(<ref>WebAPIException</ref>);
17635
17636         void remove(<ref>CallHistoryEntry</ref> entry) raises(<ref>WebAPIException</ref>);
17637
17638         void removeBatch(<ref>CallHistoryEntry</ref>[] entries,
17639                          optional <ref>SuccessCallback</ref>? successCallback,
17640                          optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
17641
17642         void removeAll(optional <ref>SuccessCallback</ref>? successCallback,
17643                        optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
17644
17645         long addChangeListener(<ref>CallHistoryChangeCallback</ref> observer) raises(<ref>WebAPIException</ref>);
17646
17647         void removeChangeListener(long handle) raises(<ref>WebAPIException</ref>);
17648     };
17649
17650     [Callback=FunctionOnly, NoInterfaceObject] interface CallHistoryEntryArraySuccessCallback {
17651         void onsuccess(<ref>CallHistoryEntry</ref>[] entries);
17652     };
17653
17654     [Callback, NoInterfaceObject]
17655     interface CallHistoryChangeCallback {
17656         void onadded(<ref>CallHistoryEntry</ref>[] newItems);
17657
17658         void onchanged(<ref>CallHistoryEntry</ref>[] changedItems);
17659
17660         void onremoved(DOMString[] removedItems);
17661     };
17662 };</webidl>
17663     <descriptive>
17664         <brief>
17665  This API provides interfaces and methods for retrieving information from the call history.
17666         </brief>
17667        <description>
17668         <p>
17669 For more information on the Callhistory features, see <a href="../../org.tizen.web.appprogramming/html/guide/social_guide/call.htm">Call History Guide</a>.  
17670         </p>
17671        </description>
17672         <version>
17673  2.0
17674         </version>
17675         <def-api-feature identifier="http://tizen.org/feature/network.telephony">
17676           <descriptive>
17677            <description>
17678             <p>
17679 To guarantee this application running on a device with Telephony feature, define below in the config file: 
17680             </p>
17681            </description>
17682           </descriptive>
17683         </def-api-feature>
17684     </descriptive>
17685     <Interface name="CallHistoryObject" id="::Callhistory::CallHistoryObject">
17686       <webidl>    [NoInterfaceObject] interface CallHistoryObject {
17687         readonly attribute <ref>CallHistory</ref> callhistory;
17688     };</webidl>
17689       <descriptive>
17690           <brief>
17691  This interface defines what is instantiated by the <em>Tizen </em>object from the Tizen Platform.
17692 The <em>tizen.callhistory<em> object allows access to the CallHistory API.
17693 </em></em>          </brief>
17694           <version>
17695  2.0
17696           </version>
17697       </descriptive>
17698       <ExtendedAttributeList>
17699         <ExtendedAttribute name="NoInterfaceObject">
17700           <webidl>NoInterfaceObject</webidl>
17701         </ExtendedAttribute>
17702       </ExtendedAttributeList>
17703       <Attribute readonly="readonly" name="callhistory" id="::Callhistory::CallHistoryObject::callhistory">
17704         <webidl>        readonly attribute <ref>CallHistory</ref> callhistory;</webidl>
17705         <Type name="CallHistory"/>
17706       </Attribute>
17707     </Interface>
17708     <Implements name1="Tizen" name2="CallHistoryObject">
17709       <webidl>    <ref>Tizen</ref> implements <ref>CallHistoryObject</ref>;</webidl>
17710       <descriptive>
17711           <brief>
17712  The CallHistory interface is available from the <em>Tizen </em>object through the <em>Window </em>object.
17713           </brief>
17714           <version>
17715  2.0
17716           </version>
17717       </descriptive>
17718     </Implements>
17719     <Interface name="RemoteParty" id="::Callhistory::RemoteParty">
17720       <webidl>    [NoInterfaceObject] interface RemoteParty {
17721         readonly attribute DOMString? remoteParty;
17722
17723         readonly attribute <ref>PersonId</ref>? personId;
17724
17725     };</webidl>
17726       <descriptive>
17727           <brief>
17728  This interface represents remote parties.
17729           </brief>
17730           <version>
17731  2.0
17732           </version>
17733       </descriptive>
17734       <ExtendedAttributeList>
17735         <ExtendedAttribute name="NoInterfaceObject">
17736           <webidl>NoInterfaceObject</webidl>
17737         </ExtendedAttribute>
17738       </ExtendedAttributeList>
17739       <Attribute readonly="readonly" name="remoteParty" id="::Callhistory::RemoteParty::remoteParty">
17740         <webidl>        readonly attribute DOMString? remoteParty;</webidl>
17741         <descriptive>
17742             <brief>
17743  An attribute to store the remote party identifier (RPID).
17744 The RPID is a unique identifier used by a service with call capability. It also includes phone numbers.
17745 Contacts are also defined per service, so an RPID can be resolved to a Contact.
17746 A <var>null </var>value means that the remote is hidden (private number).
17747             </brief>
17748             <version>
17749  2.0 
17750             </version>
17751         </descriptive>
17752         <Type type="DOMString" nullable="nullable"/>
17753       </Attribute>
17754       <Attribute readonly="readonly" name="personId" id="::Callhistory::RemoteParty::personId">
17755         <webidl>        readonly attribute <ref>PersonId</ref>? personId;</webidl>
17756         <descriptive>
17757             <brief>
17758  An attribute to store the identifier of the person that the raw contact belongs to.
17759             </brief>
17760            <description>
17761             <p>
17762 If the contact cannot be resolved, the value is <var>null</var>.
17763 See <a href="../../org.tizen.web.device.apireference/tizen/contact.html">Contact API</a> for more information.
17764             </p>
17765            </description>
17766             <version>
17767  2.0
17768             </version>
17769         </descriptive>
17770         <Type name="PersonId" nullable="nullable"/>
17771       </Attribute>
17772     </Interface>
17773     <Interface name="CallHistoryEntry" id="::Callhistory::CallHistoryEntry">
17774       <webidl>    [NoInterfaceObject] interface CallHistoryEntry {
17775     
17776         readonly attribute DOMString uid;
17777
17778         readonly attribute DOMString type;
17779
17780         readonly attribute DOMString[]? features;
17781
17782         readonly attribute <ref>RemoteParty</ref>[] remoteParties;
17783
17784         readonly attribute Date startTime;
17785
17786         readonly attribute unsigned long duration;
17787
17788         attribute DOMString direction;
17789     };</webidl>
17790       <descriptive>
17791           <brief>
17792  This interface represents the subset of properties of calls, which become a call record in the call history after the call ends.
17793           </brief>
17794           <version>
17795  2.0
17796           </version>
17797       </descriptive>
17798       <ExtendedAttributeList>
17799         <ExtendedAttribute name="NoInterfaceObject">
17800           <webidl>NoInterfaceObject</webidl>
17801         </ExtendedAttribute>
17802       </ExtendedAttributeList>
17803       <Attribute readonly="readonly" name="uid" id="::Callhistory::CallHistoryEntry::uid">
17804         <webidl>        readonly attribute DOMString uid;</webidl>
17805         <descriptive>
17806             <brief>
17807  An attribute to store the unique identifier of a call record.
17808             </brief>
17809             <version>
17810  2.0
17811             </version>
17812         </descriptive>
17813         <Type type="DOMString"/>
17814       </Attribute>
17815       <Attribute readonly="readonly" name="type" id="::Callhistory::CallHistoryEntry::type">
17816         <webidl>        readonly attribute DOMString type;</webidl>
17817         <descriptive>
17818             <brief>
17819  An attribute to store the service type of the call saved to call history.
17820             </brief>
17821            <description>
17822             <p>
17823 The following values are the supported:
17824             </p>
17825             <ul>
17826               <li>
17827 TEL - for all protocols with phone number addressing (PSTN, GSM, CDMA, LTE, etc.)               </li>
17828               <li>
17829 XMPP -  for generic XMPP calls              </li>
17830               <li>
17831 SIP - for generic SIP calls              </li>
17832             </ul>
17833            </description>
17834             <version>
17835  2.0
17836             </version>
17837         </descriptive>
17838         <Type type="DOMString"/>
17839       </Attribute>
17840       <Attribute readonly="readonly" name="features" id="::Callhistory::CallHistoryEntry::features">
17841         <webidl>        readonly attribute DOMString[]? features;</webidl>
17842         <descriptive>
17843             <brief>
17844  An attributes to store the features associated with the call service saved to call history.
17845 The following values are the supported:
17846             </brief>
17847            <description>
17848             <ul>
17849               <li>
17850 CALL - for all call types              </li>
17851               <li>
17852 VOICECALL - for voice-only calls               </li>
17853               <li>
17854 VIDEOCALL - for audio and video channel support in the call              </li>
17855               <li>
17856 EMERGENCYCALL - to denote an emergency call              </li>
17857             </ul>
17858            </description>
17859             <version>
17860  2.0
17861             </version>
17862         </descriptive>
17863         <Type type="array" nullable="nullable">
17864           <Type type="DOMString"/>
17865         </Type>
17866       </Attribute>
17867       <Attribute readonly="readonly" name="remoteParties" id="::Callhistory::CallHistoryEntry::remoteParties">
17868         <webidl>        readonly attribute <ref>RemoteParty</ref>[] remoteParties;</webidl>
17869         <descriptive>
17870             <brief>
17871  An attributes to store the remote parties participating in the call.
17872             </brief>
17873             <version>
17874  2.0
17875             </version>
17876         </descriptive>
17877         <Type type="array">
17878           <Type name="RemoteParty"/>
17879         </Type>
17880       </Attribute>
17881       <Attribute readonly="readonly" name="startTime" id="::Callhistory::CallHistoryEntry::startTime">
17882         <webidl>        readonly attribute Date startTime;</webidl>
17883         <descriptive>
17884             <brief>
17885  An attribute to store the start time of the call.
17886 This attribute is the moment when media channels come up. The exact meaning is defined by the back-end.
17887             </brief>
17888             <version>
17889  2.0
17890             </version>
17891         </descriptive>
17892         <Type type="Date"/>
17893       </Attribute>
17894       <Attribute readonly="readonly" name="duration" id="::Callhistory::CallHistoryEntry::duration">
17895         <webidl>        readonly attribute unsigned long duration;</webidl>
17896         <descriptive>
17897             <brief>
17898  An attribute to store the duration of the call in seconds.
17899 This attribute is the duration from media channels coming up to the moment when media channels tear down on the same call service.
17900 If the call is migrated to another service, another call history entry is used.
17901 The exact meaning is defined by the back-end.
17902             </brief>
17903             <version>
17904  2.0
17905             </version>
17906         </descriptive>
17907         <Type type="unsigned long"/>
17908       </Attribute>
17909       <Attribute name="direction" id="::Callhistory::CallHistoryEntry::direction">
17910         <webidl>        attribute DOMString direction;</webidl>
17911         <descriptive>
17912             <brief>
17913  An attribute to indicate whether the call was dialed, received, missed, blocked or rejected.
17914 The following values are the supported:
17915             </brief>
17916            <description>
17917             <ul>
17918               <li>
17919 DIALED - for dialed calls              </li>
17920               <li>
17921 RECEIVED - for received calls              </li>
17922               <li>
17923 MISSEDNEW - for missed calls not seen yet              </li>
17924               <li>
17925 MISSED - for missed calls              </li>
17926               <li>
17927 BLOCKED - for blocked calls              </li>
17928               <li>
17929 REJECTED - for rejected calls              </li>
17930             </ul>
17931            </description>
17932             <version>
17933  2.0
17934             </version>
17935         </descriptive>
17936         <Type type="DOMString"/>
17937       </Attribute>
17938     </Interface>
17939     <Interface name="CallHistory" id="::Callhistory::CallHistory">
17940       <webidl>    [NoInterfaceObject] interface CallHistory {
17941
17942         void find(<ref>CallHistoryEntryArraySuccessCallback</ref> successCallback,
17943                   optional <ref>ErrorCallback</ref>? errorCallback,
17944                   optional <ref>AbstractFilter</ref>? filter,
17945                   optional <ref>SortMode</ref>? sortMode,
17946                   optional unsigned long? limit,
17947                   optional unsigned long? offset) raises(<ref>WebAPIException</ref>);
17948
17949         void remove(<ref>CallHistoryEntry</ref> entry) raises(<ref>WebAPIException</ref>);
17950
17951         void removeBatch(<ref>CallHistoryEntry</ref>[] entries,
17952                          optional <ref>SuccessCallback</ref>? successCallback,
17953                          optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
17954
17955         void removeAll(optional <ref>SuccessCallback</ref>? successCallback,
17956                        optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
17957
17958         long addChangeListener(<ref>CallHistoryChangeCallback</ref> observer) raises(<ref>WebAPIException</ref>);
17959
17960         void removeChangeListener(long handle) raises(<ref>WebAPIException</ref>);
17961     };</webidl>
17962       <descriptive>
17963           <brief>
17964  This interface manages call history.
17965 Apps can read or delete call history (depending on permission).
17966 Modifying call history is allowed for certain attributes, like direction.
17967 Adding call history is owned by the back-end. Filtering is supported for all fields of <em>CallHistoryEntry</em>.
17968           </brief>
17969           <version>
17970  2.0
17971           </version>
17972       </descriptive>
17973       <ExtendedAttributeList>
17974         <ExtendedAttribute name="NoInterfaceObject">
17975           <webidl>NoInterfaceObject</webidl>
17976         </ExtendedAttribute>
17977       </ExtendedAttributeList>
17978       <Operation name="find" id="::Callhistory::CallHistory::find">
17979         <webidl>        void find(<ref>CallHistoryEntryArraySuccessCallback</ref> successCallback,
17980                   optional <ref>ErrorCallback</ref>? errorCallback,
17981                   optional <ref>AbstractFilter</ref>? filter,
17982                   optional <ref>SortMode</ref>? sortMode,
17983                   optional unsigned long? limit,
17984                   optional unsigned long? offset) raises(<ref>WebAPIException</ref>);</webidl>
17985         <descriptive>
17986             <brief>
17987  Finds and returns call history.
17988             </brief>
17989            <description>
17990             <p>
17991 The <em>errorCallback()</em> is launched with these error types:
17992             </p>
17993             <ul>
17994               <li>
17995 InvalidValuesError - If any of the input parameters contain an invalid value.              </li>
17996               <li>
17997 UnknownError - If any other error occurs.              </li>
17998             </ul>
17999            </description>
18000             <version>
18001  2.0
18002             </version>
18003             <privilegelevel>
18004  public
18005             </privilegelevel>
18006             <privilege>
18007  http://tizen.org/privilege/callhistory.read
18008             </privilege>
18009             <Code> // Defines success callback
18010  function onSuccess(results) {
18011      console.log(results.length + &quot; call history item(s) found!&quot;);
18012      for (var i=0; i&#60;results.length; i++) {
18013          console.log(i + &quot;. &quot; + results[i].toString()); // process the CallHistoryEntry
18014      }
18015  }
18016
18017  // Defines error callback
18018  function onError(error) {
18019      console.log(&quot;Query failed&quot; + error.name);
18020  }
18021
18022  // Defines filter: list CS calls, most recent first
18023  var filter = new tizen.AttributeFilter(&quot;type&quot;, &quot;EXACTLY&quot;, &quot;TEL&quot;);
18024
18025  // Defines sort mode: descending on call start time.
18026  var sortMode = new tizen.SortMode(&quot;startTime&quot;, &quot;DESC&quot;);
18027
18028  // Makes the query and wire up the callbacks
18029  tizen.callhistory.find(onSuccess,
18030                          onError,
18031                          filter,
18032                          sortMode);
18033
18034  var numberfilter = new tizen.AttributeFilter(
18035                                  &quot;remoteParties.remoteParty&quot;,
18036                                  &quot;EXACTLY&quot;,
18037                                  &quot;123456789&quot;);
18038                    
18039  // Creates a composite filter for time constraints
18040  var y2009Filter = new tizen.AttributeRangeFilter(
18041                                 &quot;startTime&quot;,
18042                                 new Date(2009, 0, 1),
18043                                 new Date(2010, 0, 1));
18044
18045  var y2011Filter = new tizen.AttributeRangeFilter(
18046                                 &quot;startTime&quot;,
18047                                 new Date(2011, 0, 1),
18048                                 new Date(2012, 0, 1));
18049
18050  var datefilter = new tizen.CompositeFilter(&quot;UNION&quot;, [y2009Filter, y2011Filter]);
18051
18052  // Creates a filter to find all video calls (including cellular, skype, etc)
18053  // The filter matches exactly any features from the &quot;features&quot; array
18054  var tfilter = new tizen.AttributeFilter(&quot;features&quot;, &quot;EXACTLY&quot;, &quot;VIDEOCALL&quot;);
18055
18056  // Creates composite filter
18057  var ifilter = new tizen.CompositeFilter(&quot;INTERSECTION&quot;,
18058                                          [numberFilter, dateFilter, tfilter]);
18059
18060  // Makes the query and wire up the callbacks; reuse sortMode
18061  tizen.callhistory.find(onSuccess,
18062                          onError,
18063                          ifilter,
18064                          sortMode);
18065
18066  </Code>
18067         </descriptive>
18068         <Type type="void"/>
18069         <ArgumentList>
18070           <Argument name="successCallback">
18071             <descriptive>
18072                 <description><p>
18073  A handler for query result set.
18074                 </p></description>
18075             </descriptive>
18076             <Type name="CallHistoryEntryArraySuccessCallback"/>
18077           </Argument>
18078           <Argument optional="optional" name="errorCallback">
18079             <descriptive>
18080                 <description><p>
18081  The method to call when an error occurs.
18082                 </p></description>
18083             </descriptive>
18084             <Type name="ErrorCallback" nullable="nullable"/>
18085           </Argument>
18086           <Argument optional="optional" name="filter">
18087             <descriptive>
18088                 <description><p>
18089  A filter defined on <em>CallHistoryEntry </em>attributes. It can be a composite filter.
18090                 </p></description>
18091             </descriptive>
18092             <Type name="AbstractFilter" nullable="nullable"/>
18093           </Argument>
18094           <Argument optional="optional" name="sortMode">
18095             <descriptive>
18096                 <description><p>
18097  The sort order in which call history are return.
18098                 </p></description>
18099             </descriptive>
18100             <Type name="SortMode" nullable="nullable"/>
18101           </Argument>
18102           <Argument optional="optional" name="limit">
18103             <descriptive>
18104                 <description><p>
18105  The maximum limit of query result (It is the same meaning as SQL LIMIT).
18106 If limit is 0, query result is no limit.
18107                 </p></description>
18108             </descriptive>
18109             <Type type="unsigned long" nullable="nullable"/>
18110           </Argument>
18111           <Argument optional="optional" name="offset">
18112             <descriptive>
18113                 <description><p>
18114  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.
18115                 </p></description>
18116             </descriptive>
18117             <Type type="unsigned long" nullable="nullable"/>
18118           </Argument>
18119         </ArgumentList>
18120         <Raises>
18121           <RaiseException name="WebAPIException">
18122             <descriptive>
18123                 <description><p>
18124  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
18125                 </p></description>
18126                 <description><p>
18127  with error type SecurityError, if this functionality is not allowed.
18128                 </p></description>
18129                 <description><p>
18130  with error type NotSupportedError, if the feature is not supported.
18131                 </p></description>
18132             </descriptive>
18133           </RaiseException>
18134         </Raises>
18135       </Operation>
18136       <Operation name="remove" id="::Callhistory::CallHistory::remove">
18137         <webidl>        void remove(<ref>CallHistoryEntry</ref> entry) raises(<ref>WebAPIException</ref>);</webidl>
18138         <descriptive>
18139             <brief>
18140  Removes a call history synchronously.
18141             </brief>
18142             <version>
18143  2.0
18144             </version>
18145             <privilegelevel>
18146  public
18147             </privilegelevel>
18148             <privilege>
18149  http://tizen.org/privilege/callhistory.write
18150             </privilege>
18151             <Code> // Defines success callback
18152  function onSuccess(results) {
18153      if (results.length > 0)
18154          tizen.callhistory.remove(results[0]);
18155  }
18156
18157  // Defines error callback
18158  function onError(error) {
18159      console.log(&quot;Query failed&quot; + error.name);
18160  }
18161
18162  // Makes the query and wires up the callbacks
18163  tizen.callhistory.find(onSuccess, onError);
18164
18165  </Code>
18166         </descriptive>
18167         <Type type="void"/>
18168         <ArgumentList>
18169           <Argument name="entry">
18170             <descriptive>
18171                 <description><p>
18172  Call history entry to be deleted.
18173                 </p></description>
18174             </descriptive>
18175             <Type name="CallHistoryEntry"/>
18176           </Argument>
18177         </ArgumentList>
18178         <Raises>
18179           <RaiseException name="WebAPIException">
18180             <descriptive>
18181                 <description><p>
18182  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
18183                 </p></description>
18184                 <description><p>
18185  with error type InvalidValuesError, if any input parameter contains invalid values.
18186                 </p></description>
18187                 <description><p>
18188  with error type SecurityError, if the application does not have the privilege to call this method.
18189                 </p></description>
18190                 <description><p>
18191  with error type NotSupportedError, if the feature is not supported.
18192                 </p></description>
18193                 <description><p>
18194  with error type UnknownError, if any other error occurs.
18195                 </p></description>
18196             </descriptive>
18197           </RaiseException>
18198         </Raises>
18199       </Operation>
18200       <Operation name="removeBatch" id="::Callhistory::CallHistory::removeBatch">
18201         <webidl>        void removeBatch(<ref>CallHistoryEntry</ref>[] entries,
18202                          optional <ref>SuccessCallback</ref>? successCallback,
18203                          optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
18204         <descriptive>
18205             <brief>
18206  Removes a list of call history asynchronously.
18207             </brief>
18208            <description>
18209             <p>
18210 The <em>errorCallback()</em> is launched with these error types:
18211             </p>
18212             <ul>
18213               <li>
18214 InvalidValuesError - If any of the input parameters contain an invalid value.              </li>
18215               <li>
18216 UnknownError - If any other error occurs.              </li>
18217             </ul>
18218            </description>
18219             <version>
18220  2.0
18221             </version>
18222             <privilegelevel>
18223  public
18224             </privilegelevel>
18225             <privilege>
18226  http://tizen.org/privilege/callhistory.write
18227             </privilege>
18228             <Code> // Defines success callback
18229  function onSuccess(results) {
18230      tizen.callhistory.removeBatch(results);
18231  }
18232
18233  // Defines error callback
18234  function onError(error) {
18235      console.log(&quot;Query failed&quot; + error.name);
18236  }
18237
18238  // Makes the query and wires up the callbacks
18239  tizen.callhistory.find(onSuccess, onError);
18240
18241  </Code>
18242         </descriptive>
18243         <Type type="void"/>
18244         <ArgumentList>
18245           <Argument name="entries">
18246             <descriptive>
18247                 <description><p>
18248  A list of call history entries to delete.
18249                 </p></description>
18250             </descriptive>
18251             <Type type="array">
18252               <Type name="CallHistoryEntry"/>
18253             </Type>
18254           </Argument>
18255           <Argument optional="optional" name="successCallback">
18256             <descriptive>
18257                 <description><p>
18258  A generic success handler.
18259                 </p></description>
18260             </descriptive>
18261             <Type name="SuccessCallback" nullable="nullable"/>
18262           </Argument>
18263           <Argument optional="optional" name="errorCallback">
18264             <descriptive>
18265                 <description><p>
18266  An error handler.
18267                 </p></description>
18268             </descriptive>
18269             <Type name="ErrorCallback" nullable="nullable"/>
18270           </Argument>
18271         </ArgumentList>
18272         <Raises>
18273           <RaiseException name="WebAPIException">
18274             <descriptive>
18275                 <description><p>
18276  with error type TypeMismatchError, if the input parameter is not compatible with the expected type for that parameter.
18277                 </p></description>
18278                 <description><p>
18279  with error type SecurityError, if the application does not have the privilege to call this method. 
18280                 </p></description>
18281                 <description><p>
18282  with error type NotSupportedError, if this feature is not supported.
18283                 </p></description>
18284             </descriptive>
18285           </RaiseException>
18286         </Raises>
18287       </Operation>
18288       <Operation name="removeAll" id="::Callhistory::CallHistory::removeAll">
18289         <webidl>        void removeAll(optional <ref>SuccessCallback</ref>? successCallback,
18290                        optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
18291         <descriptive>
18292             <brief>
18293  Removes all call history asynchronously.
18294             </brief>
18295            <description>
18296             <p>
18297 The <em>errorCallback()</em> is launched with these error types:
18298             </p>
18299             <ul>
18300               <li>
18301 InvalidValuesError - If any of the input parameters contain an invalid value.              </li>
18302               <li>
18303 UnknownError - If any other error occurs.              </li>
18304             </ul>
18305            </description>
18306             <version>
18307  2.0
18308             </version>
18309             <privilegelevel>
18310  public
18311             </privilegelevel>
18312             <privilege>
18313  http://tizen.org/privilege/callhistory.write
18314             </privilege>
18315         </descriptive>
18316         <Type type="void"/>
18317         <ArgumentList>
18318           <Argument optional="optional" name="successCallback">
18319             <descriptive>
18320                 <description><p>
18321  A generic success handler. 
18322                 </p></description>
18323             </descriptive>
18324             <Type name="SuccessCallback" nullable="nullable"/>
18325           </Argument>
18326           <Argument optional="optional" name="errorCallback">
18327             <descriptive>
18328                 <description><p>
18329  An error handler.
18330                 </p></description>
18331             </descriptive>
18332             <Type name="ErrorCallback" nullable="nullable"/>
18333           </Argument>
18334         </ArgumentList>
18335         <Raises>
18336           <RaiseException name="WebAPIException">
18337             <descriptive>
18338                 <description><p>
18339  with error type TypeMismatchError, if the input parameter is not compatible with the expected type for that parameter.
18340                 </p></description>
18341                 <description><p>
18342  with error type SecurityError, if this functionality is not allowed.
18343                 </p></description>
18344                 <description><p>
18345  with error type NotSupportedError, if this feature is not supported.
18346                 </p></description>
18347             </descriptive>
18348           </RaiseException>
18349         </Raises>
18350       </Operation>
18351       <Operation name="addChangeListener" id="::Callhistory::CallHistory::addChangeListener">
18352         <webidl>        long addChangeListener(<ref>CallHistoryChangeCallback</ref> observer) raises(<ref>WebAPIException</ref>);</webidl>
18353         <descriptive>
18354             <brief>
18355  Adds a listener to register for callback to observe call history changes.
18356             </brief>
18357             <version>
18358  2.0
18359             </version>
18360             <privilegelevel>
18361  public
18362             </privilegelevel>
18363             <privilege>
18364  http://tizen.org/privilege/callhistory.read
18365             </privilege>
18366             <Code> var onListenerCB = {
18367      onadded: function(newItems) {
18368          console.log(&quot;New Item added&quot;);
18369          for (var i in newItems) {
18370              console.log(&quot;Item &quot; + i + &quot; startTime: &quot; + newItems[i].startTime);
18371          }
18372      },
18373      onchanged: function(changedItems) {
18374          console.log(&quot;Items changed&quot;);
18375          for (var i in changedItems) {
18376              console.log(&quot;Item &quot; + i + &quot; direction: &quot; + changedItems[i].direction);
18377          }
18378      },
18379      onremoved: function(removedItems) {
18380          console.log(&quot;Items removed&quot;);
18381          for(var i in removedItems)  {
18382             console.log(&quot;Item &quot; + i + &quot; : &quot; + removedItems[i]);
18383          }
18384      }};
18385
18386  try {
18387      // Registers a call history callback
18388      var handle = tizen.callhistory.addChangeListener(onListenerCB);
18389
18390      // Unregisters a previously registered listener
18391      tizen.callhistory.removeChangeListener(handle);
18392  } catch (error) {
18393      console.log(&quot;Exception - code: &quot; + error.name + &quot; message: &quot; + error.message);
18394  }
18395
18396  </Code>
18397         </descriptive>
18398         <Type type="long">
18399           <descriptive>
18400               <description><p>
18401  long A handle which can be used for unregistering.
18402               </p></description>
18403           </descriptive>
18404         </Type>
18405         <ArgumentList>
18406           <Argument name="observer">
18407             <descriptive>
18408                 <description><p>
18409  A callback for handling the list of new or changed or <em>CallHistoryEntry </em>objects in the call history.
18410                 </p></description>
18411             </descriptive>
18412             <Type name="CallHistoryChangeCallback"/>
18413           </Argument>
18414         </ArgumentList>
18415         <Raises>
18416           <RaiseException name="WebAPIException">
18417             <descriptive>
18418                 <description><p>
18419  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
18420                 </p></description>
18421                 <description><p>
18422  with error type InvalidValuesError, if any input parameter contains invalid values.
18423                 </p></description>
18424                 <description><p>
18425  with error type SecurityError, if the application does not have the privilege to call this method.
18426                 </p></description>
18427                 <description><p>
18428  with error type NotSupportedError, if the feature is not supported.
18429                 </p></description>
18430                 <description><p>
18431  with error type UnknownError, if any other error occurs.
18432                 </p></description>
18433             </descriptive>
18434           </RaiseException>
18435         </Raises>
18436       </Operation>
18437       <Operation name="removeChangeListener" id="::Callhistory::CallHistory::removeChangeListener">
18438         <webidl>        void removeChangeListener(long handle) raises(<ref>WebAPIException</ref>);</webidl>
18439         <descriptive>
18440             <brief>
18441  Removes a listener to unregister a previously registered listener.
18442             </brief>
18443             <version>
18444  2.0
18445             </version>
18446             <privilegelevel>
18447  public
18448             </privilegelevel>
18449             <privilege>
18450  http://tizen.org/privilege/callhistory.read
18451             </privilege>
18452         </descriptive>
18453         <Type type="void"/>
18454         <ArgumentList>
18455           <Argument name="handle">
18456             <descriptive>
18457                 <description><p>
18458  The previously obtained listener handle.
18459                 </p></description>
18460             </descriptive>
18461             <Type type="long"/>
18462           </Argument>
18463         </ArgumentList>
18464         <Raises>
18465           <RaiseException name="WebAPIException">
18466             <descriptive>
18467                 <description><p>
18468  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
18469                 </p></description>
18470                 <description><p>
18471  with error type InvalidValuesError, if any input parameter contains invalid values.
18472                 </p></description>
18473                 <description><p>
18474  with error type SecurityError, if the application does not have the privilege to call this method.
18475                 </p></description>
18476                 <description><p>
18477  with error type NotSupportedError, if the feature is not supported.
18478                 </p></description>
18479                 <description><p>
18480  with error type UnknownError, if any other error occurs.
18481                 </p></description>
18482             </descriptive>
18483           </RaiseException>
18484         </Raises>
18485       </Operation>
18486     </Interface>
18487     <Interface name="CallHistoryEntryArraySuccessCallback" id="::Callhistory::CallHistoryEntryArraySuccessCallback">
18488       <webidl>    [Callback=FunctionOnly, NoInterfaceObject] interface CallHistoryEntryArraySuccessCallback {
18489         void onsuccess(<ref>CallHistoryEntry</ref>[] entries);
18490     };</webidl>
18491       <descriptive>
18492           <brief>
18493  This is a callback interface of <em>CallHistory </em>operations.
18494 For example code, see <em>CallHistory </em>interface.
18495           </brief>
18496           <version>
18497  2.0
18498           </version>
18499       </descriptive>
18500       <ExtendedAttributeList>
18501         <ExtendedAttribute name="Callback" value="FunctionOnly">
18502           <webidl>Callback</webidl>
18503         </ExtendedAttribute>
18504         <ExtendedAttribute name="NoInterfaceObject">
18505           <webidl> NoInterfaceObject</webidl>
18506         </ExtendedAttribute>
18507       </ExtendedAttributeList>
18508       <Operation name="onsuccess" id="::Callhistory::CallHistoryEntryArraySuccessCallback::onsuccess">
18509         <webidl>        void onsuccess(<ref>CallHistoryEntry</ref>[] entries);</webidl>
18510         <descriptive>
18511             <brief>
18512  Called when the queries on call history have been successfully completed.
18513             </brief>
18514             <version>
18515  2.0
18516             </version>
18517         </descriptive>
18518         <Type type="void"/>
18519         <ArgumentList>
18520           <Argument name="entries">
18521             <descriptive>
18522                 <description><p>
18523  An array of <em>CallHistoryEntry </em>objects, representing the result set of the query over the call history.
18524                 </p></description>
18525             </descriptive>
18526             <Type type="array">
18527               <Type name="CallHistoryEntry"/>
18528             </Type>
18529           </Argument>
18530         </ArgumentList>
18531       </Operation>
18532     </Interface>
18533     <Interface name="CallHistoryChangeCallback" id="::Callhistory::CallHistoryChangeCallback">
18534       <webidl>    [Callback, NoInterfaceObject]
18535     interface CallHistoryChangeCallback {
18536         void onadded(<ref>CallHistoryEntry</ref>[] newItems);
18537
18538         void onchanged(<ref>CallHistoryEntry</ref>[] changedItems);
18539
18540         void onremoved(DOMString[] removedItems);
18541     };</webidl>
18542       <descriptive>
18543           <brief>
18544  This is a callback interface of a<em> CallHistory </em>operations.
18545 For example code, see <em>CallHistory </em>interface.
18546           </brief>
18547           <version>
18548  2.0
18549           </version>
18550       </descriptive>
18551       <ExtendedAttributeList>
18552         <ExtendedAttribute name="Callback">
18553           <webidl>Callback</webidl>
18554         </ExtendedAttribute>
18555         <ExtendedAttribute name="NoInterfaceObject">
18556           <webidl> NoInterfaceObject</webidl>
18557         </ExtendedAttribute>
18558       </ExtendedAttributeList>
18559       <Operation name="onadded" id="::Callhistory::CallHistoryChangeCallback::onadded">
18560         <webidl>        void onadded(<ref>CallHistoryEntry</ref>[] newItems);</webidl>
18561         <descriptive>
18562             <brief>
18563  Called when a new call history item is added.
18564             </brief>
18565             <version>
18566  2.0
18567             </version>
18568         </descriptive>
18569         <Type type="void"/>
18570         <ArgumentList>
18571           <Argument name="newItems">
18572             <descriptive>
18573                 <description><p>
18574  An array of <em>CallHistoryEntry </em>objects, representing the new items added to call history.
18575                 </p></description>
18576             </descriptive>
18577             <Type type="array">
18578               <Type name="CallHistoryEntry"/>
18579             </Type>
18580           </Argument>
18581         </ArgumentList>
18582       </Operation>
18583       <Operation name="onchanged" id="::Callhistory::CallHistoryChangeCallback::onchanged">
18584         <webidl>        void onchanged(<ref>CallHistoryEntry</ref>[] changedItems);</webidl>
18585         <descriptive>
18586             <brief>
18587  Called when the call history have been changed.
18588             </brief>
18589             <version>
18590  2.0
18591             </version>
18592         </descriptive>
18593         <Type type="void"/>
18594         <ArgumentList>
18595           <Argument name="changedItems">
18596             <descriptive>
18597                 <description><p>
18598  An array of <em>CallHistoryEntry </em>objects, representing the changed items in call history.
18599                 </p></description>
18600             </descriptive>
18601             <Type type="array">
18602               <Type name="CallHistoryEntry"/>
18603             </Type>
18604           </Argument>
18605         </ArgumentList>
18606       </Operation>
18607       <Operation name="onremoved" id="::Callhistory::CallHistoryChangeCallback::onremoved">
18608         <webidl>        void onremoved(DOMString[] removedItems);</webidl>
18609         <descriptive>
18610             <brief>
18611  Called when the call history have been removed.
18612             </brief>
18613             <version>
18614  2.0
18615             </version>
18616         </descriptive>
18617         <Type type="void"/>
18618         <ArgumentList>
18619           <Argument name="removedItems">
18620             <descriptive>
18621                 <description><p>
18622  An array of an uid of <em>CallHistoryEntry </em>objects, representing the removed items in call history.
18623                 </p></description>
18624             </descriptive>
18625             <Type type="array">
18626               <Type type="DOMString"/>
18627             </Type>
18628           </Argument>
18629         </ArgumentList>
18630       </Operation>
18631     </Interface>
18632   </Module>
18633   <Module name="Contact" id="::Contact">
18634     <webidl>module Contact {
18635
18636   typedef DOMString AddressBookId;
18637
18638   typedef DOMString ContactId;
18639
18640   typedef DOMString PersonId;
18641
18642   typedef DOMString ContactGroupId;
18643
18644   enum ContactTextFormat {&quot;VCARD_30&quot;};
18645
18646   [NoInterfaceObject] interface ContactManagerObject {
18647     readonly attribute <ref>ContactManager</ref> contact;
18648   };
18649   <ref>Tizen</ref> implements <ref>ContactManagerObject</ref>;
18650
18651   [NoInterfaceObject] interface ContactManager {
18652
18653     void getAddressBooks(<ref>AddressBookArraySuccessCallback</ref> successCallback,
18654                          optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
18655
18656     <ref>AddressBook</ref> getUnifiedAddressBook() raises(<ref>WebAPIException</ref>);
18657
18658     <ref>AddressBook</ref> getDefaultAddressBook() raises(<ref>WebAPIException</ref>);
18659
18660     <ref>AddressBook</ref> getAddressBook(<ref>AddressBookId</ref> addressBookId) raises(<ref>WebAPIException</ref>);
18661
18662     <ref>Person</ref> get(<ref>PersonId</ref> personId) raises(<ref>WebAPIException</ref>);
18663
18664     void update(<ref>Person</ref> person) raises(<ref>WebAPIException</ref>);
18665
18666     void updateBatch(<ref>Person</ref>[] persons,
18667                      optional <ref>SuccessCallback</ref>? successCallback,
18668                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
18669
18670     void remove(<ref>PersonId</ref> personId) raises(<ref>WebAPIException</ref>);
18671
18672     void removeBatch(<ref>PersonId</ref>[] personIds,
18673                      optional <ref>SuccessCallback</ref>? successCallback,
18674                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
18675
18676     void find(<ref>PersonArraySuccessCallback</ref> successCallback,
18677               optional <ref>ErrorCallback</ref>? errorCallback,
18678               optional <ref>AbstractFilter</ref>? filter,
18679               optional <ref>SortMode</ref>? sortMode) raises(<ref>WebAPIException</ref>);
18680
18681     long addChangeListener(<ref>PersonsChangeCallback</ref> successCallback) raises(<ref>WebAPIException</ref>);
18682
18683     void removeChangeListener(long watchId) raises(<ref>WebAPIException</ref>);
18684   };
18685
18686   [NoInterfaceObject] interface AddressBook {
18687
18688     readonly attribute <ref>AddressBookId</ref>? id;
18689
18690     readonly attribute DOMString name;
18691
18692     readonly attribute boolean readOnly;
18693
18694     <ref>Contact</ref> get(<ref>ContactId</ref> id) raises(<ref>WebAPIException</ref>);
18695
18696     void add(<ref>Contact</ref> contact) raises(<ref>WebAPIException</ref>);
18697
18698     void addBatch(<ref>Contact</ref>[] contacts,
18699                   optional <ref>ContactArraySuccessCallback</ref>? successCallback,
18700                   optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
18701
18702     void update(<ref>Contact</ref> contact) raises(<ref>WebAPIException</ref>);
18703
18704     void updateBatch(<ref>Contact</ref>[] contacts,
18705                      optional <ref>SuccessCallback</ref>? successCallback,
18706                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
18707
18708     void remove(<ref>ContactId</ref> id) raises(<ref>WebAPIException</ref>);
18709
18710     void removeBatch(<ref>ContactId</ref>[] ids,
18711                      optional <ref>SuccessCallback</ref>? successCallback,
18712                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
18713
18714     void find(<ref>ContactArraySuccessCallback</ref> successCallback,
18715               optional <ref>ErrorCallback</ref>? errorCallback,
18716               optional <ref>AbstractFilter</ref>? filter,
18717               optional <ref>SortMode</ref>? sortMode) raises(<ref>WebAPIException</ref>);
18718
18719     long addChangeListener(<ref>AddressBookChangeCallback</ref> successCallback,
18720                            optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
18721
18722     void removeChangeListener(long watchId) raises(<ref>WebAPIException</ref>);
18723
18724     <ref>ContactGroup</ref> getGroup(<ref>ContactGroupId</ref> groupId) raises(<ref>WebAPIException</ref>);
18725
18726     void addGroup(<ref>ContactGroup</ref> group) raises(<ref>WebAPIException</ref>);
18727
18728     void updateGroup(<ref>ContactGroup</ref> group) raises(<ref>WebAPIException</ref>);
18729
18730     void removeGroup(<ref>ContactGroupId</ref> groupId) raises(<ref>WebAPIException</ref>);
18731
18732     <ref>ContactGroup</ref>[] getGroups() raises(<ref>WebAPIException</ref>);
18733   };
18734
18735   [NoInterfaceObject] interface Person {
18736     readonly attribute <ref>PersonId</ref> id;
18737
18738     readonly attribute DOMString displayName;
18739
18740     readonly attribute long contactCount;
18741
18742     readonly attribute boolean hasPhoneNumber;
18743
18744     readonly attribute boolean hasEmail;
18745
18746     attribute boolean isFavorite;
18747
18748     attribute DOMString? photoURI;
18749
18750     attribute DOMString? ringtoneURI;
18751
18752     attribute <ref>ContactId</ref> displayContactId;
18753
18754     void link(<ref>PersonId</ref> personId) raises(<ref>WebAPIException</ref>);
18755
18756     <ref>Person</ref> unlink(<ref>ContactId</ref> contactId) raises(<ref>WebAPIException</ref>);
18757   };
18758
18759   dictionary ContactInit {
18760     <ref>ContactName</ref> name;
18761     <ref>ContactAddress</ref>[] addresses;
18762     DOMString photoURI;
18763     <ref>ContactPhoneNumber</ref>[] phoneNumbers;
18764     <ref>ContactEmailAddress</ref>[] emails;
18765     Date birthday;
18766     <ref>ContactAnniversary</ref>[] anniversaries;
18767     <ref>ContactOrganization</ref>[] organizations;
18768     DOMString[] notes;
18769     <ref>ContactWebSite</ref>[] urls;
18770     DOMString ringtoneURI;
18771     <ref>ContactGroupId</ref>[] groupIds;
18772   };
18773
18774   [Constructor(optional <ref>ContactInit</ref>? ContactInitDict),
18775    Constructor(DOMString stringRepresentation)]
18776   interface Contact {
18777     readonly attribute <ref>ContactId</ref>? id;
18778
18779     readonly attribute <ref>PersonId</ref>? personId;
18780
18781     readonly attribute <ref>AddressBookId</ref>? addressBookId;
18782
18783     readonly attribute Date? lastUpdated;
18784
18785     readonly attribute boolean isFavorite;
18786
18787     attribute <ref>ContactName</ref>? name setraises(<ref>WebAPIException</ref>);
18788
18789     attribute <ref>ContactAddress</ref>[] addresses setraises(<ref>WebAPIException</ref>);
18790
18791     attribute DOMString? photoURI setraises(<ref>WebAPIException</ref>);
18792
18793     attribute <ref>ContactPhoneNumber</ref>[] phoneNumbers setraises(<ref>WebAPIException</ref>);
18794
18795     attribute <ref>ContactEmailAddress</ref>[] emails setraises(<ref>WebAPIException</ref>);
18796
18797     attribute Date? birthday setraises(<ref>WebAPIException</ref>);
18798
18799     attribute <ref>ContactAnniversary</ref>[] anniversaries setraises(<ref>WebAPIException</ref>);
18800
18801     attribute <ref>ContactOrganization</ref>[] organizations setraises(<ref>WebAPIException</ref>);
18802
18803     attribute DOMString[] notes setraises(<ref>WebAPIException</ref>);
18804
18805     attribute <ref>ContactWebSite</ref>[] urls setraises(<ref>WebAPIException</ref>);
18806
18807     attribute DOMString? ringtoneURI setraises(<ref>WebAPIException</ref>);
18808
18809     attribute <ref>ContactGroupId</ref>[] groupIds setraises(<ref>WebAPIException</ref>);
18810
18811     DOMString convertToString(optional <ref>ContactTextFormat</ref>? format) raises(<ref>WebAPIException</ref>);
18812
18813     <ref>Contact</ref> clone() raises(<ref>WebAPIException</ref>);
18814   };
18815
18816   [Constructor(<ref>AddressBookId</ref> addressBookId, <ref>ContactId</ref> contactId)]
18817   interface ContactRef {
18818     attribute <ref>AddressBookId</ref> addressBookId;
18819
18820     attribute <ref>ContactId</ref> contactId;
18821   };
18822
18823   dictionary ContactNameInit {
18824     DOMString prefix;
18825     DOMString suffix;
18826     DOMString firstName;
18827     DOMString middleName;
18828     DOMString lastName;
18829     DOMString[] nicknames;
18830     DOMString phoneticFirstName;
18831     DOMString phoneticLastName;
18832   };
18833
18834   [Constructor(optional <ref>ContactNameInit</ref>? nameInitDict)]
18835   interface ContactName {
18836     attribute DOMString? prefix;
18837
18838     attribute DOMString? suffix;
18839
18840     attribute DOMString? firstName;
18841
18842     attribute DOMString? middleName;
18843
18844     attribute DOMString? lastName;
18845
18846     attribute DOMString[] nicknames;
18847
18848     attribute DOMString? phoneticFirstName;
18849
18850     attribute DOMString? phoneticLastName;
18851
18852     readonly attribute DOMString? displayName;
18853   };
18854
18855   dictionary ContactOrganizationInit {
18856     DOMString name;
18857     DOMString department;
18858     DOMString title;
18859     DOMString role;
18860     DOMString logoURI;
18861   };
18862
18863   [Constructor(optional <ref>ContactOrganizationInit</ref>? orgInitDict)]
18864   interface ContactOrganization {
18865     attribute DOMString? name;
18866
18867     attribute DOMString? department;
18868
18869     attribute DOMString? title;
18870
18871     attribute DOMString? role;
18872
18873     attribute DOMString? logoURI;
18874   };
18875
18876   [Constructor(DOMString url, optional DOMString type)]
18877   interface ContactWebSite
18878   {
18879     attribute DOMString url;
18880
18881     attribute DOMString type;
18882   };
18883
18884   [Constructor(Date date, optional DOMString? label)]
18885   interface ContactAnniversary
18886   {
18887     attribute Date date;
18888
18889     attribute DOMString? label;
18890   };
18891
18892   dictionary ContactAddressInit
18893   {
18894     DOMString country;
18895     DOMString region;
18896     DOMString city;
18897     DOMString streetAddress;
18898     DOMString additionalInformation;
18899     DOMString postalCode;
18900     boolean isDefault;
18901     DOMString[] types;
18902   };
18903
18904   [Constructor(optional <ref>ContactAddressInit</ref>? addressInitDict)]
18905   interface ContactAddress
18906   {
18907     attribute DOMString? country;
18908
18909     attribute DOMString? region;
18910
18911     attribute DOMString? city;
18912
18913     attribute DOMString? streetAddress;
18914
18915     attribute DOMString? additionalInformation;
18916
18917     attribute DOMString? postalCode;
18918
18919     attribute boolean isDefault;
18920
18921     attribute DOMString[] types;
18922   };
18923
18924   [Constructor(DOMString number, optional DOMString[] types, optional boolean isDefault)]
18925   interface ContactPhoneNumber
18926   {
18927     attribute DOMString number;
18928
18929     attribute boolean isDefault;
18930
18931     attribute DOMString[] types;
18932   };
18933
18934   [Constructor(DOMString email, optional DOMString[] types, optional boolean isDefault)]
18935   interface ContactEmailAddress
18936   {
18937     attribute DOMString email;
18938
18939     attribute boolean isDefault;
18940
18941     attribute DOMString[] types;
18942   };
18943
18944   [Constructor(DOMString name, optional DOMString? ringtoneURI, optional DOMString? photoURI)]
18945   interface ContactGroup
18946   {
18947     readonly attribute <ref>ContactGroupId</ref>? id;
18948
18949     readonly attribute <ref>AddressBookId</ref>? addressBookId;
18950
18951     attribute DOMString name;
18952
18953     attribute DOMString? ringtoneURI;
18954
18955     attribute DOMString? photoURI;
18956
18957     readonly attribute DOMString readOnly;
18958   };
18959
18960   [Callback=FunctionOnly, NoInterfaceObject] interface PersonArraySuccessCallback {
18961     void onsuccess(<ref>Person</ref>[] persons);
18962   };
18963
18964   [Callback=FunctionOnly, NoInterfaceObject] interface ContactArraySuccessCallback {
18965     void onsuccess(<ref>Contact</ref>[] contacts);
18966   };
18967
18968   [Callback=FunctionOnly, NoInterfaceObject] interface AddressBookArraySuccessCallback {
18969     void onsuccess(<ref>AddressBook</ref>[] addressbooks);
18970   };
18971
18972   [Callback, NoInterfaceObject] interface AddressBookChangeCallback {
18973     void oncontactsadded(<ref>Contact</ref>[] contacts);
18974
18975     void oncontactsupdated(<ref>Contact</ref>[] contacts);
18976
18977     void oncontactsremoved(<ref>ContactId</ref>[] contactIds);
18978   };
18979
18980   [Callback, NoInterfaceObject] interface PersonsChangeCallback {
18981     void onpersonsadded(<ref>Person</ref>[] persons);
18982
18983     void onpersonsupdated(<ref>Person</ref>[] persons);
18984
18985     void onpersonsremoved(<ref>PersonId</ref>[] personIds);
18986   };
18987 };</webidl>
18988     <descriptive>
18989         <brief>
18990  This API is for managing Address Books.
18991         </brief>
18992        <description>
18993         <p>
18994 A contact is a set of information that describes a contact. The contact contains information, such as phone numbers,
18995 e-mail addresses, etc.
18996         </p>
18997         <p>
18998 <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.
18999         </p>
19000         <p>
19001 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.
19002         </p>
19003         <p>
19004 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.
19005         </p>
19006         <p>
19007 For more information on the Contact features, see <a href="../../org.tizen.web.appprogramming/html/guide/social_guide/contact.htm">Contact Guide</a>.
19008         </p>
19009        </description>
19010         <version>
19011  1.0
19012         </version>
19013     </descriptive>
19014     <Typedef name="AddressBookId" id="::Contact::AddressBookId">
19015       <webidl>  typedef DOMString AddressBookId;</webidl>
19016       <descriptive>
19017           <brief>
19018  The address book identifier.
19019           </brief>
19020           <version>
19021  1.0
19022           </version>
19023       </descriptive>
19024       <Type type="DOMString"/>
19025     </Typedef>
19026     <Typedef name="ContactId" id="::Contact::ContactId">
19027       <webidl>  typedef DOMString ContactId;</webidl>
19028       <descriptive>
19029           <brief>
19030  The contact identifier.
19031           </brief>
19032           <version>
19033  1.0
19034           </version>
19035       </descriptive>
19036       <Type type="DOMString"/>
19037     </Typedef>
19038     <Typedef name="PersonId" id="::Contact::PersonId">
19039       <webidl>  typedef DOMString PersonId;</webidl>
19040       <descriptive>
19041           <brief>
19042  The person identifier.
19043           </brief>
19044           <version>
19045  2.0
19046           </version>
19047       </descriptive>
19048       <Type type="DOMString"/>
19049     </Typedef>
19050     <Typedef name="ContactGroupId" id="::Contact::ContactGroupId">
19051       <webidl>  typedef DOMString ContactGroupId;</webidl>
19052       <descriptive>
19053           <brief>
19054  The group identifier.
19055           </brief>
19056           <version>
19057  2.0
19058           </version>
19059       </descriptive>
19060       <Type type="DOMString"/>
19061     </Typedef>
19062     <Enum name="ContactTextFormat" id="::Contact::ContactTextFormat">
19063       <webidl>  enum ContactTextFormat {&quot;VCARD_30&quot;};</webidl>
19064       <descriptive>
19065           <brief>
19066  An enumerator that indicates the contact format that is used for export.   * The possible values are:
19067           </brief>
19068          <description>
19069           <ul>
19070             <li>
19071 VCARD_30 - vCard v3.0 format            </li>
19072           </ul>
19073           <p>
19074 Currently, vCard v3.0 is the only format supported by the Tizen platform.
19075           </p>
19076          </description>
19077           <version>
19078  1.0
19079           </version>
19080       </descriptive>
19081       <EnumValue stringvalue="VCARD_30">
19082         <webidl>&quot;VCARD_30</webidl>
19083       </EnumValue>
19084     </Enum>
19085     <Interface name="ContactManagerObject" id="::Contact::ContactManagerObject">
19086       <webidl>  [NoInterfaceObject] interface ContactManagerObject {
19087     readonly attribute <ref>ContactManager</ref> contact;
19088   };</webidl>
19089       <descriptive>
19090           <brief>
19091  Defines what is instantiated by the <em>Tizen </em>object from the Tizen Platform.
19092           </brief>
19093          <description>
19094           <p>
19095 There is a <em>tizen.contact </em>object that allows access to the Contact API functionality.
19096           </p>
19097          </description>
19098           <version>
19099  1.0
19100           </version>
19101       </descriptive>
19102       <ExtendedAttributeList>
19103         <ExtendedAttribute name="NoInterfaceObject">
19104           <webidl>NoInterfaceObject</webidl>
19105         </ExtendedAttribute>
19106       </ExtendedAttributeList>
19107       <Attribute readonly="readonly" name="contact" id="::Contact::ContactManagerObject::contact">
19108         <webidl>    readonly attribute <ref>ContactManager</ref> contact;</webidl>
19109         <Type name="ContactManager"/>
19110       </Attribute>
19111     </Interface>
19112     <Implements name1="Tizen" name2="ContactManagerObject">
19113       <webidl>  <ref>Tizen</ref> implements <ref>ContactManagerObject</ref>;</webidl>
19114     </Implements>
19115     <Interface name="ContactManager" id="::Contact::ContactManager">
19116       <webidl>  [NoInterfaceObject] interface ContactManager {
19117
19118     void getAddressBooks(<ref>AddressBookArraySuccessCallback</ref> successCallback,
19119                          optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
19120
19121     <ref>AddressBook</ref> getUnifiedAddressBook() raises(<ref>WebAPIException</ref>);
19122
19123     <ref>AddressBook</ref> getDefaultAddressBook() raises(<ref>WebAPIException</ref>);
19124
19125     <ref>AddressBook</ref> getAddressBook(<ref>AddressBookId</ref> addressBookId) raises(<ref>WebAPIException</ref>);
19126
19127     <ref>Person</ref> get(<ref>PersonId</ref> personId) raises(<ref>WebAPIException</ref>);
19128
19129     void update(<ref>Person</ref> person) raises(<ref>WebAPIException</ref>);
19130
19131     void updateBatch(<ref>Person</ref>[] persons,
19132                      optional <ref>SuccessCallback</ref>? successCallback,
19133                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
19134
19135     void remove(<ref>PersonId</ref> personId) raises(<ref>WebAPIException</ref>);
19136
19137     void removeBatch(<ref>PersonId</ref>[] personIds,
19138                      optional <ref>SuccessCallback</ref>? successCallback,
19139                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
19140
19141     void find(<ref>PersonArraySuccessCallback</ref> successCallback,
19142               optional <ref>ErrorCallback</ref>? errorCallback,
19143               optional <ref>AbstractFilter</ref>? filter,
19144               optional <ref>SortMode</ref>? sortMode) raises(<ref>WebAPIException</ref>);
19145
19146     long addChangeListener(<ref>PersonsChangeCallback</ref> successCallback) raises(<ref>WebAPIException</ref>);
19147
19148     void removeChangeListener(long watchId) raises(<ref>WebAPIException</ref>);
19149   };</webidl>
19150       <descriptive>
19151           <brief>
19152  This interface provides access to the API functionality.
19153           </brief>
19154          <description>
19155           <p>
19156 This interface offers a method to retrieve the address books objects.
19157 The address book objects can be manipulated with the provided functionalities to add, remove, and update the contained information.
19158           </p>
19159          </description>
19160           <version>
19161  1.0
19162           </version>
19163       </descriptive>
19164       <ExtendedAttributeList>
19165         <ExtendedAttribute name="NoInterfaceObject">
19166           <webidl>NoInterfaceObject</webidl>
19167         </ExtendedAttribute>
19168       </ExtendedAttributeList>
19169       <Operation name="getAddressBooks" id="::Contact::ContactManager::getAddressBooks">
19170         <webidl>    void getAddressBooks(<ref>AddressBookArraySuccessCallback</ref> successCallback,
19171                          optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
19172         <descriptive>
19173             <brief>
19174  Gets the available address books.
19175             </brief>
19176            <description>
19177             <p>
19178 If the operation completes successfully, the successCallback must
19179 be invoked with the phone address book and the SIM address book (if any).
19180 Other address books present in the device should also be returned.
19181             </p>
19182             <p>
19183 If no address book is present, the <em>successCallback</em> will be invoked with an empty array.
19184             </p>
19185             <p>
19186 The errorCallback is launched with these error types:
19187             </p>
19188             <ul>
19189               <li>
19190 InvalidValuesError - If the event given in argument is not a recurring event.              </li>
19191               <li>
19192 UnknownError - If any other error occurs while trying to get the address books.              </li>
19193             </ul>
19194            </description>
19195             <version>
19196  1.0
19197             </version>
19198             <privilegelevel>
19199  public
19200             </privilegelevel>
19201             <privilege>
19202  http://tizen.org/privilege/contact.read
19203             </privilege>
19204             <Code>  var addressbook;
19205
19206   // Define the error callback for all the asynchronous calls
19207   function errorCB(err) {
19208     console.log( 'The following error occurred: ' +  err.name);
19209   }
19210
19211   function contactsFoundCB(contacts) {
19212     // The contact has been successfully found
19213     // Let's try to change the first name
19214     contacts[0].name.firstName = 'Jeffrey Ross';
19215     try {
19216       addressbook.update(contacts[0]);
19217     } catch (err) {
19218       console.log( 'The following error occurred while updating: ' +  err.name);
19219     }
19220     console.log('First contact was updated');
19221   }
19222
19223   // Define the success callback for retrieving all the
19224   // Address Books
19225   function addressBooksCB(addressbooks) {
19226     if(addressbooks.length > 0) {
19227       addressbook = addressbooks[0];
19228       console.log('The addressbook type is ' + addressbook.type +
19229             ' and name ' + addressbook.name);
19230
19231       var contact = new tizen.Contact(
19232                          {name: new tizen.ContactName({firstName:'Jeffrey',
19233                                  lastName:'Hyman',
19234                                  nicknames:['joey ramone']}),
19235                           emails:[new tizen.ContactEmailAddress('user@domain.com')],
19236                           phoneNumbers:[new tizen.ContactPhoneNumber('123456789')]});
19237
19238       addressbook.add(contact);
19239
19240       // The contact has been successfully added
19241       // Checks whether the added contact can be retrieved from the address book or not.
19242       // If the address book is empty, only the item added through saveContact
19243       // should be returned
19244       var filter = new tizen.AttributeFilter('name.firstName', 'CONTAINS', 'Jeffrey');
19245       try {
19246         addressbook.find(contactsFoundCB, errorCB, filter);
19247       } catch (err) {
19248         console.log( 'The following error occurred while finding: ' +  err.name);
19249       }
19250     }
19251   }
19252
19253   // Get a list of available address books.
19254   tizen.contact.getAddressBooks(addressBooksCB, errorCB);
19255  </Code>
19256         </descriptive>
19257         <Type type="void"/>
19258         <ArgumentList>
19259           <Argument name="successCallback">
19260             <descriptive>
19261                 <description><p>
19262  The method to call when the invocation ends successfully.
19263                 </p></description>
19264             </descriptive>
19265             <Type name="AddressBookArraySuccessCallback"/>
19266           </Argument>
19267           <Argument optional="optional" name="errorCallback">
19268             <descriptive>
19269                 <description><p>
19270  The method to call when an error occurs.
19271                 </p></description>
19272             </descriptive>
19273             <Type name="ErrorCallback" nullable="nullable"/>
19274           </Argument>
19275         </ArgumentList>
19276         <Raises>
19277           <RaiseException name="WebAPIException">
19278             <descriptive>
19279                 <description><p>
19280  with error type TypeMismatchError, if any input parameter
19281 is not compatible with the expected type for that parameter.
19282                 </p></description>
19283                 <description><p>
19284  with error type SecurityError, if the application does not have the privilege to call this method.
19285                 </p></description>
19286                 <description><p>
19287  with error type NotSupportedError, if the feature
19288 is not supported.
19289                 </p></description>
19290             </descriptive>
19291           </RaiseException>
19292         </Raises>
19293       </Operation>
19294       <Operation name="getUnifiedAddressBook" id="::Contact::ContactManager::getUnifiedAddressBook">
19295         <webidl>    <ref>AddressBook</ref> getUnifiedAddressBook() raises(<ref>WebAPIException</ref>);</webidl>
19296         <descriptive>
19297             <brief>
19298  Gets the aggregation of all address books.
19299             </brief>
19300            <description>
19301             <p>
19302 The unified address book is a logical address book that represents an aggregation of all address books
19303 that are obtained by getAddressBooks() and contains all contacts in the address books.
19304 Note that the unified address book does not have an address book ID
19305 and it is set to <var>null</var>.
19306             </p>
19307            </description>
19308             <version>
19309  2.1
19310             </version>
19311             <privilegelevel>
19312  public
19313             </privilegelevel>
19314             <privilege>
19315  http://tizen.org/privilege/contact.read
19316             </privilege>
19317             <Code>  var addressbook;
19318
19319   // Define the error callback
19320   function errorCB(err) {
19321     console.log( 'The following error occurred: ' +  err.name);
19322   }
19323
19324   function contactsFoundCB(contacts) {
19325     // The contact has been successfully found
19326     // Let's try to change the first name
19327     contacts[0].name.firstName = 'Jeffrey Ross';
19328     try {
19329       addressbook.update(contacts[0]);
19330       console.log('First contact was updated');
19331     } catch (err) {
19332       console.log( 'The following error occurred while updating: ' +  err.name);
19333     }
19334   }
19335
19336   // Get unified address book.
19337   addressbook = tizen.contact.getUnifiedAddressBook();
19338
19339   // Add a new contact
19340   var contact = new tizen.Contact(
19341                      {name: new tizen.ContactName({firstName:'Jeffrey',
19342                              lastName:'Hyman',
19343                              nicknames:['joey ramone']}),
19344                       emails:[new tizen.ContactEmailAddress('user@domain.com')],
19345                       phoneNumbers:[new tizen.ContactPhoneNumber('123456789')]});
19346
19347   try {
19348     addressbook.add(contact);
19349   } catch (err) {
19350     console.log( 'The following error occurred while adding: ' +  err.name);
19351   }
19352
19353   // The contact has been successfully added
19354   // Let's try to check if we can retrieve the added
19355   // contact from the address book. If the address book
19356   // was empty only the item added through saveContact should
19357   // be returned
19358   var filter = new tizen.AttributeFiilter('name.firstName', 'CONTAINS', 'Jeffrey');
19359   try {
19360     addressbook.find(contactsFoundCB, errorCB, filter);
19361   } catch (err) {
19362     console.log( 'The following error occurred while finding: ' +  err.name);
19363   }
19364  </Code>
19365         </descriptive>
19366         <Type name="AddressBook">
19367           <descriptive>
19368               <description><p>
19369  AddressBook The unified AddressBook object.
19370               </p></description>
19371           </descriptive>
19372         </Type>
19373         <ArgumentList/>
19374         <Raises>
19375           <RaiseException name="WebAPIException">
19376             <descriptive>
19377                 <description><p>
19378  with error type SecurityError, if the application does not have the privilege to call this method.
19379                 </p></description>
19380                 <description><p>
19381  with error type NotSupportedError, if the feature
19382 is not supported.
19383                 </p></description>
19384                 <description><p>
19385  with error type UnknownError in any other error case.
19386                 </p></description>
19387             </descriptive>
19388           </RaiseException>
19389         </Raises>
19390       </Operation>
19391       <Operation name="getDefaultAddressBook" id="::Contact::ContactManager::getDefaultAddressBook">
19392         <webidl>    <ref>AddressBook</ref> getDefaultAddressBook() raises(<ref>WebAPIException</ref>);</webidl>
19393         <descriptive>
19394             <brief>
19395  Gets the default address book.
19396             </brief>
19397            <description>
19398             <p>
19399 The default address book is the appointed addressbook from platform or operator.
19400 This is one of addressBooks and it has the address book ID.
19401             </p>
19402             <p>
19403 If the operation completes successfully, it must return the
19404 default address book.
19405             </p>
19406            </description>
19407             <version>
19408  1.0
19409             </version>
19410             <privilegelevel>
19411  public
19412             </privilegelevel>
19413             <privilege>
19414  http://tizen.org/privilege/contact.read
19415             </privilege>
19416             <Code>  var addressbook;
19417
19418   // Define the error callback
19419   function errorCB(err) {
19420     console.log( 'The following error occurred: ' +  err.name);
19421   }
19422
19423   function contactsFoundCB(contacts) {
19424     // The contact has been successfully found
19425     // Let's try to change the first name
19426     contacts[0].name.firstName = 'Jeffrey Ross';
19427     try {
19428       addressbook.update(contacts[0]);
19429       console.log('First contact was updated');
19430     } catch (err) {
19431       console.log( 'The following error occurred while updating: ' +  err.name);
19432     }
19433   }
19434
19435   // Get default address book.
19436   addressbook = tizen.contact.getDefaultAddressBook();
19437
19438   // Add a new contact
19439   var contact = new tizen.Contact(
19440                      {name: new tizen.ContactName({firstName:'Jeffrey',
19441                              lastName:'Hyman',
19442                              nicknames:['joey ramone']}),
19443                       emails:[new tizen.ContactEmailAddress('user@domain.com')],
19444                       phoneNumbers:[new tizen.ContactPhoneNumber('123456789')]});
19445
19446   try {
19447     addressbook.add(contact);
19448   } catch (err) {
19449     console.log( 'The following error occurred while adding: ' +  err.name);
19450   }
19451
19452   // The contact has been successfully added
19453   // Checks whether the added contact can be retrieved from the address book or not.
19454   // If the address book is empty, only the item added
19455   // through em>saveContact /em>should be returned
19456   var filter = new tizen.AttributeFiilter('name.firstName', 'CONTAINS', 'Jeffrey');
19457   try {
19458     addressbook.find(contactsFoundCB, errorCB, filter);
19459   } catch (err) {
19460     console.log( 'The following error occurred while finding: ' +  err.name);
19461   }
19462  </Code>
19463         </descriptive>
19464         <Type name="AddressBook">
19465           <descriptive>
19466               <description><p>
19467  AddressBook The default AddressBook object.
19468               </p></description>
19469           </descriptive>
19470         </Type>
19471         <ArgumentList/>
19472         <Raises>
19473           <RaiseException name="WebAPIException">
19474             <descriptive>
19475                 <description><p>
19476  with error type SecurityError, if the application does not have the privilege to call this method.
19477                 </p></description>
19478                 <description><p>
19479  with error type NotSupportedError, if the feature
19480 is not supported.
19481                 </p></description>
19482                 <description><p>
19483  with error type UnknownError in any other error case.
19484                 </p></description>
19485             </descriptive>
19486           </RaiseException>
19487         </Raises>
19488       </Operation>
19489       <Operation name="getAddressBook" id="::Contact::ContactManager::getAddressBook">
19490         <webidl>    <ref>AddressBook</ref> getAddressBook(<ref>AddressBookId</ref> addressBookId) raises(<ref>WebAPIException</ref>);</webidl>
19491         <descriptive>
19492             <brief>
19493  Gets the address book with the specified identifier.
19494             </brief>
19495            <description>
19496             <p>
19497 If the operation completes successfully, it must return the
19498 address book with the specified identifier.
19499             </p>
19500            </description>
19501             <version>
19502  1.0
19503             </version>
19504             <privilegelevel>
19505  public
19506             </privilegelevel>
19507             <privilege>
19508  http://tizen.org/privilege/contact.read
19509             </privilege>
19510             <Code> var contactRef; // ContactRef supposed to be initialized
19511  try {
19512    // Retrieves the Contact corresponding to a given ContactRef.
19513    var addressBook = tizen.contact.getAddressBook(contactRef.addressBookId);
19514    var contact = addressBook.get(contactRef.contactId);
19515    console.log(&quot;Successfully resolved contact with id: &quot; + contactRef.contactId);
19516  } catch(err) {
19517    console.log(&quot;Error: &quot; + err.name);
19518  }
19519  </Code>
19520         </descriptive>
19521         <Type name="AddressBook">
19522           <descriptive>
19523               <description><p>
19524  AddressBook The matching AddressBook object.
19525               </p></description>
19526           </descriptive>
19527         </Type>
19528         <ArgumentList>
19529           <Argument name="addressBookId">
19530             <descriptive>
19531                 <description><p>
19532  The address book identifier.
19533                 </p></description>
19534             </descriptive>
19535             <Type name="AddressBookId"/>
19536           </Argument>
19537         </ArgumentList>
19538         <Raises>
19539           <RaiseException name="WebAPIException">
19540             <descriptive>
19541                 <description><p>
19542  with error type NotFoundError, if there is no address book
19543 with the given identifier.
19544                 </p></description>
19545                 <description><p>
19546  with error type TypeMismatchError, if any input parameter
19547 is not compatible with the expected type for that parameter.
19548                 </p></description>
19549                 <description><p>
19550  with error type InvalidValuesError, if any of the input
19551 parameters contain an invalid value.
19552                 </p></description>
19553                 <description><p>
19554  with error type SecurityError, if the application does not have the privilege to call this method.
19555                 </p></description>
19556                 <description><p>
19557  with error type NotSupportedError, if the feature
19558 is not supported.
19559                 </p></description>
19560                 <description><p>
19561  with error type UnknownError in any other error case.
19562                 </p></description>
19563             </descriptive>
19564           </RaiseException>
19565         </Raises>
19566       </Operation>
19567       <Operation name="get" id="::Contact::ContactManager::get">
19568         <webidl>    <ref>Person</ref> get(<ref>PersonId</ref> personId) raises(<ref>WebAPIException</ref>);</webidl>
19569         <descriptive>
19570             <brief>
19571  Gets the person with the specified identifier.
19572             </brief>
19573            <description>
19574             <p>
19575 If the operation completes successfully, it must return the
19576 person with the specified identifier.
19577             </p>
19578            </description>
19579             <version>
19580  2.0
19581             </version>
19582             <privilegelevel>
19583  public
19584             </privilegelevel>
19585             <privilege>
19586  http://tizen.org/privilege/contact.read
19587             </privilege>
19588             <Code> var contactRef; // ContactRef supposed to be initialized
19589  try {
19590    // Retrieves the Person corresponding to a Contact.
19591    var addressBook = tizen.contact.getAddressBook(contactRef.addressBookId);
19592    var contact = addressBook.get(contactRef.contactId);
19593    var person = tizen.contact.get(contact.personId);
19594    console.log(&quot;Successfully resolved person with id: &quot; + contact.personId);
19595  } catch(err) {
19596    console.log(&quot;Error: &quot; + err.name);
19597  }
19598  </Code>
19599         </descriptive>
19600         <Type name="Person">
19601           <descriptive>
19602               <description><p>
19603  Person The matching Person object.
19604               </p></description>
19605           </descriptive>
19606         </Type>
19607         <ArgumentList>
19608           <Argument name="personId">
19609             <descriptive>
19610                 <description><p>
19611  The Person identifier.
19612                 </p></description>
19613             </descriptive>
19614             <Type name="PersonId"/>
19615           </Argument>
19616         </ArgumentList>
19617         <Raises>
19618           <RaiseException name="WebAPIException">
19619             <descriptive>
19620                 <description><p>
19621  with error type NotFoundError, if there is no person
19622 with the given identifier.
19623                 </p></description>
19624                 <description><p>
19625  with error type TypeMismatchError, if any input parameter
19626 is not compatible with the expected type for that parameter.
19627                 </p></description>
19628                 <description><p>
19629  with error type InvalidValuesError, if any of the input
19630 parameters contain an invalid value.
19631                 </p></description>
19632                 <description><p>
19633  with error type SecurityError, if the application does not have the privilege to call this method.
19634                 </p></description>
19635                 <description><p>
19636  with error type NotSupportedError, if the feature
19637 is not supported.
19638                 </p></description>
19639                 <description><p>
19640  with error type UnknownError in any other error case.
19641                 </p></description>
19642             </descriptive>
19643           </RaiseException>
19644         </Raises>
19645       </Operation>
19646       <Operation name="update" id="::Contact::ContactManager::update">
19647         <webidl>    void update(<ref>Person</ref> person) raises(<ref>WebAPIException</ref>);</webidl>
19648         <descriptive>
19649             <brief>
19650  Updates a person in the address book synchronously.
19651             </brief>
19652             <version>
19653  2.0
19654             </version>
19655             <privilegelevel>
19656  public
19657             </privilegelevel>
19658             <privilege>
19659  http://tizen.org/privilege/contact.write
19660             </privilege>
19661             <Code>  // Define the error callback
19662   function errorCB(err) {
19663     console.log( 'The following error occurred: ' +  err.name);
19664   }
19665
19666   function personsFoundCB(persons) {
19667     // The person has been successfully found
19668     // Let's try to change the isFavorite attribute
19669     persons[0].isFavorite = true;
19670     try {
19671       tizen.contact.update(persons[0]);
19672       console.log('First person was updated');
19673     } catch (err) {
19674       console.log( 'The following error occurred while updating: ' +  err.name);
19675     }
19676   }
19677
19678   try {
19679     tizen.contact.find(personsFoundCB, errorCB);
19680   } catch (err) {
19681     console.log( 'The following error occurred while finding: ' +  err.name);
19682   }
19683  </Code>
19684         </descriptive>
19685         <Type type="void"/>
19686         <ArgumentList>
19687           <Argument name="person">
19688             <descriptive>
19689                 <description><p>
19690  The person object to be updated.
19691                 </p></description>
19692             </descriptive>
19693             <Type name="Person"/>
19694           </Argument>
19695         </ArgumentList>
19696         <Raises>
19697           <RaiseException name="WebAPIException">
19698             <descriptive>
19699                 <description><p>
19700  with error type NotFoundError, if the identifier does not match.
19701                 </p></description>
19702                 <description><p>
19703  with error type TypeMismatchError, if any input parameter
19704 is not compatible with the expected type for that parameter.
19705                 </p></description>
19706                 <description><p>
19707  with error type InvalidValuesError, if any input parameter
19708 contains invalid values.
19709                 </p></description>
19710                 <description><p>
19711  with error type SecurityError, if the application does not have the privilege to call this method.
19712                 </p></description>
19713                 <description><p>
19714  with error type NotSupportedError, if the feature
19715 is not supported.
19716                 </p></description>
19717                 <description><p>
19718  with error type UnknownError, if the person could not be updated
19719 to an unknown error.
19720                 </p></description>
19721             </descriptive>
19722           </RaiseException>
19723         </Raises>
19724       </Operation>
19725       <Operation name="updateBatch" id="::Contact::ContactManager::updateBatch">
19726         <webidl>    void updateBatch(<ref>Person</ref>[] persons,
19727                      optional <ref>SuccessCallback</ref>? successCallback,
19728                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
19729         <descriptive>
19730             <brief>
19731  Updates several existing persons in the contact DB asynchronously.
19732             </brief>
19733            <description>
19734             <p>
19735 The <em>errorCallback()</em> is launched with these error types:
19736             </p>
19737             <ul>
19738               <li>
19739 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>
19740               <li>
19741 InvalidValuesError - If any of the input parameters contain an invalid value.              </li>
19742               <li>
19743 UnknownError - If any other error occurs, while trying to add the persons.              </li>
19744             </ul>
19745             <p>
19746 If the details of any persons cannot be updated, the error callback function that was passed in the invocation will be called.
19747             </p>
19748            </description>
19749             <version>
19750  2.0
19751             </version>
19752             <privilegelevel>
19753  public
19754             </privilegelevel>
19755             <privilege>
19756  http://tizen.org/privilege/contact.write
19757             </privilege>
19758             <Code>  // Define the error callback for all the asynchronous calls
19759   function errorCB(err) {
19760     console.log('The following error occurred: ' +  err.name);
19761   }
19762
19763   function personsUpdatedCB() {
19764     console.log('Contacts were updated');
19765   }
19766
19767   function personsFoundCB(persons) {
19768     // The person has been successfully found
19769     for(var i = 0; i &#60; persons.length; i++) {
19770       persons[i].isFavorite = true;
19771     }
19772     try {
19773       tizen.contact.updateBatch(persons, personsUpdatedCB, errorCB);
19774     } catch (err) {
19775       console.log('The following error occurred while updating: ' +  err.name);
19776     }
19777   }
19778
19779   try {
19780     tizen.contact.find(personsFoundCB, errorCB);
19781   } catch (err) {
19782     console.log('The following error occurred while finding: ' +  err.name);
19783   }
19784  </Code>
19785         </descriptive>
19786         <Type type="void"/>
19787         <ArgumentList>
19788           <Argument name="persons">
19789             <descriptive>
19790                 <description><p>
19791  A list of Person objects to be saved in the terminal storage.
19792                 </p></description>
19793             </descriptive>
19794             <Type type="array">
19795               <Type name="Person"/>
19796             </Type>
19797           </Argument>
19798           <Argument optional="optional" name="successCallback">
19799             <descriptive>
19800                 <description><p>
19801  The method to call when the invocation ends successfully.
19802                 </p></description>
19803             </descriptive>
19804             <Type name="SuccessCallback" nullable="nullable"/>
19805           </Argument>
19806           <Argument optional="optional" name="errorCallback">
19807             <descriptive>
19808                 <description><p>
19809  The method to call when the request to update the details of a person fail.
19810                 </p></description>
19811             </descriptive>
19812             <Type name="ErrorCallback" nullable="nullable"/>
19813           </Argument>
19814         </ArgumentList>
19815         <Raises>
19816           <RaiseException name="WebAPIException">
19817             <descriptive>
19818                 <description><p>
19819  with error type TypeMismatchError, if the input parameter
19820 is not compatible with the expected type for that parameter.
19821                 </p></description>
19822                 <description><p>
19823  with error type SecurityError, if the application does not have the privilege to call this method.
19824                 </p></description>
19825                 <description><p>
19826  with error type NotSupportedError, if this feature is not supported.
19827                 </p></description>
19828             </descriptive>
19829           </RaiseException>
19830         </Raises>
19831       </Operation>
19832       <Operation name="remove" id="::Contact::ContactManager::remove">
19833         <webidl>    void remove(<ref>PersonId</ref> personId) raises(<ref>WebAPIException</ref>);</webidl>
19834         <descriptive>
19835             <brief>
19836  Removes a person from the contact DB synchronously.
19837             </brief>
19838            <description>
19839             <p>
19840 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.
19841             </p>
19842            </description>
19843             <version>
19844  2.0
19845             </version>
19846             <privilegelevel>
19847  public
19848             </privilegelevel>
19849             <privilege>
19850  http://tizen.org/privilege/contact.write
19851             </privilege>
19852             <Code>  // Define the error callback
19853   function errorCB(err) {
19854     console.log('The following error occurred: ' +  err.name);
19855   }
19856
19857   function personsFoundCB(persons) {
19858     // The person has been successfully found
19859     if(persons.length > 0) {
19860       try {
19861         tizen.contact.remove(persons[0].id);
19862         console.log('First person was removed');
19863       } catch (err) {
19864         console.log('The following error occurred while removing: ' +  err.name);
19865       }
19866     } else {
19867       console.log( 'No persons.');
19868     }
19869   }
19870
19871   try {
19872     tizen.contact.find(personsFoundCB, errorCB);
19873   } catch (err) {
19874     console.log( 'The following error occurred while finding: ' +  err.name);
19875   }
19876  </Code>
19877         </descriptive>
19878         <Type type="void"/>
19879         <ArgumentList>
19880           <Argument name="personId">
19881             <descriptive>
19882                 <description><p>
19883  An identifier (ID attribute) of the Person object to delete.
19884                 </p></description>
19885             </descriptive>
19886             <Type name="PersonId"/>
19887           </Argument>
19888         </ArgumentList>
19889         <Raises>
19890           <RaiseException name="WebAPIException">
19891             <descriptive>
19892                 <description><p>
19893  with error type NotFoundError, if the identifier does not match
19894 any persons.
19895                 </p></description>
19896                 <description><p>
19897  with error type TypeMismatchError, if any input parameter
19898 is not compatible with the expected type for that parameter.
19899                 </p></description>
19900                 <description><p>
19901  with error type InvalidValuesError, if any input parameter
19902 contains invalid values.
19903                 </p></description>
19904                 <description><p>
19905  with error type SecurityError, if the application does not have the privilege to call this method.
19906                 </p></description>
19907                 <description><p>
19908  with error type NotSupportedError, if the feature
19909 is not supported.
19910                 </p></description>
19911                 <description><p>
19912  with error type UnknownError, if the person could not be removed
19913 to an unknown error.
19914                 </p></description>
19915             </descriptive>
19916           </RaiseException>
19917         </Raises>
19918       </Operation>
19919       <Operation name="removeBatch" id="::Contact::ContactManager::removeBatch">
19920         <webidl>    void removeBatch(<ref>PersonId</ref>[] personIds,
19921                      optional <ref>SuccessCallback</ref>? successCallback,
19922                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
19923         <descriptive>
19924             <brief>
19925  Removes persons from contact DB asynchronously.
19926             </brief>
19927            <description>
19928             <p>
19929 Removes the persons that correspond to the specified identifiers as well as the contacts related to them.
19930             </p>
19931             <p>
19932 The <em>errorCallback() </em>is launched with these error types:
19933             </p>
19934             <ul>
19935               <li>
19936 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>
19937               <li>
19938 InvalidValuesError - If any of the input parameters contain an invalid value.              </li>
19939               <li>
19940 UnknownError - If any other error occurs while trying to remove the persons.              </li>
19941             </ul>
19942            </description>
19943             <version>
19944  2.0
19945             </version>
19946             <privilegelevel>
19947  public
19948             </privilegelevel>
19949             <privilege>
19950  http://tizen.org/privilege/contact.write
19951             </privilege>
19952             <Code>  // Define the error callback
19953   function errorCB(err) {
19954     console.log( 'The following error occurred: ' +  err.name);
19955   }
19956
19957   function personsRemovedCB() {
19958     console.log('Contacts were removed');
19959   }
19960
19961   function personsFoundCB(persons) {
19962     // The person has been successfully found
19963     if(persons.length > 2) {
19964       try {
19965         tizen.contact.removeBatch([persons[0].id, persons[1].id], personsRemovedCB, errorCB);
19966       } catch (err) {
19967         console.log( 'The following error occurred while removing: ' +  err.name);
19968       }
19969     } else {
19970       console.log( 'Not enough persons.');
19971     }
19972   }
19973
19974   try {
19975     tizen.contact.find(personsFoundCB, errorCB);
19976   } catch (err) {
19977     console.log( 'The following error occurred while finding: ' +  err.name);
19978   }
19979  </Code>
19980         </descriptive>
19981         <Type type="void"/>
19982         <ArgumentList>
19983           <Argument name="personIds">
19984             <descriptive>
19985                 <description><p>
19986  A list of identifiers (id attribute) for the Person objects to delete.
19987                 </p></description>
19988             </descriptive>
19989             <Type type="array">
19990               <Type name="PersonId"/>
19991             </Type>
19992           </Argument>
19993           <Argument optional="optional" name="successCallback">
19994             <descriptive>
19995                 <description><p>
19996  The method to call when the invocation ends successfully.
19997                 </p></description>
19998             </descriptive>
19999             <Type name="SuccessCallback" nullable="nullable"/>
20000           </Argument>
20001           <Argument optional="optional" name="errorCallback">
20002             <descriptive>
20003                 <description><p>
20004  The method to call when the request to delete persons fails.
20005                 </p></description>
20006             </descriptive>
20007             <Type name="ErrorCallback" nullable="nullable"/>
20008           </Argument>
20009         </ArgumentList>
20010         <Raises>
20011           <RaiseException name="WebAPIException">
20012             <descriptive>
20013                 <description><p>
20014  with error type TypeMismatchError, if any input parameter
20015 is not compatible with the expected type for that parameter.
20016                 </p></description>
20017                 <description><p>
20018  with error type SecurityError, if the application does not have the privilege to call this method.
20019                 </p></description>
20020                 <description><p>
20021  with error type NotSupportedError, if the feature
20022 is not supported.
20023                 </p></description>
20024             </descriptive>
20025           </RaiseException>
20026         </Raises>
20027       </Operation>
20028       <Operation name="find" id="::Contact::ContactManager::find">
20029         <webidl>    void find(<ref>PersonArraySuccessCallback</ref> successCallback,
20030               optional <ref>ErrorCallback</ref>? errorCallback,
20031               optional <ref>AbstractFilter</ref>? filter,
20032               optional <ref>SortMode</ref>? sortMode) raises(<ref>WebAPIException</ref>);</webidl>
20033         <descriptive>
20034             <brief>
20035  Gets an array of all <em>Person </em>objects from the contact DB or the ones that match the optionally supplied filter.
20036             </brief>
20037            <description>
20038             <p>
20039 If the filter is passed and contains valid values, only those values in the
20040 address book that match the filter criteria as specified in the AbstractFilter
20041 interface will be returned in the successCallback. If no filter is passed, the filter
20042 contains any invalid values, the filter is <var>null </var> or undefined, then
20043 the implementation must return the full list of contact items
20044 in the successCallback. If no persons are available in the contact DB or no
20045 person matches the filter criteria, the successCallback will be invoked
20046 with an empty array.
20047             </p>
20048             <p>
20049 The <em>errorCallback() </em>is launched with these error types:
20050             </p>
20051             <ul>
20052               <li>
20053 InvalidValuesError - If any of the input parameters contain an invalid value.              </li>
20054               <li>
20055 UnknownError - If any other error occurs while trying to retrieve the persons.              </li>
20056             </ul>
20057            </description>
20058             <version>
20059  2.0
20060             </version>
20061             <privilegelevel>
20062  public
20063             </privilegelevel>
20064             <privilege>
20065  http://tizen.org/privilege/contact.read
20066             </privilege>
20067             <Code>  // Define the error callback.
20068   function errorCB(err) {
20069     console.log( 'The following error occurred: ' +  err.name);
20070   }
20071
20072   // Define the person search success callback.
20073   function personsFoundCB(persons) {
20074     console.log(persons.length + ' results found.');
20075   }
20076
20077   // Finds all the persons in the contact DB that have the word Ramone in their display name
20078   var filter = new tizen.AttributeFilter('displayName', 'CONTAINS', 'Ramone');
20079
20080   // The persons returned by the find() query will be sorted in the ascending order of their display name.
20081   var sortingMode =  new tizen.SortMode('displayName', 'ASC');
20082   try {
20083     tizen.contact.find(personsFoundCB, errorCB,
20084                      filter, sortingMode);
20085   } catch (err) {
20086     console.log( 'The following error occurred while finding: ' +  err.name);
20087   }
20088  </Code>
20089         </descriptive>
20090         <Type type="void"/>
20091         <ArgumentList>
20092           <Argument name="successCallback">
20093             <descriptive>
20094                 <description><p>
20095  The method to call when the invocation ends successfully.
20096                 </p></description>
20097             </descriptive>
20098             <Type name="PersonArraySuccessCallback"/>
20099           </Argument>
20100           <Argument optional="optional" name="errorCallback">
20101             <descriptive>
20102                 <description><p>
20103  The method to call when an error occurs.
20104                 </p></description>
20105             </descriptive>
20106             <Type name="ErrorCallback" nullable="nullable"/>
20107           </Argument>
20108           <Argument optional="optional" name="filter">
20109             <descriptive>
20110                 <description><p>
20111  A filter to select which persons are returned.
20112                 </p></description>
20113             </descriptive>
20114             <Type name="AbstractFilter" nullable="nullable"/>
20115           </Argument>
20116           <Argument optional="optional" name="sortMode">
20117             <descriptive>
20118                 <description><p>
20119  A variable to determine the sort order in which the persons are returned.
20120                 </p></description>
20121             </descriptive>
20122             <Type name="SortMode" nullable="nullable"/>
20123           </Argument>
20124         </ArgumentList>
20125         <Raises>
20126           <RaiseException name="WebAPIException">
20127             <descriptive>
20128                 <description><p>
20129  with error type TypeMismatchError, if any input parameter
20130 is not compatible with the expected type for that parameter.
20131                 </p></description>
20132                 <description><p>
20133  with error type SecurityError, if the application does not have the privilege to call this method.
20134                 </p></description>
20135                 <description><p>
20136  with error type NotSupportedError, if the feature
20137 is not supported.
20138                 </p></description>
20139             </descriptive>
20140           </RaiseException>
20141         </Raises>
20142       </Operation>
20143       <Operation name="addChangeListener" id="::Contact::ContactManager::addChangeListener">
20144         <webidl>    long addChangeListener(<ref>PersonsChangeCallback</ref> successCallback) raises(<ref>WebAPIException</ref>);</webidl>
20145         <descriptive>
20146             <brief>
20147  Subscribes to receive notifications about persons' changes.
20148             </brief>
20149            <description>
20150             <p>
20151 When executed, the implementation must immediately return a subscription identifier that identifies
20152 the watch operation. After returning the identifier, the watch operation is started
20153 asynchronously.
20154             </p>
20155            </description>
20156             <version>
20157  2.0
20158             </version>
20159             <privilegelevel>
20160  public
20161             </privilegelevel>
20162             <privilege>
20163  http://tizen.org/privilege/contact.read
20164             </privilege>
20165             <Code> var watcherId = 0; // watcher identifier
20166
20167  var watcher = {
20168    onpersonsadded: function(persons) {
20169      console.log(persons.length + ' persons were added');
20170    },
20171    onpersonsupdated: function(persons) {
20172      console.log(persons.length + ' persons were updated');
20173    },
20174    onpersonsremoved: function(ids) {
20175      console.log(ids.length + ' persons were deleted');
20176    }
20177  };
20178
20179  // registers to be notified when the persons' changes
20180  watcherId = tizen.contact.addChangeListener(watcher);
20181  </Code>
20182         </descriptive>
20183         <Type type="long">
20184           <descriptive>
20185               <description><p>
20186  long Identifier used to clear the watch subscription.
20187               </p></description>
20188           </descriptive>
20189         </Type>
20190         <ArgumentList>
20191           <Argument name="successCallback">
20192             <descriptive>
20193                 <description><p>
20194  Contains the methods for different types of change notifications.
20195                 </p></description>
20196             </descriptive>
20197             <Type name="PersonsChangeCallback"/>
20198           </Argument>
20199         </ArgumentList>
20200         <Raises>
20201           <RaiseException name="WebAPIException">
20202             <descriptive>
20203                 <description><p>
20204  with error type TypeMismatchError, if any input parameter
20205 is not compatible with the expected type for that parameter.
20206                 </p></description>
20207                 <description><p>
20208  with error type InvalidValuesError, if any of the input parameters
20209 contain an invalid value.
20210                 </p></description>
20211                 <description><p>
20212  with error type SecurityError, if the application does not have the privilege to call this method.
20213                 </p></description>
20214                 <description><p>
20215  with error type NotSupportedError, if the feature
20216 is not supported.
20217                 </p></description>
20218                 <description><p>
20219  with error type UnknownError in any other case.
20220                 </p></description>
20221             </descriptive>
20222           </RaiseException>
20223         </Raises>
20224       </Operation>
20225       <Operation name="removeChangeListener" id="::Contact::ContactManager::removeChangeListener">
20226         <webidl>    void removeChangeListener(long watchId) raises(<ref>WebAPIException</ref>);</webidl>
20227         <descriptive>
20228             <brief>
20229  Unsubscribes a persons' changes watch operation.
20230             </brief>
20231            <description>
20232             <p>
20233 If the watchId argument is valid and corresponds to a subscription already in
20234 place, the watch process must immediately stop and no further callbacks MUST be
20235 invoked. If the watchId argument is not valid or does not correspond to a
20236 valid subscription, the method should return without any further action.
20237             </p>
20238            </description>
20239             <version>
20240  2.0
20241             </version>
20242             <privilegelevel>
20243  public
20244             </privilegelevel>
20245             <privilege>
20246  http://tizen.org/privilege/contact.read
20247             </privilege>
20248             <Code> var watcherId = 0; // watcher identifier
20249
20250  // Receives persons' changes
20251  var watcher = {
20252    onpersonsadded: function(persons) {
20253      console.log(persons.length + ' persons were added');
20254    },
20255    onpersonsupdated: function(persons) {
20256      console.log(persons.length + ' persons were updated');
20257    },
20258    onpersonsremoved: function(ids) {
20259      console.log(ids.length + ' persons were removed');
20260    }
20261  };
20262
20263  // Cancel the watch operation
20264  function cancelWatch() {
20265     tizen.contact.removeChangeListener(watcherId);
20266  }
20267
20268  // registers to be notified when the persons' changes
20269  watcherId = tizen.contact.addChangeListener(watcher);
20270  </Code>
20271         </descriptive>
20272         <Type type="void"/>
20273         <ArgumentList>
20274           <Argument name="watchId">
20275             <descriptive>
20276                 <description><p>
20277  A subscription Identifier.
20278                 </p></description>
20279             </descriptive>
20280             <Type type="long"/>
20281           </Argument>
20282         </ArgumentList>
20283         <Raises>
20284           <RaiseException name="WebAPIException">
20285             <descriptive>
20286                 <description><p>
20287  with error type TypeMismatchError, if any input parameter
20288 is not compatible with the expected type for that parameter.
20289                 </p></description>
20290                 <description><p>
20291  with error type InvalidValuesError, if any of the input
20292 parameters contain an invalid value.
20293                 </p></description>
20294                 <description><p>
20295  with error type NotFoundError, if there is no listener
20296 with the given identifier.
20297                 </p></description>
20298                 <description><p>
20299  with error type SecurityError, if the application does not have the privilege to call this method.
20300                 </p></description>
20301                 <description><p>
20302  with error type NotSupportedError, if the feature
20303 is not supported.
20304                 </p></description>
20305                 <description><p>
20306  with error type UnknownError in any other error case.
20307                 </p></description>
20308             </descriptive>
20309           </RaiseException>
20310         </Raises>
20311       </Operation>
20312     </Interface>
20313     <Interface name="AddressBook" id="::Contact::AddressBook">
20314       <webidl>  [NoInterfaceObject] interface AddressBook {
20315
20316     readonly attribute <ref>AddressBookId</ref>? id;
20317
20318     readonly attribute DOMString name;
20319
20320     readonly attribute boolean readOnly;
20321
20322     <ref>Contact</ref> get(<ref>ContactId</ref> id) raises(<ref>WebAPIException</ref>);
20323
20324     void add(<ref>Contact</ref> contact) raises(<ref>WebAPIException</ref>);
20325
20326     void addBatch(<ref>Contact</ref>[] contacts,
20327                   optional <ref>ContactArraySuccessCallback</ref>? successCallback,
20328                   optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
20329
20330     void update(<ref>Contact</ref> contact) raises(<ref>WebAPIException</ref>);
20331
20332     void updateBatch(<ref>Contact</ref>[] contacts,
20333                      optional <ref>SuccessCallback</ref>? successCallback,
20334                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
20335
20336     void remove(<ref>ContactId</ref> id) raises(<ref>WebAPIException</ref>);
20337
20338     void removeBatch(<ref>ContactId</ref>[] ids,
20339                      optional <ref>SuccessCallback</ref>? successCallback,
20340                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
20341
20342     void find(<ref>ContactArraySuccessCallback</ref> successCallback,
20343               optional <ref>ErrorCallback</ref>? errorCallback,
20344               optional <ref>AbstractFilter</ref>? filter,
20345               optional <ref>SortMode</ref>? sortMode) raises(<ref>WebAPIException</ref>);
20346
20347     long addChangeListener(<ref>AddressBookChangeCallback</ref> successCallback,
20348                            optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
20349
20350     void removeChangeListener(long watchId) raises(<ref>WebAPIException</ref>);
20351
20352     <ref>ContactGroup</ref> getGroup(<ref>ContactGroupId</ref> groupId) raises(<ref>WebAPIException</ref>);
20353
20354     void addGroup(<ref>ContactGroup</ref> group) raises(<ref>WebAPIException</ref>);
20355
20356     void updateGroup(<ref>ContactGroup</ref> group) raises(<ref>WebAPIException</ref>);
20357
20358     void removeGroup(<ref>ContactGroupId</ref> groupId) raises(<ref>WebAPIException</ref>);
20359
20360     <ref>ContactGroup</ref>[] getGroups() raises(<ref>WebAPIException</ref>);
20361   };</webidl>
20362       <descriptive>
20363           <brief>
20364  This interface provides methods to manage an address book.
20365           </brief>
20366          <description>
20367           <p>
20368 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:
20369           </p>
20370           <ul>
20371             <li>
20372  <em>get()</em> - To get contacts that have a specific ID            </li>
20373             <li>
20374  <em>find()</em> - To find contacts using filters            </li>
20375             <li>
20376  <em>add() </em>or <em>addBatch()</em> - To add contacts to a specific address book            </li>
20377             <li>
20378  <em>update() </em>or <em>updateBatch()</em> - To update contacts in a specific address book            </li>
20379             <li>
20380  <em>remove() </em>or <em>removeBatch() </em> - To remove existing contacts            </li>
20381             <li>
20382  <em>addChangeListener() </em>or <em>removeChangeListener() </em> - To watch for address book changes            </li>
20383           </ul>
20384           <p>
20385 This interface also offers methods to manipulate groups within the address book, such as:
20386           </p>
20387           <ul>
20388             <li>
20389  <em>getGroup()</em> - To get a group having specific ID            </li>
20390             <li>
20391  <em>getGroups()</em> - To get groups in a specific address book            </li>
20392             <li>
20393  <em>addGroup() </em> - To add groups to a specific address book             </li>
20394             <li>
20395  <em>updateGroup() </em> - To update groups in a specific address book            </li>
20396             <li>
20397  <em>removeGroup() </em> - To remove existing groups            </li>
20398           </ul>
20399          </description>
20400           <version>
20401  1.0
20402           </version>
20403       </descriptive>
20404       <ExtendedAttributeList>
20405         <ExtendedAttribute name="NoInterfaceObject">
20406           <webidl>NoInterfaceObject</webidl>
20407         </ExtendedAttribute>
20408       </ExtendedAttributeList>
20409       <Attribute readonly="readonly" name="id" id="::Contact::AddressBook::id">
20410         <webidl>    readonly attribute <ref>AddressBookId</ref>? id;</webidl>
20411         <descriptive>
20412             <brief>
20413  An attribute to uniquely identify the address book.
20414             </brief>
20415            <description>
20416             <p>
20417 The value of this attribute shall be <var>null </var> if the address book
20418 is the unified address book.
20419             </p>
20420            </description>
20421             <version>
20422  1.0
20423             </version>
20424         </descriptive>
20425         <Type name="AddressBookId" nullable="nullable"/>
20426       </Attribute>
20427       <Attribute readonly="readonly" name="name" id="::Contact::AddressBook::name">
20428         <webidl>    readonly attribute DOMString name;</webidl>
20429         <descriptive>
20430             <brief>
20431  The address book descriptive name.
20432             </brief>
20433             <version>
20434  1.0
20435             </version>
20436         </descriptive>
20437         <Type type="DOMString"/>
20438       </Attribute>
20439       <Attribute readonly="readonly" name="readOnly" id="::Contact::AddressBook::readOnly">
20440         <webidl>    readonly attribute boolean readOnly;</webidl>
20441         <descriptive>
20442             <brief>
20443  An attribute to indicate if the address book is read-only.
20444             </brief>
20445            <description>
20446             <p>
20447 Some on line address books cannot be edited and will have this
20448 flag set to <var>true</var>.
20449             </p>
20450            </description>
20451             <version>
20452  1.0
20453             </version>
20454         </descriptive>
20455         <Type type="boolean"/>
20456       </Attribute>
20457       <Operation name="get" id="::Contact::AddressBook::get">
20458         <webidl>    <ref>Contact</ref> get(<ref>ContactId</ref> id) raises(<ref>WebAPIException</ref>);</webidl>
20459         <descriptive>
20460             <brief>
20461  Gets the contact with the specified identifier.
20462             </brief>
20463            <description>
20464             <p>
20465 If the operation completes successfully, it must return the
20466 contact with the specified identifier.
20467             </p>
20468            </description>
20469             <version>
20470  1.0
20471             </version>
20472             <privilegelevel>
20473  public
20474             </privilegelevel>
20475             <privilege>
20476  http://tizen.org/privilege/contact.read
20477             </privilege>
20478             <Code> var contactRef; // ContactRef supposed to be initialized
20479  try {
20480    // Retrieves the Contact corresponding to a given ContactRef.
20481    var addressBook = tizen.contact.getAddressBook(contactRef.addressBookId);
20482    var contact = addressBook.get(contactRef.contactId);
20483    console.log(&quot;Successfully resolved contact with id: &quot; + contactRef.contactId);
20484  } catch(err) {
20485    console.log(&quot;Error: &quot; + err.name);
20486  }
20487  </Code>
20488         </descriptive>
20489         <Type name="Contact">
20490           <descriptive>
20491               <description><p>
20492  Contact The matching Contact object.
20493               </p></description>
20494           </descriptive>
20495         </Type>
20496         <ArgumentList>
20497           <Argument name="id">
20498             <descriptive>
20499                 <description><p>
20500  A contact identifier.
20501                 </p></description>
20502             </descriptive>
20503             <Type name="ContactId"/>
20504           </Argument>
20505         </ArgumentList>
20506         <Raises>
20507           <RaiseException name="WebAPIException">
20508             <descriptive>
20509                 <description><p>
20510  with error type NotFoundError, if there is no contact
20511 with the given identifier.
20512                 </p></description>
20513                 <description><p>
20514  with error type TypeMismatchError, if any input parameter
20515 is not compatible with the expected type for that parameter.
20516                 </p></description>
20517                 <description><p>
20518  with error type InvalidValuesError, if any of the input
20519 parameters contain an invalid value.
20520                 </p></description>
20521                 <description><p>
20522  with error type SecurityError, if the application does not have the privilege to call this method.
20523                 </p></description>
20524                 <description><p>
20525  with error type NotSupportedError, if the feature
20526 is not supported.
20527                 </p></description>
20528                 <description><p>
20529  with error type UnknownError in any other error case.
20530                 </p></description>
20531             </descriptive>
20532           </RaiseException>
20533         </Raises>
20534       </Operation>
20535       <Operation name="add" id="::Contact::AddressBook::add">
20536         <webidl>    void add(<ref>Contact</ref> contact) raises(<ref>WebAPIException</ref>);</webidl>
20537         <descriptive>
20538             <brief>
20539  Adds a contact to the address book synchronously.
20540             </brief>
20541            <description>
20542             <p>
20543 If the contact is successfully inserted in the addressbook, the Contact object
20544 will have its identifier (id attribute) set when the function returns.
20545 This operation is done successfully, new person object is also generated automatically.
20546             </p>
20547             <p>
20548 If you wish to update an
20549 existing contact, call the update() method instead. If you wish to add a copy
20550 of an existing Contact object, call Contact.clone() method first and pass the
20551 clone to the add() method.
20552             </p>
20553             <p>
20554 The contact shall be added to default address book if the address book
20555 is the unified address book.
20556             </p>
20557            </description>
20558             <version>
20559  1.0
20560             </version>
20561             <privilegelevel>
20562  public
20563             </privilegelevel>
20564             <privilege>
20565  http://tizen.org/privilege/contact.write
20566             </privilege>
20567             <Code>  var addressbook;
20568
20569   // Get default address book
20570   addressbook = tizen.contact.getDefaultAddressBook();
20571
20572   try {
20573     var contact = new tizen.Contact({name: new tizen.ContactName({firstName:'Jeffrey',
20574                                           lastName:'Hyman',
20575                                           nicknames:['joey ramone']}),
20576                                     emails:[new tizen.ContactEmailAddress('user@domain.com')],
20577                                     phoneNumbers:[new tizen.ContactPhoneNumber('123456789')]});
20578     addressbook.add(contact);
20579     console.log('Contact added with id ' + contact.id);
20580   } catch (err) {
20581     console.log( 'The following error occurred while adding: ' +  err.name);
20582   }
20583  </Code>
20584         </descriptive>
20585         <Type type="void"/>
20586         <ArgumentList>
20587           <Argument name="contact">
20588             <descriptive>
20589                 <description><p>
20590  A contact to be added.
20591                 </p></description>
20592             </descriptive>
20593             <Type name="Contact"/>
20594           </Argument>
20595         </ArgumentList>
20596         <Raises>
20597           <RaiseException name="WebAPIException">
20598             <descriptive>
20599                 <description><p>
20600  with error type TypeMismatchError, if any input parameter
20601 is not compatible with the expected type for that parameter.
20602                 </p></description>
20603                 <description><p>
20604  with error type InvalidValuesError, if any input parameter
20605 contains invalid values.
20606                 </p></description>
20607                 <description><p>
20608  with error type SecurityError, if the application does not have the privilege to call this method.
20609                 </p></description>
20610                 <description><p>
20611  with error type NotSupportedError, if the feature
20612 is not supported.
20613                 </p></description>
20614                 <description><p>
20615  with error type UnknownError, if any other error occurs while trying to insert the contact.
20616                 </p></description>
20617             </descriptive>
20618           </RaiseException>
20619         </Raises>
20620       </Operation>
20621       <Operation name="addBatch" id="::Contact::AddressBook::addBatch">
20622         <webidl>    void addBatch(<ref>Contact</ref>[] contacts,
20623                   optional <ref>ContactArraySuccessCallback</ref>? successCallback,
20624                   optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
20625         <descriptive>
20626             <brief>
20627  Adds several contacts to the address book asynchronously.
20628             </brief>
20629            <description>
20630             <p>
20631 If all the contacts are successfully added to the address book,
20632 the success callback will be invoked, passing the list of Contact objects
20633 that were added, with their identifier set (id attribute).
20634             </p>
20635             <p>
20636 The <em>errorCallback()</em> is launched with these error types:
20637             </p>
20638             <ul>
20639               <li>
20640 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>
20641               <li>
20642 UnknownError - If any other error occurs, while trying to add the contacts.              </li>
20643             </ul>
20644             <p>
20645 If you wish to update an
20646 existing contact, call the update() method instead. If you wish to add a copy
20647 of an existing Contact object, call Contact.clone() method first and pass the
20648 clone to the add() method.
20649             </p>
20650             <p>
20651 If any of the contacts cannot be added, the error callback
20652 function that was passed in the invocation will be called.
20653             </p>
20654             <p>
20655 The contacts shall be added to local phone address book if the address book
20656 is the default address book.
20657             </p>
20658            </description>
20659             <version>
20660  1.0
20661             </version>
20662             <privilegelevel>
20663  public
20664             </privilegelevel>
20665             <privilege>
20666  http://tizen.org/privilege/contact.write
20667             </privilege>
20668             <Code>  var addressbook;
20669
20670   // Define the error callback
20671   function errorCB(err) {
20672     console.log( 'The following error occurred: ' +  err.name);
20673   }
20674
20675   // Define the add contact success callback
20676   function contactsAddedCB(contacts) {
20677     console.log( contacts.length + ' contact(s) were successfully added to an Address Book' );
20678   };
20679
20680   // Get default address book
20681   addressbook = tizen.contact.getDefaultAddressBook();
20682
20683   var c1 = new tizen.Contact({name: new tizen.ContactName({firstName:'Jeffrey',
20684                              lastName:'Hyman',
20685                              nicknames:['joey ramone']}),
20686                              emails:[new tizen.ContactEmailAddress('user1@domain.com')],
20687                              phoneNumbers:[new tizen.ContactPhoneNumber('123456789')]});
20688
20689   var c2 = new tizen.Contact({name: new tizen.ContactName({firstName:'Elton',
20690                              lastName:'John',
20691                              nicknames:['El']}),
20692                              emails:[new tizen.ContactEmailAddress('user2@domain.com')],
20693                              phoneNumbers:[new tizen.ContactPhoneNumber('987654321')]});
20694
20695   try {
20696     addressbook.addBatch([c1, c2], contactsAddedCB, errorCB);
20697   } catch (err) {
20698     console.log( 'The following error occurred while adding: ' +  err.name);
20699   }
20700  </Code>
20701         </descriptive>
20702         <Type type="void"/>
20703         <ArgumentList>
20704           <Argument name="contacts">
20705             <descriptive>
20706                 <description><p>
20707  A list of contacts to add.
20708                 </p></description>
20709             </descriptive>
20710             <Type type="array">
20711               <Type name="Contact"/>
20712             </Type>
20713           </Argument>
20714           <Argument optional="optional" name="successCallback">
20715             <descriptive>
20716                 <description><p>
20717  The method to call when the invocation ends successfully.
20718                 </p></description>
20719             </descriptive>
20720             <Type name="ContactArraySuccessCallback" nullable="nullable"/>
20721           </Argument>
20722           <Argument optional="optional" name="errorCallback">
20723             <descriptive>
20724                 <description><p>
20725  The method to call when the request fails.
20726                 </p></description>
20727             </descriptive>
20728             <Type name="ErrorCallback" nullable="nullable"/>
20729           </Argument>
20730         </ArgumentList>
20731         <Raises>
20732           <RaiseException name="WebAPIException">
20733             <descriptive>
20734                 <description><p>
20735  with error type TypeMismatchError, if the input parameter
20736 is not compatible with the expected type for that parameter.
20737                 </p></description>
20738                 <description><p>
20739  with error type SecurityError, if the application does not have the privilege to call this method.
20740                 </p></description>
20741                 <description><p>
20742  with error type NotSupportedError, if this feature is not supported.
20743                 </p></description>
20744             </descriptive>
20745           </RaiseException>
20746         </Raises>
20747       </Operation>
20748       <Operation name="update" id="::Contact::AddressBook::update">
20749         <webidl>    void update(<ref>Contact</ref> contact) raises(<ref>WebAPIException</ref>);</webidl>
20750         <descriptive>
20751             <brief>
20752  Updates a contact in the address book synchronously.
20753             </brief>
20754             <version>
20755  1.0
20756             </version>
20757             <privilegelevel>
20758  public
20759             </privilegelevel>
20760             <privilege>
20761  http://tizen.org/privilege/contact.write
20762             </privilege>
20763             <Code>  var addressbook;
20764
20765   // Define the error callback
20766   function errorCB(err) {
20767     console.log( 'The following error occurred: ' +  err.name);
20768   }
20769
20770   function contactsFoundCB(contacts) {
20771     // The contact has been successfully found
20772     // Let's try to change the first name
20773     contacts[0].name.firstName = 'Christopher';
20774     try {
20775       addressbook.update(contacts[0]);
20776       console.log('First contact was updated');
20777     } catch (err) {
20778       console.log( 'The following error occurred while updating: ' +  err.name);
20779     }
20780   }
20781
20782   // Get default address book.
20783   addressbook = tizen.contact.getDefaultAddressBook();
20784
20785   var filter = new tizen.AttributeFilter('name.firstName', 'CONTAINS', 'Chris');
20786   try {
20787     addressbook.find(contactsFoundCB, errorCB, filter);
20788   } catch (err) {
20789     console.log( 'The following error occurred while finding: ' +  err.name);
20790   }
20791  </Code>
20792         </descriptive>
20793         <Type type="void"/>
20794         <ArgumentList>
20795           <Argument name="contact">
20796             <descriptive>
20797                 <description><p>
20798  A contact object to update.
20799                 </p></description>
20800             </descriptive>
20801             <Type name="Contact"/>
20802           </Argument>
20803         </ArgumentList>
20804         <Raises>
20805           <RaiseException name="WebAPIException">
20806             <descriptive>
20807                 <description><p>
20808  with error type NotFoundError, if the identifier does not match.
20809                 </p></description>
20810                 <description><p>
20811  with error type TypeMismatchError, if any input parameter
20812 is not compatible with the expected type for that parameter.
20813                 </p></description>
20814                 <description><p>
20815  with error type InvalidValuesError, if any input parameter
20816 contains invalid values.
20817                 </p></description>
20818                 <description><p>
20819  with error type SecurityError, if the application does not have the privilege to call this method.
20820                 </p></description>
20821                 <description><p>
20822  with error type NotSupportedError, if the feature
20823 is not supported.
20824                 </p></description>
20825                 <description><p>
20826  with error type UnknownError, if the contact could not be updated
20827 to an unknown error.
20828                 </p></description>
20829             </descriptive>
20830           </RaiseException>
20831         </Raises>
20832       </Operation>
20833       <Operation name="updateBatch" id="::Contact::AddressBook::updateBatch">
20834         <webidl>    void updateBatch(<ref>Contact</ref>[] contacts,
20835                      optional <ref>SuccessCallback</ref>? successCallback,
20836                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
20837         <descriptive>
20838             <brief>
20839  Updates several existing contacts in the address book asynchronously.
20840             </brief>
20841            <description>
20842             <p>
20843 The <em>errorCallback()</em> is launched with these error types:
20844             </p>
20845             <ul>
20846               <li>
20847 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>
20848               <li>
20849 InvalidValuesError - If any of the input parameters contain an invalid value.              </li>
20850               <li>
20851 UnknownError - If any other error occurs, while trying to add the contacts.              </li>
20852             </ul>
20853             <p>
20854 If any of the contacts could not be updated, the error callback
20855 function that was passed in the invocation will be called.
20856             </p>
20857            </description>
20858             <version>
20859  1.0
20860             </version>
20861             <privilegelevel>
20862  public
20863             </privilegelevel>
20864             <privilege>
20865  http://tizen.org/privilege/contact.write
20866             </privilege>
20867             <Code>  var addressbook;
20868
20869   // Define the error callback for all the asynchronous calls
20870   function errorCB(err) {
20871     console.log('The following error occurred: ' +  err.name);
20872   }
20873
20874   function contactsUpdatedCB() {
20875     console.log('Contacts were updated');
20876   }
20877
20878   function contactsFoundCB(contacts) {
20879     // The contact has been successfully found
20880     for(var i = 0; i &#60; contacts.length; i++) {
20881       contacts[i].name.firstName = 'Christopher';
20882     }
20883     try {
20884       addressbook.updateBatch(contacts, contactsUpdatedCB, errorCB);
20885     } catch (err) {
20886       console.log('The following error occurred while updating: ' +  err.name);
20887     }
20888   }
20889
20890   // Get default address book.
20891   addressbook = tizen.contact.getDefaultAddressBook();
20892
20893   var filter = new tizen.AttributeFilter('name.firstName', 'CONTAINS', 'Chris');
20894   try {
20895     addressbook.find(contactsFoundCB, errorCB, filter);
20896   } catch (err) {
20897     console.log('The following error occurred while finding: ' +  err.name);
20898   }
20899  </Code>
20900         </descriptive>
20901         <Type type="void"/>
20902         <ArgumentList>
20903           <Argument name="contacts">
20904             <descriptive>
20905                 <description><p>
20906  A list of contact objects to be saved in the terminal storage.
20907                 </p></description>
20908             </descriptive>
20909             <Type type="array">
20910               <Type name="Contact"/>
20911             </Type>
20912           </Argument>
20913           <Argument optional="optional" name="successCallback">
20914             <descriptive>
20915                 <description><p>
20916  The method to call when the invocation ends successfully.
20917                 </p></description>
20918             </descriptive>
20919             <Type name="SuccessCallback" nullable="nullable"/>
20920           </Argument>
20921           <Argument optional="optional" name="errorCallback">
20922             <descriptive>
20923                 <description><p>
20924  The method to call when the request to update contacts fails.
20925                 </p></description>
20926             </descriptive>
20927             <Type name="ErrorCallback" nullable="nullable"/>
20928           </Argument>
20929         </ArgumentList>
20930         <Raises>
20931           <RaiseException name="WebAPIException">
20932             <descriptive>
20933                 <description><p>
20934  with error type TypeMismatchError, if the input parameter
20935 is not compatible with the expected type for that parameter.
20936                 </p></description>
20937                 <description><p>
20938  with error type SecurityError, if the application does not have the privilege to call this method.
20939                 </p></description>
20940                 <description><p>
20941  with error type NotSupportedError, if this feature is not supported.
20942                 </p></description>
20943             </descriptive>
20944           </RaiseException>
20945         </Raises>
20946       </Operation>
20947       <Operation name="remove" id="::Contact::AddressBook::remove">
20948         <webidl>    void remove(<ref>ContactId</ref> id) raises(<ref>WebAPIException</ref>);</webidl>
20949         <descriptive>
20950             <brief>
20951  Removes a contact from the address book synchronously.
20952             </brief>
20953            <description>
20954             <p>
20955 Removes the contact in the address book that corresponds to the specified
20956 identifier. This function will throw an exception if it failed to
20957 remove the specified contact.
20958             </p>
20959            </description>
20960             <version>
20961  1.0
20962             </version>
20963             <privilegelevel>
20964  public
20965             </privilegelevel>
20966             <privilege>
20967  http://tizen.org/privilege/contact.write
20968             </privilege>
20969             <Code>  var addressbook;
20970
20971   // Define the error callback
20972   function errorCB(err) {
20973     console.log('The following error occurred: ' +  err.name);
20974   }
20975
20976   function contactsFoundCB(contacts) {
20977     // The contact has been successfully found
20978     if(contacts.length > 0) {
20979       try {
20980         addressbook.remove(contacts[0].id);
20981         console.log('First contact was removed');
20982       } catch (err) {
20983         console.log('The following error occurred while removing: ' +  err.name);
20984       }
20985     } else {
20986       console.log( 'No contacts.');
20987     }
20988   }
20989
20990   // Get default address book.
20991   addressbook = tizen.contact.getDefaultAddressBook();
20992
20993   var filter = new tizen.AttributeFilter('name.firstName', 'CONTAINS', 'Chris');
20994   try {
20995     addressbook.find(contactsFoundCB, errorCB, filter);
20996   } catch (err) {
20997     console.log( 'The following error occurred while finding: ' +  err.name);
20998   }
20999  </Code>
21000         </descriptive>
21001         <Type type="void"/>
21002         <ArgumentList>
21003           <Argument name="id">
21004             <descriptive>
21005                 <description><p>
21006  An identifier (id attribute) of the contact object to delete.
21007                 </p></description>
21008             </descriptive>
21009             <Type name="ContactId"/>
21010           </Argument>
21011         </ArgumentList>
21012         <Raises>
21013           <RaiseException name="WebAPIException">
21014             <descriptive>
21015                 <description><p>
21016  with error type NotFoundError, if the identifier does not match
21017 any contact in the address book.
21018                 </p></description>
21019                 <description><p>
21020  with error type TypeMismatchError, if any input parameter
21021 is not compatible with the expected type for that parameter.
21022                 </p></description>
21023                 <description><p>
21024  with error type InvalidValuesError, if any input parameter
21025 contains invalid values.
21026                 </p></description>
21027                 <description><p>
21028  with error type SecurityError, if the application does not have the privilege to call this method.
21029                 </p></description>
21030                 <description><p>
21031  with error type NotSupportedError, if the feature
21032 is not supported.
21033                 </p></description>
21034                 <description><p>
21035  with error type UnknownError, if the contact could not be removed
21036 to an unknown error.
21037                 </p></description>
21038             </descriptive>
21039           </RaiseException>
21040         </Raises>
21041       </Operation>
21042       <Operation name="removeBatch" id="::Contact::AddressBook::removeBatch">
21043         <webidl>    void removeBatch(<ref>ContactId</ref>[] ids,
21044                      optional <ref>SuccessCallback</ref>? successCallback,
21045                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
21046         <descriptive>
21047             <brief>
21048  Removes several contacts from the address book asynchronously.
21049             </brief>
21050            <description>
21051             <p>
21052 The <em>errorCallback()</em> is launched with these error types:
21053             </p>
21054             <ul>
21055               <li>
21056 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>
21057               <li>
21058 InvalidValuesError - If any of the input parameters contain an invalid value.              </li>
21059               <li>
21060 UnknownError - If any other error occurs while trying to remove the contacts.              </li>
21061             </ul>
21062            </description>
21063             <version>
21064  1.0
21065             </version>
21066             <privilegelevel>
21067  public
21068             </privilegelevel>
21069             <privilege>
21070  http://tizen.org/privilege/contact.write
21071             </privilege>
21072             <Code>  var addressbook;
21073
21074   // Define the error callback
21075   function errorCB(err) {
21076     console.log( 'The following error occurred: ' +  err.name);
21077   }
21078
21079   function contactsRemovedCB() {
21080     console.log('Contacts were removed');
21081   }
21082
21083   function contactsFoundCB(contacts) {
21084     // The contact has been successfully found
21085     if(contacts.length > 2) {
21086       try {
21087         addressbook.removeBatch([contacts[0].id, contacts[1].id], contactsRemovedCB, errorCB);
21088       } catch (err) {
21089         console.log( 'The following error occurred while removing: ' +  err.name);
21090       }
21091     } else {
21092       console.log( 'Not enough contacts.');
21093     }
21094   }
21095
21096   // Get default address book.
21097   addressbook = tizen.contact.getDefaultAddressBook();
21098
21099   var filter = new tizen.AttributeFilter('name.firstName', 'CONTAINS', 'Chris');
21100   try {
21101     addressbook.find(contactsFoundCB, errorCB, filter);
21102   } catch (err) {
21103     console.log( 'The following error occurred while finding: ' +  err.name);
21104   }
21105  </Code>
21106         </descriptive>
21107         <Type type="void"/>
21108         <ArgumentList>
21109           <Argument name="ids">
21110             <descriptive>
21111                 <description><p>
21112  A list of identifiers (id attribute) for the contact objects to be deleted.
21113                 </p></description>
21114             </descriptive>
21115             <Type type="array">
21116               <Type name="ContactId"/>
21117             </Type>
21118           </Argument>
21119           <Argument optional="optional" name="successCallback">
21120             <descriptive>
21121                 <description><p>
21122  The method to call when the invocation ends successfully.
21123                 </p></description>
21124             </descriptive>
21125             <Type name="SuccessCallback" nullable="nullable"/>
21126           </Argument>
21127           <Argument optional="optional" name="errorCallback">
21128             <descriptive>
21129                 <description><p>
21130  The method to call when the request to delete contacts fails.
21131                 </p></description>
21132             </descriptive>
21133             <Type name="ErrorCallback" nullable="nullable"/>
21134           </Argument>
21135         </ArgumentList>
21136         <Raises>
21137           <RaiseException name="WebAPIException">
21138             <descriptive>
21139                 <description><p>
21140  with error type TypeMismatchError, if any input parameter
21141 is not compatible with the expected type for that parameter.
21142                 </p></description>
21143                 <description><p>
21144  with error type SecurityError, if the application does not have the privilege to call this method.
21145                 </p></description>
21146                 <description><p>
21147  with error type NotSupportedError, if the feature
21148 is not supported.
21149                 </p></description>
21150             </descriptive>
21151           </RaiseException>
21152         </Raises>
21153       </Operation>
21154       <Operation name="find" id="::Contact::AddressBook::find">
21155         <webidl>    void find(<ref>ContactArraySuccessCallback</ref> successCallback,
21156               optional <ref>ErrorCallback</ref>? errorCallback,
21157               optional <ref>AbstractFilter</ref>? filter,
21158               optional <ref>SortMode</ref>? sortMode) raises(<ref>WebAPIException</ref>);</webidl>
21159         <descriptive>
21160             <brief>
21161  Finds an array of all Contact objects from the specified address book or an array of
21162 Contact objects that match the optionally supplied filter.
21163             </brief>
21164            <description>
21165             <p>
21166 If the filter is passed and contains valid values, only those values in the
21167 address book that match the filter criteria as specified in the AbstractFilter
21168 interface will be returned in the successCallback. If no filter is passed, the filter
21169 contains any invalid values, the filter is <var>null</var> or undefined, then
21170 the implementation MUST return the full list of contact items
21171 in the successCallback. If no contacts are available in the address book or no
21172 contact matches the filter criteria, the successCallback will be invoked
21173 with an empty array.
21174             </p>
21175             <p>
21176 The <em>errorCallback() </em>is launched with these error types:
21177             </p>
21178             <ul>
21179               <li>
21180 InvalidValuesError - If any of the input parameters contain an invalid value.              </li>
21181               <li>
21182 UnknownError - If any other error occurs while trying to retrieve the contacts.              </li>
21183             </ul>
21184            </description>
21185             <version>
21186  1.0
21187             </version>
21188             <privilegelevel>
21189  public
21190             </privilegelevel>
21191             <privilege>
21192  http://tizen.org/privilege/contact.read
21193             </privilege>
21194             <Code>  var addressbook;
21195
21196   // Define the error callback.
21197   function errorCB(err) {
21198     console.log( 'The following error occurred: ' +  err.name);
21199   }
21200
21201   // Define the contact search success callback.
21202   function contactsFoundCB(contacts) {
21203      console.log(contacts.length + ' results found.');
21204   }
21205
21206   // Get default address book
21207   addressbook = tizen.contact.getDefaultAddressBook();
21208
21209   // Find all contacts in the address book that have &quot;Ramone&quot; in the nick name.
21210   var filter = new tizen.AttributeFilter('name.nicknames', 'CONTAINS', 'Ramone');
21211
21212   // The contacts returned by the find() query will be sorted by
21213   // ascending last name.
21214   var sortingMode =  new tizen.SortMode('name.lastName', 'ASC');
21215   try {
21216     addressbook.find(contactsFoundCB, errorCB,
21217                      filter, sortingModes);
21218   } catch (err) {
21219     console.log( 'The following error occurred while finding: ' +  err.name);
21220   }
21221  </Code>
21222         </descriptive>
21223         <Type type="void"/>
21224         <ArgumentList>
21225           <Argument name="successCallback">
21226             <descriptive>
21227                 <description><p>
21228  The method to call when the invocation ends successfully.
21229                 </p></description>
21230             </descriptive>
21231             <Type name="ContactArraySuccessCallback"/>
21232           </Argument>
21233           <Argument optional="optional" name="errorCallback">
21234             <descriptive>
21235                 <description><p>
21236  The method to call when an error occurs.
21237                 </p></description>
21238             </descriptive>
21239             <Type name="ErrorCallback" nullable="nullable"/>
21240           </Argument>
21241           <Argument optional="optional" name="filter">
21242             <descriptive>
21243                 <description><p>
21244  A filter used to select which contacts are returned.
21245                 </p></description>
21246             </descriptive>
21247             <Type name="AbstractFilter" nullable="nullable"/>
21248           </Argument>
21249           <Argument optional="optional" name="sortMode">
21250             <descriptive>
21251                 <description><p>
21252  A variable to determine the sort order in which the contacts are returned.
21253                 </p></description>
21254             </descriptive>
21255             <Type name="SortMode" nullable="nullable"/>
21256           </Argument>
21257         </ArgumentList>
21258         <Raises>
21259           <RaiseException name="WebAPIException">
21260             <descriptive>
21261                 <description><p>
21262  with error type TypeMismatchError, if any input parameter
21263 is not compatible with the expected type for that parameter.
21264                 </p></description>
21265                 <description><p>
21266  with error type SecurityError, if the application does not have the privilege to call this method.
21267                 </p></description>
21268                 <description><p>
21269  with error type NotSupportedError, if the feature
21270 is not supported.
21271                 </p></description>
21272             </descriptive>
21273           </RaiseException>
21274         </Raises>
21275       </Operation>
21276       <Operation name="addChangeListener" id="::Contact::AddressBook::addChangeListener">
21277         <webidl>    long addChangeListener(<ref>AddressBookChangeCallback</ref> successCallback,
21278                            optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
21279         <descriptive>
21280             <brief>
21281  Subscribes to receive notifications about address book changes.
21282             </brief>
21283            <description>
21284             <p>
21285 When executed, the implementation must immediately return a subscription identifier that identifies
21286 the watch operation. After returning the identifier, the watch operation is started
21287 asynchronously.
21288             </p>
21289            </description>
21290             <version>
21291  1.0
21292             </version>
21293             <privilegelevel>
21294  public
21295             </privilegelevel>
21296             <privilege>
21297  http://tizen.org/privilege/contact.read
21298             </privilege>
21299             <Code> var watcherId = 0; // watcher identifier
21300  var addressbook; // This example assumes addressbook is initialized
21301
21302  var watcher = {
21303    oncontactsadded: function(contacts) {
21304      console.log(contacts.length + ' contacts were added');
21305    },
21306    oncontactsupdated: function(contacts) {
21307      console.log(contacts.length + ' contacts were updated');
21308    },
21309    oncontactsremoved: function(ids) {
21310      console.log(ids.length + ' contacts were deleted');
21311    }
21312  };
21313
21314  // Registers to be notified when the address book changes
21315  watcherId = addressbook.addChangeListener(watcher);
21316  </Code>
21317         </descriptive>
21318         <Type type="long">
21319           <descriptive>
21320               <description><p>
21321  long An identifier used to clear the watch subscription.
21322               </p></description>
21323           </descriptive>
21324         </Type>
21325         <ArgumentList>
21326           <Argument name="successCallback">
21327             <descriptive>
21328                 <description><p>
21329  The method to call when different types of address book change notifications are received.
21330                 </p></description>
21331             </descriptive>
21332             <Type name="AddressBookChangeCallback"/>
21333           </Argument>
21334           <Argument optional="optional" name="errorCallback">
21335             <descriptive>
21336                 <description><p>
21337  The method to call if address book changes cannot be watched.
21338                 </p></description>
21339             </descriptive>
21340             <Type name="ErrorCallback" nullable="nullable"/>
21341           </Argument>
21342         </ArgumentList>
21343         <Raises>
21344           <RaiseException name="WebAPIException">
21345             <descriptive>
21346                 <description><p>
21347  with error type TypeMismatchError, if any input parameter
21348 is not compatible with the expected type for that parameter.
21349                 </p></description>
21350                 <description><p>
21351  with error type InvalidValuesError, if any of the input parameters
21352 contain an invalid value.
21353                 </p></description>
21354                 <description><p>
21355  with error type SecurityError, if the application does not have the privilege to call this method.
21356                 </p></description>
21357                 <description><p>
21358  with error type NotSupportedError, if the feature
21359 is not supported.
21360                 </p></description>
21361                 <description><p>
21362  with error type UnknownError in any other case.
21363                 </p></description>
21364             </descriptive>
21365           </RaiseException>
21366         </Raises>
21367       </Operation>
21368       <Operation name="removeChangeListener" id="::Contact::AddressBook::removeChangeListener">
21369         <webidl>    void removeChangeListener(long watchId) raises(<ref>WebAPIException</ref>);</webidl>
21370         <descriptive>
21371             <brief>
21372  Unsubscribes an address book changes watch operation.
21373             </brief>
21374            <description>
21375             <p>
21376 If the watchId argument is valid and corresponds to a subscription already in
21377 place, the watch process MUST immediately stop and no further callbacks MUST be
21378 invoked. If the watchId argument is not valid or does not correspond to a
21379 valid subscription, the method should return without any further action.
21380             </p>
21381            </description>
21382             <version>
21383  1.0
21384             </version>
21385             <privilegelevel>
21386  public
21387             </privilegelevel>
21388             <privilege>
21389  http://tizen.org/privilege/contact.read
21390             </privilege>
21391             <Code> var watcherId = 0; // watcher identifier
21392  var addressbook; // This example assumes addressbook is initialized
21393
21394  // Receives address book changes
21395  var watcher = {
21396    oncontactsadded: function(contacts) {
21397      console.log(contacts.length + ' contacts were added');
21398    },
21399    oncontactsupdated: function(contacts) {
21400      console.log(contacts.length + ' contacts were updated');
21401    },
21402    oncontactsremoved: function(ids) {
21403      console.log(ids.length + ' contacts were removed');
21404    }
21405  };
21406
21407  // Cancel the watch operation
21408  function cancelWatch() {
21409     addressbook.removeChangeListener(watcherId);
21410  }
21411
21412  // registers to be notified when the address book changes
21413  watcherId = addressbook.addChangeListener(watcher);
21414  </Code>
21415         </descriptive>
21416         <Type type="void"/>
21417         <ArgumentList>
21418           <Argument name="watchId">
21419             <descriptive>
21420                 <description><p>
21421  A subscription identifier.
21422                 </p></description>
21423             </descriptive>
21424             <Type type="long"/>
21425           </Argument>
21426         </ArgumentList>
21427         <Raises>
21428           <RaiseException name="WebAPIException">
21429             <descriptive>
21430                 <description><p>
21431  with error type TypeMismatchError, if any input parameter
21432 is not compatible with the expected type for that parameter.
21433                 </p></description>
21434                 <description><p>
21435  with error type InvalidValuesError, if any of the input
21436 parameters contain an invalid value.
21437                 </p></description>
21438                 <description><p>
21439  with error type NotFoundError, if there is no listener
21440 with the given identifier.
21441                 </p></description>
21442                 <description><p>
21443  with error type SecurityError, if the application does not have the privilege to call this method.
21444                 </p></description>
21445                 <description><p>
21446  with error type NotSupportedError, if the feature
21447 is not supported.
21448                 </p></description>
21449                 <description><p>
21450  with error type UnknownError in any other error case.
21451                 </p></description>
21452             </descriptive>
21453           </RaiseException>
21454         </Raises>
21455       </Operation>
21456       <Operation name="getGroup" id="::Contact::AddressBook::getGroup">
21457         <webidl>    <ref>ContactGroup</ref> getGroup(<ref>ContactGroupId</ref> groupId) raises(<ref>WebAPIException</ref>);</webidl>
21458         <descriptive>
21459             <brief>
21460  Gets the group with the specified identifier.
21461             </brief>
21462            <description>
21463             <p>
21464 If the operation completes successfully, it must return the
21465 group with the given identifier.
21466             </p>
21467            </description>
21468             <version>
21469  2.0
21470             </version>
21471             <privilegelevel>
21472  public
21473             </privilegelevel>
21474             <privilege>
21475  http://tizen.org/privilege/contact.read
21476             </privilege>
21477             <Code> try {
21478    // Retrieves the Person corresponding to a Contact.
21479    var addressBook = tizen.contact.getAddressBook(contactRef.addressBookId);
21480    var contact = addressBook.get(contactRef.contactId);
21481    var group = addressBook.getGroup(contact.groupIds[0].id);
21482    console.log(&quot;Successfully resolved group with id: &quot; + contact.groupIds[0].id);
21483  } catch(err) {
21484    console.log(&quot;Error: &quot; + err.name);
21485  }
21486  </Code>
21487         </descriptive>
21488         <Type name="ContactGroup">
21489           <descriptive>
21490               <description><p>
21491  ContactGroup The matching ContactGroup object.
21492               </p></description>
21493           </descriptive>
21494         </Type>
21495         <ArgumentList>
21496           <Argument name="groupId">
21497             <descriptive>
21498                 <description><p>
21499  A group identifier.
21500                 </p></description>
21501             </descriptive>
21502             <Type name="ContactGroupId"/>
21503           </Argument>
21504         </ArgumentList>
21505         <Raises>
21506           <RaiseException name="WebAPIException">
21507             <descriptive>
21508                 <description><p>
21509  with error type NotFoundError, if there is no contact
21510 with the given identifier.
21511                 </p></description>
21512                 <description><p>
21513  with error type TypeMismatchError, if any input parameter
21514 is not compatible with the expected type for that parameter.
21515                 </p></description>
21516                 <description><p>
21517  with error type InvalidValuesError, if any of the input
21518 parameters contain an invalid value.
21519                 </p></description>
21520                 <description><p>
21521  with error type SecurityError, if the application does not have the privilege to call this method.
21522                 </p></description>
21523                 <description><p>
21524  with error type NotSupportedError, if the feature
21525 is not supported.
21526                 </p></description>
21527                 <description><p>
21528  with error type UnknownError in any other error case.
21529                 </p></description>
21530             </descriptive>
21531           </RaiseException>
21532         </Raises>
21533       </Operation>
21534       <Operation name="addGroup" id="::Contact::AddressBook::addGroup">
21535         <webidl>    void addGroup(<ref>ContactGroup</ref> group) raises(<ref>WebAPIException</ref>);</webidl>
21536         <descriptive>
21537             <brief>
21538  Adds a group to the address book.
21539             </brief>
21540            <description>
21541             <p>
21542 If the group is successfully inserted in the addressbook, the Group object
21543 will have its identifier (id attribute) set when the function returns.
21544             </p>
21545             <p>
21546 The group shall be added to local phone address book if the address book
21547 is the default address book.
21548             </p>
21549            </description>
21550             <version>
21551  2.0
21552             </version>
21553             <privilegelevel>
21554  public
21555             </privilegelevel>
21556             <privilege>
21557  http://tizen.org/privilege/contact.write
21558             </privilege>
21559             <Code>  var addressbook;
21560
21561   // Get address book
21562   var addressbooks = tizen.contact.getAddressBooks();
21563   addressbook = addressbooks[0];
21564
21565   try {
21566     var group = new tizen.ContactGroup('Company');
21567     addressbook.addGroup(group);
21568     console.log('Group added with id ' + group.id);
21569   } catch (err) {
21570     console.log( 'The following error occurred while adding: ' +  err.name);
21571   }
21572  </Code>
21573         </descriptive>
21574         <Type type="void"/>
21575         <ArgumentList>
21576           <Argument name="group">
21577             <descriptive>
21578                 <description><p>
21579  A ContactGroup object to be added.
21580                 </p></description>
21581             </descriptive>
21582             <Type name="ContactGroup"/>
21583           </Argument>
21584         </ArgumentList>
21585         <Raises>
21586           <RaiseException name="WebAPIException">
21587             <descriptive>
21588                 <description><p>
21589  with error type TypeMismatchError, if any input parameter
21590 is not compatible with the expected type for that parameter.
21591                 </p></description>
21592                 <description><p>
21593  with error type InvalidValuesError, if any input parameter
21594 contains invalid values.
21595                 </p></description>
21596                 <description><p>
21597  with error type SecurityError, if the application does not have the privilege to call this method.
21598                 </p></description>
21599                 <description><p>
21600  with error type NotSupportedError, if the feature
21601 is not supported.
21602                 </p></description>
21603                 <description><p>
21604  with error type UnknownError, if any other error occurs while trying to insert the contact.
21605                 </p></description>
21606             </descriptive>
21607           </RaiseException>
21608         </Raises>
21609       </Operation>
21610       <Operation name="updateGroup" id="::Contact::AddressBook::updateGroup">
21611         <webidl>    void updateGroup(<ref>ContactGroup</ref> group) raises(<ref>WebAPIException</ref>);</webidl>
21612         <descriptive>
21613             <brief>
21614  Updates a group in the address book.
21615             </brief>
21616             <version>
21617  2.0
21618             </version>
21619             <privilegelevel>
21620  public
21621             </privilegelevel>
21622             <privilege>
21623  http://tizen.org/privilege/contact.write
21624             </privilege>
21625             <Code>  var addressbook;
21626
21627   // Get address book.
21628   var addressbooks = tizen.contact.getAddressBooks();
21629   addressbook = addressbooks[0];
21630
21631   try {
21632     groups = addressbook.getGroups();
21633     groups[0].name = 'Friends';
21634     addressbook.updateGroup(groups[0]);
21635     console.log('First group was updated');
21636   } catch (err) {
21637     console.log( 'The following error occurred while adding: ' +  err.name);
21638   }
21639  </Code>
21640         </descriptive>
21641         <Type type="void"/>
21642         <ArgumentList>
21643           <Argument name="group">
21644             <descriptive>
21645                 <description><p>
21646  A ContactGroup object to be updated.
21647                 </p></description>
21648             </descriptive>
21649             <Type name="ContactGroup"/>
21650           </Argument>
21651         </ArgumentList>
21652         <Raises>
21653           <RaiseException name="WebAPIException">
21654             <descriptive>
21655                 <description><p>
21656  with error type TypeMismatchError, if any input parameter
21657 is not compatible with the expected type for that parameter.
21658                 </p></description>
21659                 <description><p>
21660  with error type InvalidValuesError, if any input parameter
21661 contains invalid values.
21662                 </p></description>
21663                 <description><p>
21664  with error type SecurityError, if the application does not have the privilege to call this method.
21665                 </p></description>
21666                 <description><p>
21667  with error type NotSupportedError, if the feature
21668 is not supported.
21669                 </p></description>
21670                 <description><p>
21671  with error type UnknownError, if the group could not be updated
21672 to an unknown error.
21673                 </p></description>
21674             </descriptive>
21675           </RaiseException>
21676         </Raises>
21677       </Operation>
21678       <Operation name="removeGroup" id="::Contact::AddressBook::removeGroup">
21679         <webidl>    void removeGroup(<ref>ContactGroupId</ref> groupId) raises(<ref>WebAPIException</ref>);</webidl>
21680         <descriptive>
21681             <brief>
21682  Removes a group from the address book.
21683             </brief>
21684            <description>
21685             <p>
21686 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.
21687             </p>
21688            </description>
21689             <version>
21690  2.0
21691             </version>
21692             <privilegelevel>
21693  public
21694             </privilegelevel>
21695             <privilege>
21696  http://tizen.org/privilege/contact.write
21697             </privilege>
21698             <Code>  var addressbook;
21699
21700   // Get default address book.
21701   var addressbooks = tizen.contact.getAddressBooks();
21702   addressbook = addressbooks[0];
21703
21704   try {
21705     groups = addressbook.getGroups();
21706     addressbook.removeGroup(groups[0].id);
21707     console.log('First group was removed');
21708   } catch (err) {
21709     console.log( 'The following error occurred while finding: ' +  err.name);
21710   }
21711  </Code>
21712         </descriptive>
21713         <Type type="void"/>
21714         <ArgumentList>
21715           <Argument name="groupId">
21716             <descriptive>
21717                 <description><p>
21718  An identifier (id attribute) of the ContactGroup object to be deleted.
21719                 </p></description>
21720             </descriptive>
21721             <Type name="ContactGroupId"/>
21722           </Argument>
21723         </ArgumentList>
21724         <Raises>
21725           <RaiseException name="WebAPIException">
21726             <descriptive>
21727                 <description><p>
21728  with error type NotFoundError, if the identifier does not match
21729 any contact in the address book.
21730                 </p></description>
21731                 <description><p>
21732  with error type TypeMismatchError, if any input parameter
21733 is not compatible with the expected type for that parameter.
21734                 </p></description>
21735                 <description><p>
21736  with error type InvalidValuesError, if any input parameter
21737 contains invalid values.
21738                 </p></description>
21739                 <description><p>
21740  with error type SecurityError, if the application does not have the privilege to call this method.
21741                 </p></description>
21742                 <description><p>
21743  with error type NotSupportedError, if the feature
21744 is not supported.
21745                 </p></description>
21746                 <description><p>
21747  with error type UnknownError, if the group could not be removed
21748 to an unknown error.
21749                 </p></description>
21750             </descriptive>
21751           </RaiseException>
21752         </Raises>
21753       </Operation>
21754       <Operation name="getGroups" id="::Contact::AddressBook::getGroups">
21755         <webidl>    <ref>ContactGroup</ref>[] getGroups() raises(<ref>WebAPIException</ref>);</webidl>
21756         <descriptive>
21757             <brief>
21758  Gets an array of all ContactGroup objects from the specified address book.
21759             </brief>
21760             <version>
21761  2.0
21762             </version>
21763             <privilegelevel>
21764  public
21765             </privilegelevel>
21766             <privilege>
21767  http://tizen.org/privilege/contact.read
21768             </privilege>
21769             <Code>  var addressbook;
21770
21771   // Get default address book.
21772   var addressbooks = tizen.contact.getAddressBooks();
21773   addressbook = addressbooks[0];
21774
21775   try {
21776     groups = addressbook.getGroups();
21777     console.log('Number of groups is ' + groups.length);
21778   } catch (err) {
21779     console.log( 'The following error occurred while finding: ' +  err.name);
21780   }
21781  </Code>
21782         </descriptive>
21783         <Type type="array">
21784           <descriptive>
21785               <description><p>
21786  ContactGroup[] The array of ContactGroup object from this address book.
21787               </p></description>
21788           </descriptive>
21789           <Type name="ContactGroup"/>
21790         </Type>
21791         <ArgumentList/>
21792         <Raises>
21793           <RaiseException name="WebAPIException">
21794             <descriptive>
21795                 <description><p>
21796  with error type NotFoundError, if the identifier does not match
21797 any contact in the address book.
21798                 </p></description>
21799                 <description><p>
21800  with error type TypeMismatchError, if any input parameter
21801 is not compatible with the expected type for that parameter.
21802                 </p></description>
21803                 <description><p>
21804  with error type InvalidValuesError, if any input parameter
21805 contains invalid values.
21806                 </p></description>
21807                 <description><p>
21808  with error type SecurityError, if the application does not have the privilege to call this method.
21809                 </p></description>
21810                 <description><p>
21811  with error type NotSupportedError, if the feature
21812 is not supported.
21813                 </p></description>
21814                 <description><p>
21815  with error type UnknownError, if the group could not be retrieved due
21816 to an unknown error.
21817                 </p></description>
21818             </descriptive>
21819           </RaiseException>
21820         </Raises>
21821       </Operation>
21822     </Interface>
21823     <Interface name="Person" id="::Contact::Person">
21824       <webidl>  [NoInterfaceObject] interface Person {
21825     readonly attribute <ref>PersonId</ref> id;
21826
21827     readonly attribute DOMString displayName;
21828
21829     readonly attribute long contactCount;
21830
21831     readonly attribute boolean hasPhoneNumber;
21832
21833     readonly attribute boolean hasEmail;
21834
21835     attribute boolean isFavorite;
21836
21837     attribute DOMString? photoURI;
21838
21839     attribute DOMString? ringtoneURI;
21840
21841     attribute <ref>ContactId</ref> displayContactId;
21842
21843     void link(<ref>PersonId</ref> personId) raises(<ref>WebAPIException</ref>);
21844
21845     <ref>Person</ref> unlink(<ref>ContactId</ref> contactId) raises(<ref>WebAPIException</ref>);
21846   };</webidl>
21847       <descriptive>
21848           <brief>
21849  The person object.
21850           </brief>
21851           <version>
21852  2.0
21853           </version>
21854       </descriptive>
21855       <ExtendedAttributeList>
21856         <ExtendedAttribute name="NoInterfaceObject">
21857           <webidl>NoInterfaceObject</webidl>
21858         </ExtendedAttribute>
21859       </ExtendedAttributeList>
21860       <Attribute readonly="readonly" name="id" id="::Contact::Person::id">
21861         <webidl>    readonly attribute <ref>PersonId</ref> id;</webidl>
21862         <descriptive>
21863             <brief>
21864  The identifier of the person.
21865             </brief>
21866             <version>
21867  2.0
21868             </version>
21869         </descriptive>
21870         <Type name="PersonId"/>
21871       </Attribute>
21872       <Attribute readonly="readonly" name="displayName" id="::Contact::Person::displayName">
21873         <webidl>    readonly attribute DOMString displayName;</webidl>
21874         <descriptive>
21875             <brief>
21876  An attribute to identify a person by storing the display name in a string.
21877 It is selected from the contacts' display names.
21878             </brief>
21879             <version>
21880  2.0
21881             </version>
21882         </descriptive>
21883         <Type type="DOMString"/>
21884       </Attribute>
21885       <Attribute readonly="readonly" name="contactCount" id="::Contact::Person::contactCount">
21886         <webidl>    readonly attribute long contactCount;</webidl>
21887         <descriptive>
21888             <brief>
21889  An attribute to count the number of the contacts that belong to a person.
21890             </brief>
21891             <version>
21892  2.0
21893             </version>
21894         </descriptive>
21895         <Type type="long"/>
21896       </Attribute>
21897       <Attribute readonly="readonly" name="hasPhoneNumber" id="::Contact::Person::hasPhoneNumber">
21898         <webidl>    readonly attribute boolean hasPhoneNumber;</webidl>
21899         <descriptive>
21900             <brief>
21901  An attribute to indicate if a person has a phone number.
21902             </brief>
21903             <version>
21904  2.0
21905             </version>
21906         </descriptive>
21907         <Type type="boolean"/>
21908       </Attribute>
21909       <Attribute readonly="readonly" name="hasEmail" id="::Contact::Person::hasEmail">
21910         <webidl>    readonly attribute boolean hasEmail;</webidl>
21911         <descriptive>
21912             <brief>
21913  An attribute to indicate if the person has an email addresses.
21914             </brief>
21915             <version>
21916  2.0
21917             </version>
21918         </descriptive>
21919         <Type type="boolean"/>
21920       </Attribute>
21921       <Attribute name="isFavorite" id="::Contact::Person::isFavorite">
21922         <webidl>    attribute boolean isFavorite;</webidl>
21923         <descriptive>
21924             <brief>
21925  An attribute to indicate whether the contact is a favorite or not.
21926             </brief>
21927            <description>
21928             <p>
21929 Indicates if the person was marked as <em>Favorite</em> or not.
21930             </p>
21931             <p>
21932 By default, this attribute is set to <var>false</var>.
21933             </p>
21934            </description>
21935             <version>
21936  2.0
21937             </version>
21938         </descriptive>
21939         <Type type="boolean"/>
21940       </Attribute>
21941       <Attribute name="photoURI" id="::Contact::Person::photoURI">
21942         <webidl>    attribute DOMString? photoURI;</webidl>
21943         <descriptive>
21944             <brief>
21945  The URI of a picture of a person.
21946             </brief>
21947            <description>
21948             <p>
21949 This attribute is used to store a URI that points to an image that can represent the
21950 person object. This attribute only contains a local file URI.
21951 Person's photoURI is bounded to linked contacts' valid photoURI.
21952 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
21953             </p>
21954             <p>
21955 By default, this attribute is set to <var>null</var>.
21956             </p>
21957            </description>
21958             <version>
21959  2.0
21960             </version>
21961         </descriptive>
21962         <Type type="DOMString" nullable="nullable"/>
21963       </Attribute>
21964       <Attribute name="ringtoneURI" id="::Contact::Person::ringtoneURI">
21965         <webidl>    attribute DOMString? ringtoneURI;</webidl>
21966         <descriptive>
21967             <brief>
21968  An attribute to specify and store the URI of a custom ringtone for a contact.
21969             </brief>
21970            <description>
21971             <p>
21972 By default, this attribute is initialized to <var>null</var>.
21973 This attribute only contains a local file URI.
21974             </p>
21975            </description>
21976             <version>
21977  2.0
21978             </version>
21979         </descriptive>
21980         <Type type="DOMString" nullable="nullable"/>
21981       </Attribute>
21982       <Attribute name="displayContactId" id="::Contact::Person::displayContactId">
21983         <webidl>    attribute <ref>ContactId</ref> displayContactId;</webidl>
21984         <descriptive>
21985             <brief>
21986  The ID of a contact that represents information of the person.
21987             </brief>
21988            <description>
21989             <p>
21990 The contact, this value is indicating, is used to show detailed information of the person.
21991             </p>
21992            </description>
21993             <version>
21994  2.0
21995             </version>
21996         </descriptive>
21997         <Type name="ContactId"/>
21998       </Attribute>
21999       <Operation name="link" id="::Contact::Person::link">
22000         <webidl>    void link(<ref>PersonId</ref> personId) raises(<ref>WebAPIException</ref>);</webidl>
22001         <descriptive>
22002             <brief>
22003  Aggregates another person to this person.
22004             </brief>
22005            <description>
22006             <p>
22007 Person is a meta object which aggregates contacts and to make a person, user should combine related contacts.
22008 For this operation, link method is provided.
22009 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;.
22010 After this function returns, the target &quot;Person A&quot; is removed from DB.
22011             </p>
22012            </description>
22013             <version>
22014  2.0
22015             </version>
22016             <privilegelevel>
22017  public
22018             </privilegelevel>
22019             <privilege>
22020  http://tizen.org/privilege/contact.write
22021             </privilege>
22022             <Code>  // Define the error callback for all the asynchronous calls
22023   function errorCB(err) {
22024     console.log( 'The following error occurred: ' +  err.name);
22025   }
22026
22027   function personsFoundCB(persons) {
22028     // The persons has been successfully found
22029     try {
22030       persons[0].link(persons[1].id);
22031       console.log('Second person was merged to the first person.');
22032     } catch (err) {
22033       console.log( 'The following error occurred while updating: ' +  err.name);
22034     }
22035   }
22036
22037   try {
22038     tizen.contact.find(personsFoundCB, errorCB);
22039   } catch (err) {
22040     console.log( 'The following error occurred while adding: ' +  err.name);
22041   }
22042  </Code>
22043         </descriptive>
22044         <Type type="void"/>
22045         <ArgumentList>
22046           <Argument name="personId">
22047             <descriptive>
22048                 <description><p>
22049  The ID of person to be merged.
22050                 </p></description>
22051             </descriptive>
22052             <Type name="PersonId"/>
22053           </Argument>
22054         </ArgumentList>
22055         <Raises>
22056           <RaiseException name="WebAPIException">
22057             <descriptive>
22058                 <description><p>
22059  with error type TypeMismatchError, if any input parameter
22060 is not compatible with the expected type for that parameter.
22061                 </p></description>
22062                 <description><p>
22063  with error type InvalidValuesError, if any input parameter
22064 contains invalid values.
22065                 </p></description>
22066                 <description><p>
22067  with error type SecurityError, if the application does not have the privilege to call this method.
22068                 </p></description>
22069                 <description><p>
22070  with error type NotSupportedError, if the feature
22071 is not supported.
22072                 </p></description>
22073                 <description><p>
22074  with error type UnknownError, if any other error occurs while trying to insert the contact.
22075                 </p></description>
22076             </descriptive>
22077           </RaiseException>
22078         </Raises>
22079       </Operation>
22080       <Operation name="unlink" id="::Contact::Person::unlink">
22081         <webidl>    <ref>Person</ref> unlink(<ref>ContactId</ref> contactId) raises(<ref>WebAPIException</ref>);</webidl>
22082         <descriptive>
22083             <brief>
22084  Separates a contact from this person.
22085             </brief>
22086            <description>
22087             <p>
22088 Person is aggregated contacts and if a user wants to detach one contact from person, unlink method is provided.
22089 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.
22090 This function returns a newly created Person object that indicates the separated contact.
22091             </p>
22092            </description>
22093             <version>
22094  2.0
22095             </version>
22096             <privilegelevel>
22097  public
22098             </privilegelevel>
22099             <privilege>
22100  http://tizen.org/privilege/contact.write
22101             </privilege>
22102             <Code>  var myPersonId = '1'; //ID of modified
22103
22104   var addressbook; // Default addressbook
22105   var person;    // Existing person obtained from addressbook
22106   var newPerson; // New person, which will be created during unlink
22107
22108   // Define the error callback.
22109   function errorCB(err) {
22110     console.log( 'The following error occurred: ' +  err.name);
22111   }
22112
22113   // Define the contact search success callback.
22114   function contactsFoundCB(contacts) {
22115     if (contacts.length > 1) {
22116       try {
22117         // unlink first contact
22118         newPerson = person.unlink(contacts[0].id);
22119       } catch (err) {
22120         console.log( 'The following error occurred while unlink: ' +  err.name);
22121       }
22122     } else {
22123         console.log( 'Not enough contacts ');
22124     }
22125   }
22126
22127   try {
22128     // Get person
22129     person = tizen.contact.get(myPersonId);
22130
22131     // Get default address book
22132     addressbook = tizen.contact.getDefaultAddressBook();
22133
22134     // Find all contacts in the default address book that personId
22135     // is exactly myPersonId
22136     var filter = new tizen.AttributeFilter('personId', 'EXACTLY', myPersonId);
22137
22138     addressbook.find(contactsFoundCB, errorCB, filter);
22139   } catch (err) {
22140     console.log( 'The following error occurred while processing: ' +  err.name);
22141   }
22142  </Code>
22143         </descriptive>
22144         <Type name="Person"/>
22145         <ArgumentList>
22146           <Argument name="contactId">
22147             <descriptive>
22148                 <description><p>
22149  The ID of contact to unlink.
22150                 </p></description>
22151             </descriptive>
22152             <Type name="ContactId"/>
22153           </Argument>
22154         </ArgumentList>
22155         <Raises>
22156           <RaiseException name="WebAPIException">
22157             <descriptive>
22158                 <description><p>
22159  with error type TypeMismatchError, if any input parameter
22160 is not compatible with the expected type for that parameter.
22161                 </p></description>
22162                 <description><p>
22163  with error type InvalidValuesError, if any input parameter
22164 contains invalid values.
22165                 </p></description>
22166                 <description><p>
22167  with error type SecurityError, if the application does not have the privilege to call this method.
22168                 </p></description>
22169                 <description><p>
22170  with error type NotSupportedError, if the feature
22171 is not supported.
22172                 </p></description>
22173                 <description><p>
22174  with error type UnknownError, if any other error occurs while trying to insert the contact.
22175                 </p></description>
22176             </descriptive>
22177           </RaiseException>
22178         </Raises>
22179       </Operation>
22180     </Interface>
22181     <Dictionary name="ContactInit" id="::Contact::ContactInit">
22182       <webidl>  dictionary ContactInit {
22183     <ref>ContactName</ref> name;
22184     <ref>ContactAddress</ref>[] addresses;
22185     DOMString photoURI;
22186     <ref>ContactPhoneNumber</ref>[] phoneNumbers;
22187     <ref>ContactEmailAddress</ref>[] emails;
22188     Date birthday;
22189     <ref>ContactAnniversary</ref>[] anniversaries;
22190     <ref>ContactOrganization</ref>[] organizations;
22191     DOMString[] notes;
22192     <ref>ContactWebSite</ref>[] urls;
22193     DOMString ringtoneURI;
22194     <ref>ContactGroupId</ref>[] groupIds;
22195   };</webidl>
22196       <descriptive>
22197           <brief>
22198  Provides a dictionary for specifying contact attributes upon contact creation.
22199           </brief>
22200          <description>
22201           <p>
22202 This dictionary is used to input parameters when contacts are created.
22203           </p>
22204          </description>
22205           <version>
22206  1.0
22207           </version>
22208       </descriptive>
22209       <DictionaryMember name="name" id="::Contact::ContactInit::name">
22210         <webidl>    <ref>ContactName</ref> name;</webidl>
22211         <Type name="ContactName"/>
22212       </DictionaryMember>
22213       <DictionaryMember name="addresses" id="::Contact::ContactInit::addresses">
22214         <webidl>    <ref>ContactAddress</ref>[] addresses;</webidl>
22215         <Type type="array">
22216           <Type name="ContactAddress"/>
22217         </Type>
22218       </DictionaryMember>
22219       <DictionaryMember name="photoURI" id="::Contact::ContactInit::photoURI">
22220         <webidl>    DOMString photoURI;</webidl>
22221         <Type type="DOMString"/>
22222       </DictionaryMember>
22223       <DictionaryMember name="phoneNumbers" id="::Contact::ContactInit::phoneNumbers">
22224         <webidl>    <ref>ContactPhoneNumber</ref>[] phoneNumbers;</webidl>
22225         <Type type="array">
22226           <Type name="ContactPhoneNumber"/>
22227         </Type>
22228       </DictionaryMember>
22229       <DictionaryMember name="emails" id="::Contact::ContactInit::emails">
22230         <webidl>    <ref>ContactEmailAddress</ref>[] emails;</webidl>
22231         <Type type="array">
22232           <Type name="ContactEmailAddress"/>
22233         </Type>
22234       </DictionaryMember>
22235       <DictionaryMember name="birthday" id="::Contact::ContactInit::birthday">
22236         <webidl>    Date birthday;</webidl>
22237         <Type type="Date"/>
22238       </DictionaryMember>
22239       <DictionaryMember name="anniversaries" id="::Contact::ContactInit::anniversaries">
22240         <webidl>    <ref>ContactAnniversary</ref>[] anniversaries;</webidl>
22241         <Type type="array">
22242           <Type name="ContactAnniversary"/>
22243         </Type>
22244       </DictionaryMember>
22245       <DictionaryMember name="organizations" id="::Contact::ContactInit::organizations">
22246         <webidl>    <ref>ContactOrganization</ref>[] organizations;</webidl>
22247         <Type type="array">
22248           <Type name="ContactOrganization"/>
22249         </Type>
22250       </DictionaryMember>
22251       <DictionaryMember name="notes" id="::Contact::ContactInit::notes">
22252         <webidl>    DOMString[] notes;</webidl>
22253         <Type type="array">
22254           <Type type="DOMString"/>
22255         </Type>
22256       </DictionaryMember>
22257       <DictionaryMember name="urls" id="::Contact::ContactInit::urls">
22258         <webidl>    <ref>ContactWebSite</ref>[] urls;</webidl>
22259         <Type type="array">
22260           <Type name="ContactWebSite"/>
22261         </Type>
22262       </DictionaryMember>
22263       <DictionaryMember name="ringtoneURI" id="::Contact::ContactInit::ringtoneURI">
22264         <webidl>    DOMString ringtoneURI;</webidl>
22265         <Type type="DOMString"/>
22266       </DictionaryMember>
22267       <DictionaryMember name="groupIds" id="::Contact::ContactInit::groupIds">
22268         <webidl>    <ref>ContactGroupId</ref>[] groupIds;</webidl>
22269         <Type type="array">
22270           <Type name="ContactGroupId"/>
22271         </Type>
22272       </DictionaryMember>
22273     </Dictionary>
22274     <Interface name="Contact" id="::Contact::Contact">
22275       <webidl>  [Constructor(optional <ref>ContactInit</ref>? ContactInitDict),
22276    Constructor(DOMString stringRepresentation)]
22277   interface Contact {
22278     readonly attribute <ref>ContactId</ref>? id;
22279
22280     readonly attribute <ref>PersonId</ref>? personId;
22281
22282     readonly attribute <ref>AddressBookId</ref>? addressBookId;
22283
22284     readonly attribute Date? lastUpdated;
22285
22286     readonly attribute boolean isFavorite;
22287
22288     attribute <ref>ContactName</ref>? name setraises(<ref>WebAPIException</ref>);
22289
22290     attribute <ref>ContactAddress</ref>[] addresses setraises(<ref>WebAPIException</ref>);
22291
22292     attribute DOMString? photoURI setraises(<ref>WebAPIException</ref>);
22293
22294     attribute <ref>ContactPhoneNumber</ref>[] phoneNumbers setraises(<ref>WebAPIException</ref>);
22295
22296     attribute <ref>ContactEmailAddress</ref>[] emails setraises(<ref>WebAPIException</ref>);
22297
22298     attribute Date? birthday setraises(<ref>WebAPIException</ref>);
22299
22300     attribute <ref>ContactAnniversary</ref>[] anniversaries setraises(<ref>WebAPIException</ref>);
22301
22302     attribute <ref>ContactOrganization</ref>[] organizations setraises(<ref>WebAPIException</ref>);
22303
22304     attribute DOMString[] notes setraises(<ref>WebAPIException</ref>);
22305
22306     attribute <ref>ContactWebSite</ref>[] urls setraises(<ref>WebAPIException</ref>);
22307
22308     attribute DOMString? ringtoneURI setraises(<ref>WebAPIException</ref>);
22309
22310     attribute <ref>ContactGroupId</ref>[] groupIds setraises(<ref>WebAPIException</ref>);
22311
22312     DOMString convertToString(optional <ref>ContactTextFormat</ref>? format) raises(<ref>WebAPIException</ref>);
22313
22314     <ref>Contact</ref> clone() raises(<ref>WebAPIException</ref>);
22315   };</webidl>
22316       <descriptive>
22317           <brief>
22318  This interface is used to create a <em>Contact </em>object.
22319           </brief>
22320           <version>
22321  1.0
22322           </version>
22323           <Code>  // Get the default address book
22324   var addressbook = tizen.contact.getDefaultAddressBook();
22325
22326   var contact = null;
22327
22328   try {
22329     contact = new tizen.Contact(
22330                       &quot;BEGIN:VCARD\n&quot;+
22331                       &quot;VERSION:3.0\n&quot;+
22332                       &quot;N:Gump;Forrest\n&quot;+
22333                       &quot;FN:Forrest Gump\n&quot;+
22334                       &quot;ORG:Bubba Gump Shrimp Co.\n&quot;+
22335                       &quot;TITLE:Shrimp Man\n&quot;+
22336                       &quot;TEL;WORK:(111) 555-1212\n&quot;+
22337                       &quot;TEL;HOME:(404) 555-1212\n&quot;+
22338                       &quot;EMAIL;WORK;PREF:forrestgump@example.com\n&quot;+
22339                       &quot;END:VCARD&quot;);
22340   } catch (err) {
22341     console.log( 'The following error occurred while converting: ' +  err.name);
22342   }
22343
22344   try {
22345     if (contact) {
22346       addressbook.add(contact);
22347       console.log('Contact was added with ID ' + contact.id);
22348     }
22349   } catch (err) {
22350     console.log( 'The following error occurred while adding: ' +  err.name);
22351   }
22352  </Code>
22353       </descriptive>
22354       <ExtendedAttributeList>
22355         <ExtendedAttribute name="Constructor">
22356           <webidl>Constructor(optional <ref>ContactInit</ref>? ContactInitDict)</webidl>
22357           <ArgumentList>
22358             <Argument optional="optional" name="ContactInitDict">
22359               <Type name="ContactInit" nullable="nullable"/>
22360             </Argument>
22361           </ArgumentList>
22362         </ExtendedAttribute>
22363         <ExtendedAttribute name="Constructor">
22364           <webidl>   Constructor(DOMString stringRepresentation)</webidl>
22365           <ArgumentList>
22366             <Argument name="stringRepresentation">
22367               <Type type="DOMString"/>
22368             </Argument>
22369           </ArgumentList>
22370         </ExtendedAttribute>
22371       </ExtendedAttributeList>
22372       <Attribute readonly="readonly" name="id" id="::Contact::Contact::id">
22373         <webidl>    readonly attribute <ref>ContactId</ref>? id;</webidl>
22374         <descriptive>
22375             <brief>
22376  An attribute to identify a raw contact.
22377             </brief>
22378            <description>
22379             <p>
22380 By default, this attribute is set to <var>null</var>.
22381             </p>
22382            </description>
22383             <version>
22384  1.0
22385             </version>
22386         </descriptive>
22387         <Type name="ContactId" nullable="nullable"/>
22388       </Attribute>
22389       <Attribute readonly="readonly" name="personId" id="::Contact::Contact::personId">
22390         <webidl>    readonly attribute <ref>PersonId</ref>? personId;</webidl>
22391         <descriptive>
22392             <brief>
22393  The identifier of the person corresponding to the raw contact.
22394             </brief>
22395            <description>
22396             <p>
22397 By default, this attribute is set to <var>null</var>.
22398             </p>
22399            </description>
22400             <version>
22401  2.0
22402             </version>
22403         </descriptive>
22404         <Type name="PersonId" nullable="nullable"/>
22405       </Attribute>
22406       <Attribute readonly="readonly" name="addressBookId" id="::Contact::Contact::addressBookId">
22407         <webidl>    readonly attribute <ref>AddressBookId</ref>? addressBookId;</webidl>
22408         <descriptive>
22409             <brief>
22410  The identifier of the address book that corresponds to the raw contact.
22411 By default, this attribute is set to <var>null</var>.
22412             </brief>
22413             <version>
22414  2.0
22415             </version>
22416         </descriptive>
22417         <Type name="AddressBookId" nullable="nullable"/>
22418       </Attribute>
22419       <Attribute readonly="readonly" name="lastUpdated" id="::Contact::Contact::lastUpdated">
22420         <webidl>    readonly attribute Date? lastUpdated;</webidl>
22421         <descriptive>
22422             <brief>
22423  The timestamp for the last update of a contact.
22424             </brief>
22425            <description>
22426             <p>
22427 Specifies revision information about the contact.
22428             </p>
22429             <p>
22430 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.
22431 For more details, see RFC 2426, Section 3.6.4.
22432             </p>
22433            </description>
22434             <version>
22435  1.0
22436             </version>
22437         </descriptive>
22438         <Type type="Date" nullable="nullable"/>
22439       </Attribute>
22440       <Attribute readonly="readonly" name="isFavorite" id="::Contact::Contact::isFavorite">
22441         <webidl>    readonly attribute boolean isFavorite;</webidl>
22442         <descriptive>
22443             <brief>
22444  An attribute to indicate whether a contact is favorite or not.
22445             </brief>
22446            <description>
22447             <p>
22448 This value is associated with the <em>isFavorite</em> attribute of Person that this contact indicates.
22449             </p>
22450             <p>
22451 By default, this attribute is set to <var>false</var>.
22452             </p>
22453            </description>
22454             <version>
22455  1.0
22456             </version>
22457             <Code>   if (contact.isFavorite) {
22458      // ...
22459    }
22460  </Code>
22461         </descriptive>
22462         <Type type="boolean"/>
22463       </Attribute>
22464       <Attribute name="name" id="::Contact::Contact::name">
22465         <webidl>    attribute <ref>ContactName</ref>? name setraises(<ref>WebAPIException</ref>);</webidl>
22466         <descriptive>
22467             <brief>
22468  An attribute to store the name of a contact.
22469             </brief>
22470             <version>
22471  1.0
22472             </version>
22473         </descriptive>
22474         <Type name="ContactName" nullable="nullable"/>
22475         <SetRaises>
22476           <RaiseException name="WebAPIException"/>
22477         </SetRaises>
22478       </Attribute>
22479       <Attribute name="addresses" id="::Contact::Contact::addresses">
22480         <webidl>    attribute <ref>ContactAddress</ref>[] addresses setraises(<ref>WebAPIException</ref>);</webidl>
22481         <descriptive>
22482             <brief>
22483  The contact addresses.
22484             </brief>
22485            <description>
22486             <p>
22487 By default, this attribute is set to an empty array.
22488             </p>
22489            </description>
22490             <version>
22491  1.0
22492             </version>
22493             <Code> var contactInit = {};
22494  var contactAddr = new tizen.ContactAddres({streetAddress:'Gran Via, 32',
22495                                             postalCode:'50013',
22496                                                   city:'Zaragoza',
22497                                                   country:'ES'});
22498  contactInit.addresses = [contactAddr];
22499  </Code>
22500         </descriptive>
22501         <Type type="array">
22502           <Type name="ContactAddress"/>
22503         </Type>
22504         <SetRaises>
22505           <RaiseException name="WebAPIException"/>
22506         </SetRaises>
22507       </Attribute>
22508       <Attribute name="photoURI" id="::Contact::Contact::photoURI">
22509         <webidl>    attribute DOMString? photoURI setraises(<ref>WebAPIException</ref>);</webidl>
22510         <descriptive>
22511             <brief>
22512  The URI to the picture of the contact.
22513             </brief>
22514            <description>
22515             <p>
22516 This attribute is used to store a URI that points to an image that can represent the
22517 contact object. This attribute only contains a local file URI.
22518 See RFC 2426, Section 3.1.4.
22519             </p>
22520             <p>
22521 By default, this attribute is set to <var>null</var>.
22522             </p>
22523            </description>
22524             <version>
22525  1.0
22526             </version>
22527             <Code>  var contactInit = {};
22528   contactInit.photoURI = 'file:///opt/media/Downloads/mypicture.jpg';
22529  </Code>
22530         </descriptive>
22531         <Type type="DOMString" nullable="nullable"/>
22532         <SetRaises>
22533           <RaiseException name="WebAPIException"/>
22534         </SetRaises>
22535       </Attribute>
22536       <Attribute name="phoneNumbers" id="::Contact::Contact::phoneNumbers">
22537         <webidl>    attribute <ref>ContactPhoneNumber</ref>[] phoneNumbers setraises(<ref>WebAPIException</ref>);</webidl>
22538         <descriptive>
22539             <brief>
22540  The telephone numbers of the contact.
22541             </brief>
22542            <description>
22543             <p>
22544 By default, this attribute is set to empty array.
22545             </p>
22546            </description>
22547             <version>
22548  1.0
22549             </version>
22550             <Code>   var contactInit = {};
22551    var phoneNumber = new tizen.ContactPhoneNumber('123456789');
22552    contactInit.phoneNumbers = [phoneNumber];
22553  </Code>
22554         </descriptive>
22555         <Type type="array">
22556           <Type name="ContactPhoneNumber"/>
22557         </Type>
22558         <SetRaises>
22559           <RaiseException name="WebAPIException"/>
22560         </SetRaises>
22561       </Attribute>
22562       <Attribute name="emails" id="::Contact::Contact::emails">
22563         <webidl>    attribute <ref>ContactEmailAddress</ref>[] emails setraises(<ref>WebAPIException</ref>);</webidl>
22564         <descriptive>
22565             <brief>
22566  The email addresses of the contact.
22567             </brief>
22568            <description>
22569             <p>
22570 By default, this attribute is set to empty array.
22571             </p>
22572            </description>
22573             <version>
22574  1.0
22575             </version>
22576             <Code>   var contactInit = {};
22577    var email = new tizen.ContactEmailAddress('deedee@ramones.com');
22578    contactInit.emails = [email];
22579  </Code>
22580         </descriptive>
22581         <Type type="array">
22582           <Type name="ContactEmailAddress"/>
22583         </Type>
22584         <SetRaises>
22585           <RaiseException name="WebAPIException"/>
22586         </SetRaises>
22587       </Attribute>
22588       <Attribute name="birthday" id="::Contact::Contact::birthday">
22589         <webidl>    attribute Date? birthday setraises(<ref>WebAPIException</ref>);</webidl>
22590         <descriptive>
22591             <brief>
22592  The birthday of the contact.
22593             </brief>
22594            <description>
22595             <p>
22596 Defines specify the birthday of the contact (see RFC 2426 -
22597 Section 3.1.5).
22598             </p>
22599             <p>
22600 By default, this attribute is set to <var>null</var>.
22601             </p>
22602            </description>
22603             <version>
22604  1.0
22605             </version>
22606             <Code>   var contactInit = {};
22607    contactInit.birthday = new Date(1996, 4, 15);
22608  </Code>
22609         </descriptive>
22610         <Type type="Date" nullable="nullable"/>
22611         <SetRaises>
22612           <RaiseException name="WebAPIException"/>
22613         </SetRaises>
22614       </Attribute>
22615       <Attribute name="anniversaries" id="::Contact::Contact::anniversaries">
22616         <webidl>    attribute <ref>ContactAnniversary</ref>[] anniversaries setraises(<ref>WebAPIException</ref>);</webidl>
22617         <descriptive>
22618             <brief>
22619  The list of anniversaries for the contact.
22620             </brief>
22621            <description>
22622             <p>
22623 Defines specify arbitrary anniversaries for the contact (in addition to the birthday).
22624             </p>
22625             <p>
22626 By default, this attribute is set to empty array.
22627             </p>
22628            </description>
22629             <version>
22630  1.0
22631             </version>
22632             <Code>   var contactInit = {};
22633    var marriage_anniv = new tizen.ContactAnniversary(new Date(1976, 11, 2), 'Marriage');
22634    contactInit.anniversaries = [marriage_anniv];
22635  </Code>
22636         </descriptive>
22637         <Type type="array">
22638           <Type name="ContactAnniversary"/>
22639         </Type>
22640         <SetRaises>
22641           <RaiseException name="WebAPIException"/>
22642         </SetRaises>
22643       </Attribute>
22644       <Attribute name="organizations" id="::Contact::Contact::organizations">
22645         <webidl>    attribute <ref>ContactOrganization</ref>[] organizations setraises(<ref>WebAPIException</ref>);</webidl>
22646         <descriptive>
22647             <brief>
22648  The organizations the contact belongs to.
22649             </brief>
22650            <description>
22651             <p>
22652 Contains information related to the contact's company or organization.
22653             </p>
22654             <p>
22655 For more details, see RFC 2426, Section 3.5.
22656             </p>
22657            </description>
22658             <version>
22659  1.0
22660             </version>
22661         </descriptive>
22662         <Type type="array">
22663           <Type name="ContactOrganization"/>
22664         </Type>
22665         <SetRaises>
22666           <RaiseException name="WebAPIException"/>
22667         </SetRaises>
22668       </Attribute>
22669       <Attribute name="notes" id="::Contact::Contact::notes">
22670         <webidl>    attribute DOMString[] notes setraises(<ref>WebAPIException</ref>);</webidl>
22671         <descriptive>
22672             <brief>
22673  The notes associated to the contact.
22674             </brief>
22675            <description>
22676             <p>
22677 To specify supplemental information or a comment related to the contact.
22678             </p>
22679             <p>
22680 For more details, see RFC 2426, Section 3.6.2.
22681             </p>
22682            </description>
22683             <version>
22684  2.0
22685             </version>
22686         </descriptive>
22687         <Type type="array">
22688           <Type type="DOMString"/>
22689         </Type>
22690         <SetRaises>
22691           <RaiseException name="WebAPIException"/>
22692         </SetRaises>
22693       </Attribute>
22694       <Attribute name="urls" id="::Contact::Contact::urls">
22695         <webidl>    attribute <ref>ContactWebSite</ref>[] urls setraises(<ref>WebAPIException</ref>);</webidl>
22696         <descriptive>
22697             <brief>
22698  The URLs associated to the contact.
22699             </brief>
22700            <description>
22701             <p>
22702 By default, this attribute is initialized to an empty array.
22703             </p>
22704             <p>
22705 In case multiple URLs are available, the first one is the default one.
22706 For more details, see RFC 2426, Section 3.6.8.
22707             </p>
22708            </description>
22709             <version>
22710  1.0
22711             </version>
22712         </descriptive>
22713         <Type type="array">
22714           <Type name="ContactWebSite"/>
22715         </Type>
22716         <SetRaises>
22717           <RaiseException name="WebAPIException"/>
22718         </SetRaises>
22719       </Attribute>
22720       <Attribute name="ringtoneURI" id="::Contact::Contact::ringtoneURI">
22721         <webidl>    attribute DOMString? ringtoneURI setraises(<ref>WebAPIException</ref>);</webidl>
22722         <descriptive>
22723             <brief>
22724  The URI to the custom ringtone for the contact.
22725             </brief>
22726            <description>
22727             <p>
22728 To specify a custom ringtone for the contact.
22729             </p>
22730             <p>
22731 By default, this attribute is initialized to <var>null</var>.
22732 This attribute only contains a local file URI scheme;
22733 For more details, see RFC 2426, Section 3.6.6.
22734             </p>
22735            </description>
22736             <version>
22737  1.0
22738             </version>
22739         </descriptive>
22740         <Type type="DOMString" nullable="nullable"/>
22741         <SetRaises>
22742           <RaiseException name="WebAPIException"/>
22743         </SetRaises>
22744       </Attribute>
22745       <Attribute name="groupIds" id="::Contact::Contact::groupIds">
22746         <webidl>    attribute <ref>ContactGroupId</ref>[] groupIds setraises(<ref>WebAPIException</ref>);</webidl>
22747         <descriptive>
22748             <brief>
22749  The groups the contact belongs to.
22750             </brief>
22751            <description>
22752             <p>
22753 To associate groups to the contact.
22754             </p>
22755             <p>
22756 By default, this attribute is initialized to an empty array.
22757             </p>
22758             <p>
22759 In a case where multiple categories are available, the first one is the default one.
22760 See RFC 2426, Section 3.6.1.
22761             </p>
22762            </description>
22763             <version>
22764  2.0
22765             </version>
22766         </descriptive>
22767         <Type type="array">
22768           <Type name="ContactGroupId"/>
22769         </Type>
22770         <SetRaises>
22771           <RaiseException name="WebAPIException"/>
22772         </SetRaises>
22773       </Attribute>
22774       <Operation name="convertToString" id="::Contact::Contact::convertToString">
22775         <webidl>    DOMString convertToString(optional <ref>ContactTextFormat</ref>? format) raises(<ref>WebAPIException</ref>);</webidl>
22776         <descriptive>
22777             <brief>
22778  Converts the Contact item to a string format.
22779             </brief>
22780            <description>
22781             <p>
22782 A textual representation for the contact will be generated and returned synchronously.
22783 The export format is set via the format parameter.
22784             </p>
22785            </description>
22786             <version>
22787  1.0
22788             </version>
22789             <Code>  var addressbook;
22790
22791   // Define the error callback.
22792   function errorCB(err) {
22793     console.log( 'The following error occurred: ' +  err.name);
22794   }
22795
22796   // Define the contact find success callback.
22797   function contactsFoundCB(contacts) {
22798     try {
22799       // Convert the first contact to vCard 3.0 format
22800       var vcard = contacts[0].convertToString(&quot;VCARD_30&quot;);
22801       console.log('textual representation of the contact is: ' + vcard);
22802     } catch (err) {
22803       console.log( 'The following error occurred while converting: ' +  err.name);
22804     }
22805   }
22806
22807   // Get the default address book
22808   addressbook = tizen.contact.getDefaultAddressBook();
22809
22810   // Find all contact in the address book whose first name contains the string 'Chris'.
22811   var filter = new tizen.AttributeFilter('firstName', 'CONTAINS', 'Chris');
22812   try {
22813     addressbook.find(contactsFoundCB, errorCB, filter);
22814   } catch (err) {
22815     console.log( 'The following error occurred while finding: ' +  err.name);
22816   }
22817  </Code>
22818         </descriptive>
22819         <Type type="DOMString">
22820           <descriptive>
22821               <description><p>
22822  DOMString The string representation of the Contact item.
22823               </p></description>
22824           </descriptive>
22825         </Type>
22826         <ArgumentList>
22827           <Argument optional="optional" name="format">
22828             <descriptive>
22829                 <description><p>
22830  Format to use for export. If this value is <var>null</var> or empty, it converts to platform default format.
22831                 </p></description>
22832             </descriptive>
22833             <Type name="ContactTextFormat" nullable="nullable"/>
22834           </Argument>
22835         </ArgumentList>
22836         <Raises>
22837           <RaiseException name="WebAPIException">
22838             <descriptive>
22839                 <description><p>
22840  with error type TypeMismatchError, if any input parameter
22841 is not compatible with the expected type for that parameter.
22842                 </p></description>
22843                 <description><p>
22844  with error type SecurityError, if the functionality
22845 is not allowed.
22846                 </p></description>
22847                 <description><p>
22848  with error type NotSupportedError, if the feature
22849 is not supported.
22850                 </p></description>
22851                 <description><p>
22852  with error type UnknownError in any other error case.
22853                 </p></description>
22854             </descriptive>
22855           </RaiseException>
22856         </Raises>
22857       </Operation>
22858       <Operation name="clone" id="::Contact::Contact::clone">
22859         <webidl>    <ref>Contact</ref> clone() raises(<ref>WebAPIException</ref>);</webidl>
22860         <descriptive>
22861            <description>
22862             <p>
22863 Creates a clone of the Contact object, detached from any address book.
22864             </p>
22865             <p>
22866 The Contact object returned by the <var>clone()</var> method will have its identifier
22867 set to <var>null</var> and will be detached from any address book.
22868             </p>
22869            </description>
22870             <version>
22871  1.0
22872             </version>
22873             <Code>  // Get default address book.
22874   var addressbook = tizen.contact.getDefaultAddressBook();
22875
22876   var bob = new tizen.Contact();
22877   bob.name = new tizen.ContactName({firstName:'Bob',
22878                                     lastName:'Smith'});
22879   addressbook.add(bob);
22880   var alice = bob.clone();
22881   contact.name.firstName = &quot;Alice&quot;; // Bob's wife
22882   addressbook.add(alice);
22883  </Code>
22884         </descriptive>
22885         <Type name="Contact">
22886           <descriptive>
22887               <description><p>
22888  Contact A new clone of the Contact object.
22889               </p></description>
22890           </descriptive>
22891         </Type>
22892         <ArgumentList/>
22893         <Raises>
22894           <RaiseException name="WebAPIException">
22895             <descriptive>
22896                 <description><p>
22897  with error type SecurityError, if the functionality
22898 is not allowed.
22899                 </p></description>
22900                 <description><p>
22901  with error type NotSupportedError, if the feature
22902 is not supported.
22903                 </p></description>
22904                 <description><p>
22905  with error type UnknownError in any other error case.
22906                 </p></description>
22907             </descriptive>
22908           </RaiseException>
22909         </Raises>
22910       </Operation>
22911     </Interface>
22912     <Interface name="ContactRef" id="::Contact::ContactRef">
22913       <webidl>  [Constructor(<ref>AddressBookId</ref> addressBookId, <ref>ContactId</ref> contactId)]
22914   interface ContactRef {
22915     attribute <ref>AddressBookId</ref> addressBookId;
22916
22917     attribute <ref>ContactId</ref> contactId;
22918   };</webidl>
22919       <descriptive>
22920           <brief>
22921  The fully-defined contact reference.
22922           </brief>
22923          <description>
22924           <p>
22925 It contains both the identifier of the address book which the contact is in, and
22926 the contact identifier within this address book.
22927           </p>
22928           <p>
22929 This interface is used by other APIs to uniquely and globally identify contacts.
22930           </p>
22931          </description>
22932           <version>
22933  1.0
22934           </version>
22935       </descriptive>
22936       <ExtendedAttributeList>
22937         <ExtendedAttribute name="Constructor">
22938           <webidl>Constructor(<ref>AddressBookId</ref> addressBookId, <ref>ContactId</ref> contactId)</webidl>
22939           <ArgumentList>
22940             <Argument name="addressBookId">
22941               <Type name="AddressBookId"/>
22942             </Argument>
22943             <Argument name="contactId">
22944               <Type name="ContactId"/>
22945             </Argument>
22946           </ArgumentList>
22947         </ExtendedAttribute>
22948       </ExtendedAttributeList>
22949       <Attribute name="addressBookId" id="::Contact::ContactRef::addressBookId">
22950         <webidl>    attribute <ref>AddressBookId</ref> addressBookId;</webidl>
22951         <descriptive>
22952             <brief>
22953  The address book identifier.
22954             </brief>
22955             <version>
22956  1.0
22957             </version>
22958         </descriptive>
22959         <Type name="AddressBookId"/>
22960       </Attribute>
22961       <Attribute name="contactId" id="::Contact::ContactRef::contactId">
22962         <webidl>    attribute <ref>ContactId</ref> contactId;</webidl>
22963         <descriptive>
22964             <brief>
22965  The contact identifier inside the address book.
22966             </brief>
22967             <version>
22968  1.0
22969             </version>
22970         </descriptive>
22971         <Type name="ContactId"/>
22972       </Attribute>
22973     </Interface>
22974     <Dictionary name="ContactNameInit" id="::Contact::ContactNameInit">
22975       <webidl>  dictionary ContactNameInit {
22976     DOMString prefix;
22977     DOMString suffix;
22978     DOMString firstName;
22979     DOMString middleName;
22980     DOMString lastName;
22981     DOMString[] nicknames;
22982     DOMString phoneticFirstName;
22983     DOMString phoneticLastName;
22984   };</webidl>
22985       <descriptive>
22986           <brief>
22987  The properties of a ContactName, to pass to the ContactName constructor.
22988           </brief>
22989          <description>
22990           <p>
22991 See ContactName interface for more information about the members.
22992           </p>
22993          </description>
22994           <version>
22995  1.0
22996           </version>
22997       </descriptive>
22998       <DictionaryMember name="prefix" id="::Contact::ContactNameInit::prefix">
22999         <webidl>    DOMString prefix;</webidl>
23000         <Type type="DOMString"/>
23001       </DictionaryMember>
23002       <DictionaryMember name="suffix" id="::Contact::ContactNameInit::suffix">
23003         <webidl>    DOMString suffix;</webidl>
23004         <Type type="DOMString"/>
23005       </DictionaryMember>
23006       <DictionaryMember name="firstName" id="::Contact::ContactNameInit::firstName">
23007         <webidl>    DOMString firstName;</webidl>
23008         <Type type="DOMString"/>
23009       </DictionaryMember>
23010       <DictionaryMember name="middleName" id="::Contact::ContactNameInit::middleName">
23011         <webidl>    DOMString middleName;</webidl>
23012         <Type type="DOMString"/>
23013       </DictionaryMember>
23014       <DictionaryMember name="lastName" id="::Contact::ContactNameInit::lastName">
23015         <webidl>    DOMString lastName;</webidl>
23016         <Type type="DOMString"/>
23017       </DictionaryMember>
23018       <DictionaryMember name="nicknames" id="::Contact::ContactNameInit::nicknames">
23019         <webidl>    DOMString[] nicknames;</webidl>
23020         <Type type="array">
23021           <Type type="DOMString"/>
23022         </Type>
23023       </DictionaryMember>
23024       <DictionaryMember name="phoneticFirstName" id="::Contact::ContactNameInit::phoneticFirstName">
23025         <webidl>    DOMString phoneticFirstName;</webidl>
23026         <Type type="DOMString"/>
23027       </DictionaryMember>
23028       <DictionaryMember name="phoneticLastName" id="::Contact::ContactNameInit::phoneticLastName">
23029         <webidl>    DOMString phoneticLastName;</webidl>
23030         <Type type="DOMString"/>
23031       </DictionaryMember>
23032     </Dictionary>
23033     <Interface name="ContactName" id="::Contact::ContactName">
23034       <webidl>  [Constructor(optional <ref>ContactNameInit</ref>? nameInitDict)]
23035   interface ContactName {
23036     attribute DOMString? prefix;
23037
23038     attribute DOMString? suffix;
23039
23040     attribute DOMString? firstName;
23041
23042     attribute DOMString? middleName;
23043
23044     attribute DOMString? lastName;
23045
23046     attribute DOMString[] nicknames;
23047
23048     attribute DOMString? phoneticFirstName;
23049
23050     attribute DOMString? phoneticLastName;
23051
23052     readonly attribute DOMString? displayName;
23053   };</webidl>
23054       <descriptive>
23055           <brief>
23056  This interface contains all information related to a contact name.
23057           </brief>
23058           <version>
23059  1.0
23060           </version>
23061       </descriptive>
23062       <ExtendedAttributeList>
23063         <ExtendedAttribute name="Constructor">
23064           <webidl>Constructor(optional <ref>ContactNameInit</ref>? nameInitDict)</webidl>
23065           <ArgumentList>
23066             <Argument optional="optional" name="nameInitDict">
23067               <Type name="ContactNameInit" nullable="nullable"/>
23068             </Argument>
23069           </ArgumentList>
23070         </ExtendedAttribute>
23071       </ExtendedAttributeList>
23072       <Attribute name="prefix" id="::Contact::ContactName::prefix">
23073         <webidl>    attribute DOMString? prefix;</webidl>
23074         <descriptive>
23075             <brief>
23076  The name prefix of a contact.
23077             </brief>
23078            <description>
23079             <p>
23080 By default, this attribute is initialized to
23081 <var>null</var>. See also RFC 2426, Section 3.1.1.
23082             </p>
23083            </description>
23084             <version>
23085  1.0
23086             </version>
23087             <Code>   contact.name.prefix = &quot;Dr.&quot;;
23088  </Code>
23089         </descriptive>
23090         <Type type="DOMString" nullable="nullable"/>
23091       </Attribute>
23092       <Attribute name="suffix" id="::Contact::ContactName::suffix">
23093         <webidl>    attribute DOMString? suffix;</webidl>
23094         <descriptive>
23095             <brief>
23096  The name suffix of a contact.
23097             </brief>
23098            <description>
23099             <p>
23100 By default, this attribute is initialized to
23101 <var>null</var>. See also RFC 2426, Section 3.1.1.
23102             </p>
23103            </description>
23104             <version>
23105  2.0
23106             </version>
23107             <Code>   contact.name.suffix = &quot;Jr.&quot;;
23108  </Code>
23109         </descriptive>
23110         <Type type="DOMString" nullable="nullable"/>
23111       </Attribute>
23112       <Attribute name="firstName" id="::Contact::ContactName::firstName">
23113         <webidl>    attribute DOMString? firstName;</webidl>
23114         <descriptive>
23115             <brief>
23116  The first (given) name of a contact.
23117             </brief>
23118            <description>
23119             <p>
23120 By default, this attribute is initialized to
23121 <var>null</var>. See also RFC 2426, Section 3.1.1.
23122             </p>
23123            </description>
23124             <version>
23125  1.0
23126             </version>
23127             <Code>   contact.name.firstName = 'Douglas';
23128  </Code>
23129         </descriptive>
23130         <Type type="DOMString" nullable="nullable"/>
23131       </Attribute>
23132       <Attribute name="middleName" id="::Contact::ContactName::middleName">
23133         <webidl>    attribute DOMString? middleName;</webidl>
23134         <descriptive>
23135             <brief>
23136  The middle name of a contact.
23137             </brief>
23138            <description>
23139             <p>
23140 By default, this attribute is initialized to
23141 <var>null</var>. See also RFC 2426, Section 3.1.1.
23142             </p>
23143            </description>
23144             <version>
23145  1.0
23146             </version>
23147             <Code>   contact.name.middleName = 'Glenn';
23148  </Code>
23149         </descriptive>
23150         <Type type="DOMString" nullable="nullable"/>
23151       </Attribute>
23152       <Attribute name="lastName" id="::Contact::ContactName::lastName">
23153         <webidl>    attribute DOMString? lastName;</webidl>
23154         <descriptive>
23155             <brief>
23156  The last (family) name of a contact.
23157             </brief>
23158            <description>
23159             <p>
23160 By default, this attribute is initialized to
23161 <var>null</var>. See also RFC 2426, Section 3.1.1.
23162             </p>
23163            </description>
23164             <version>
23165  1.0
23166             </version>
23167             <Code>   contact.name.lastName = 'Colvin';
23168  </Code>
23169         </descriptive>
23170         <Type type="DOMString" nullable="nullable"/>
23171       </Attribute>
23172       <Attribute name="nicknames" id="::Contact::ContactName::nicknames">
23173         <webidl>    attribute DOMString[] nicknames;</webidl>
23174         <descriptive>
23175             <brief>
23176  The nicknames of a contact.
23177             </brief>
23178            <description>
23179             <p>
23180 The nickname is a name used instead of, or in addition to, the given name of a contact,
23181 place, or thing. It can also be used to specify a familiar form of a proper name.
23182             </p>
23183             <p>
23184 By default, this attribute is initialized to an empty array.
23185             </p>
23186             <p>
23187 In case multiple nicknames are available the first one is the default.
23188 See RFC 2426, Section 3.1.3.
23189             </p>
23190            </description>
23191             <version>
23192  1.0
23193             </version>
23194             <Code>   contact.name.nickNames = ['Dee Dee'];
23195  </Code>
23196         </descriptive>
23197         <Type type="array">
23198           <Type type="DOMString"/>
23199         </Type>
23200       </Attribute>
23201       <Attribute name="phoneticFirstName" id="::Contact::ContactName::phoneticFirstName">
23202         <webidl>    attribute DOMString? phoneticFirstName;</webidl>
23203         <descriptive>
23204             <brief>
23205  The phonetic first name of a contact.
23206             </brief>
23207            <description>
23208             <p>
23209 Describes how the first name should be
23210 pronounced. This is very important in
23211 some languages, such as Japanese, because the
23212 same 'Kanji' may have several pronunciations.
23213             </p>
23214             <p>
23215 By default, this attribute is set to <var>null</var>.
23216             </p>
23217            </description>
23218             <version>
23219  2.0
23220             </version>
23221         </descriptive>
23222         <Type type="DOMString" nullable="nullable"/>
23223       </Attribute>
23224       <Attribute name="phoneticLastName" id="::Contact::ContactName::phoneticLastName">
23225         <webidl>    attribute DOMString? phoneticLastName;</webidl>
23226         <descriptive>
23227             <brief>
23228  The phonetic last name of a contact.
23229             </brief>
23230            <description>
23231             <p>
23232 Describes how the last name should be
23233 pronounced. This is very important in
23234 some languages, such as Japanese, because the
23235 same 'Kanji' may have several pronunciations.
23236             </p>
23237             <p>
23238 By default, this attribute is set to <var>null</var>.
23239             </p>
23240            </description>
23241             <version>
23242  2.0
23243             </version>
23244         </descriptive>
23245         <Type type="DOMString" nullable="nullable"/>
23246       </Attribute>
23247       <Attribute readonly="readonly" name="displayName" id="::Contact::ContactName::displayName">
23248         <webidl>    readonly attribute DOMString? displayName;</webidl>
23249         <descriptive>
23250             <brief>
23251  The display name of a contact.
23252             </brief>
23253            <description>
23254             <p>
23255 The string which can be displayed to identify the contact. It is composed of the first
23256 and last names if available, otherwise, it will fall back to the most adequate
23257 field available to identify the contact (such as nickname).
23258             </p>
23259             <p>
23260 By default, this attribute is set to <var>null</var>. Initially, once a contact is added to an address book, this value is composed.
23261             </p>
23262            </description>
23263             <version>
23264  1.0
23265             </version>
23266         </descriptive>
23267         <Type type="DOMString" nullable="nullable"/>
23268       </Attribute>
23269     </Interface>
23270     <Dictionary name="ContactOrganizationInit" id="::Contact::ContactOrganizationInit">
23271       <webidl>  dictionary ContactOrganizationInit {
23272     DOMString name;
23273     DOMString department;
23274     DOMString title;
23275     DOMString role;
23276     DOMString logoURI;
23277   };</webidl>
23278       <descriptive>
23279           <brief>
23280  The properties of a ContactOrganization, to pass to the ContactOrganization constructor.
23281           </brief>
23282          <description>
23283           <p>
23284 See ContactOrganization interface for information about members.
23285           </p>
23286          </description>
23287           <version>
23288  1.0
23289           </version>
23290       </descriptive>
23291       <DictionaryMember name="name" id="::Contact::ContactOrganizationInit::name">
23292         <webidl>    DOMString name;</webidl>
23293         <Type type="DOMString"/>
23294       </DictionaryMember>
23295       <DictionaryMember name="department" id="::Contact::ContactOrganizationInit::department">
23296         <webidl>    DOMString department;</webidl>
23297         <Type type="DOMString"/>
23298       </DictionaryMember>
23299       <DictionaryMember name="title" id="::Contact::ContactOrganizationInit::title">
23300         <webidl>    DOMString title;</webidl>
23301         <Type type="DOMString"/>
23302       </DictionaryMember>
23303       <DictionaryMember name="role" id="::Contact::ContactOrganizationInit::role">
23304         <webidl>    DOMString role;</webidl>
23305         <Type type="DOMString"/>
23306       </DictionaryMember>
23307       <DictionaryMember name="logoURI" id="::Contact::ContactOrganizationInit::logoURI">
23308         <webidl>    DOMString logoURI;</webidl>
23309         <Type type="DOMString"/>
23310       </DictionaryMember>
23311     </Dictionary>
23312     <Interface name="ContactOrganization" id="::Contact::ContactOrganization">
23313       <webidl>  [Constructor(optional <ref>ContactOrganizationInit</ref>? orgInitDict)]
23314   interface ContactOrganization {
23315     attribute DOMString? name;
23316
23317     attribute DOMString? department;
23318
23319     attribute DOMString? title;
23320
23321     attribute DOMString? role;
23322
23323     attribute DOMString? logoURI;
23324   };</webidl>
23325       <descriptive>
23326           <brief>
23327  This interface contains the information about the organization or
23328 company that a contact belongs to.
23329           </brief>
23330          <description>
23331           <p>
23332 By default, each of the attributes of this interface are <var>null</var>.
23333           </p>
23334           <p>
23335 For more details, see RFC 2426, Section 3.5.
23336           </p>
23337          </description>
23338           <version>
23339  1.0
23340           </version>
23341           <Code> var organization = new tizen.ContactOrganization({name: &quot;Intel&quot;, role: &quot;SW Engineer&quot;});
23342  </Code>
23343       </descriptive>
23344       <ExtendedAttributeList>
23345         <ExtendedAttribute name="Constructor">
23346           <webidl>Constructor(optional <ref>ContactOrganizationInit</ref>? orgInitDict)</webidl>
23347           <ArgumentList>
23348             <Argument optional="optional" name="orgInitDict">
23349               <Type name="ContactOrganizationInit" nullable="nullable"/>
23350             </Argument>
23351           </ArgumentList>
23352         </ExtendedAttribute>
23353       </ExtendedAttributeList>
23354       <Attribute name="name" id="::Contact::ContactOrganization::name">
23355         <webidl>    attribute DOMString? name;</webidl>
23356         <descriptive>
23357             <brief>
23358  The name of an organization.
23359             </brief>
23360            <description>
23361             <p>
23362 For more details, see RFC 2426, Section 3.5.5.
23363             </p>
23364            </description>
23365             <version>
23366  1.0
23367             </version>
23368         </descriptive>
23369         <Type type="DOMString" nullable="nullable"/>
23370       </Attribute>
23371       <Attribute name="department" id="::Contact::ContactOrganization::department">
23372         <webidl>    attribute DOMString? department;</webidl>
23373         <descriptive>
23374             <brief>
23375  The organizational unit name.
23376             </brief>
23377            <description>
23378             <p>
23379 For more details, see RFC 2426, Section 3.5.5.
23380             </p>
23381            </description>
23382             <version>
23383  1.0
23384             </version>
23385         </descriptive>
23386         <Type type="DOMString" nullable="nullable"/>
23387       </Attribute>
23388       <Attribute name="title" id="::Contact::ContactOrganization::title">
23389         <webidl>    attribute DOMString? title;</webidl>
23390         <descriptive>
23391             <brief>
23392  The job title.
23393             </brief>
23394            <description>
23395             <p>
23396 To specify the job title, functional position or function (such as 'Director,
23397 Research and Development').
23398             </p>
23399             <p>
23400 For more details, see RFC 2426, Section 3.5.1.
23401             </p>
23402            </description>
23403             <version>
23404  1.0
23405             </version>
23406         </descriptive>
23407         <Type type="DOMString" nullable="nullable"/>
23408       </Attribute>
23409       <Attribute name="role" id="::Contact::ContactOrganization::role">
23410         <webidl>    attribute DOMString? role;</webidl>
23411         <descriptive>
23412             <brief>
23413  An attribute to store the role, occupation, or business category
23414 (such as 'Programmer').
23415             </brief>
23416            <description>
23417             <p>
23418 For more details, see RFC 2426, Section 3.5.2.
23419             </p>
23420            </description>
23421             <version>
23422  1.0
23423             </version>
23424         </descriptive>
23425         <Type type="DOMString" nullable="nullable"/>
23426       </Attribute>
23427       <Attribute name="logoURI" id="::Contact::ContactOrganization::logoURI">
23428         <webidl>    attribute DOMString? logoURI;</webidl>
23429         <descriptive>
23430             <brief>
23431  The URI to the logo of a company.
23432             </brief>
23433            <description>
23434             <p>
23435 To specify a graphic image of a logo associated with an organization.
23436 This attribute only contains file URI Scheme;
23437 remote pictures could be loaded to local with Download API.
23438 For more details, see RFC 2426, Section 3.5.3.
23439             </p>
23440            </description>
23441             <version>
23442  1.0
23443             </version>
23444         </descriptive>
23445         <Type type="DOMString" nullable="nullable"/>
23446       </Attribute>
23447     </Interface>
23448     <Interface name="ContactWebSite" id="::Contact::ContactWebSite">
23449       <webidl>  [Constructor(DOMString url, optional DOMString type)]
23450   interface ContactWebSite
23451   {
23452     attribute DOMString url;
23453
23454     attribute DOMString type;
23455   };</webidl>
23456       <descriptive>
23457           <brief>
23458  The ContactWebSite object that contains the URL and the type of web site.
23459           </brief>
23460          <description>
23461           <p>
23462 For more details, see RFC 2426, Section 3.6.8.
23463           </p>
23464          </description>
23465           <version>
23466  1.0
23467           </version>
23468           <Code>  var contactInit = {}
23469   var blog = new tizen.ContactWebSite('http://www.domain.com', 'BLOG');
23470   contactInit.urls = [blog];
23471  </Code>
23472       </descriptive>
23473       <ExtendedAttributeList>
23474         <ExtendedAttribute name="Constructor">
23475           <webidl>Constructor(DOMString url, optional DOMString type)</webidl>
23476           <ArgumentList>
23477             <Argument name="url">
23478               <Type type="DOMString"/>
23479             </Argument>
23480             <Argument optional="optional" name="type">
23481               <Type type="DOMString"/>
23482             </Argument>
23483           </ArgumentList>
23484         </ExtendedAttribute>
23485       </ExtendedAttributeList>
23486       <Attribute name="url" id="::Contact::ContactWebSite::url">
23487         <webidl>    attribute DOMString url;</webidl>
23488         <descriptive>
23489             <brief>
23490  The URL for the contact's web site.
23491             </brief>
23492             <version>
23493  1.0
23494             </version>
23495         </descriptive>
23496         <Type type="DOMString"/>
23497       </Attribute>
23498       <Attribute name="type" id="::Contact::ContactWebSite::type">
23499         <webidl>    attribute DOMString type;</webidl>
23500         <descriptive>
23501             <brief>
23502  The type of web site.
23503             </brief>
23504            <description>
23505             <p>
23506 At least the following values must be supported:
23507             </p>
23508             <ul>
23509               <li>
23510 HOMEPAGE - Indicates a home page.              </li>
23511               <li>
23512 BLOG - Indicates a blog.              </li>
23513             </ul>
23514             <p>
23515 By default, this attribute is set to HOMEPAGE.
23516             </p>
23517            </description>
23518             <version>
23519  1.0
23520             </version>
23521         </descriptive>
23522         <Type type="DOMString"/>
23523       </Attribute>
23524     </Interface>
23525     <Interface name="ContactAnniversary" id="::Contact::ContactAnniversary">
23526       <webidl>  [Constructor(Date date, optional DOMString? label)]
23527   interface ContactAnniversary
23528   {
23529     attribute Date date;
23530
23531     attribute DOMString? label;
23532   };</webidl>
23533       <descriptive>
23534           <brief>
23535  This interface implements the <em>ContactAnniversary </em>object that contains the date and description of an anniversary.
23536           </brief>
23537           <version>
23538  1.0
23539           </version>
23540           <Code>  var contactInit = {}
23541   var marriage_anniv = new tizen.ContactAnniversary(new Date(1976, 11, 2), 'Marriage');
23542   contactInit.anniversaries = [marriage_anniv];
23543  </Code>
23544       </descriptive>
23545       <ExtendedAttributeList>
23546         <ExtendedAttribute name="Constructor">
23547           <webidl>Constructor(Date date, optional DOMString? label)</webidl>
23548           <ArgumentList>
23549             <Argument name="date">
23550               <Type type="Date"/>
23551             </Argument>
23552             <Argument optional="optional" name="label">
23553               <Type type="DOMString" nullable="nullable"/>
23554             </Argument>
23555           </ArgumentList>
23556         </ExtendedAttribute>
23557       </ExtendedAttributeList>
23558       <Attribute name="date" id="::Contact::ContactAnniversary::date">
23559         <webidl>    attribute Date date;</webidl>
23560         <descriptive>
23561             <brief>
23562  The date of an anniversary.
23563             </brief>
23564             <version>
23565  1.0
23566             </version>
23567         </descriptive>
23568         <Type type="Date"/>
23569       </Attribute>
23570       <Attribute name="label" id="::Contact::ContactAnniversary::label">
23571         <webidl>    attribute DOMString? label;</webidl>
23572         <descriptive>
23573             <brief>
23574  The text describing an anniversary.
23575             </brief>
23576            <description>
23577             <p>
23578 By default, this attribute is set to <var>null</var>.
23579             </p>
23580            </description>
23581             <version>
23582  1.0
23583             </version>
23584         </descriptive>
23585         <Type type="DOMString" nullable="nullable"/>
23586       </Attribute>
23587     </Interface>
23588     <Dictionary name="ContactAddressInit" id="::Contact::ContactAddressInit">
23589       <webidl>  dictionary ContactAddressInit
23590   {
23591     DOMString country;
23592     DOMString region;
23593     DOMString city;
23594     DOMString streetAddress;
23595     DOMString additionalInformation;
23596     DOMString postalCode;
23597     boolean isDefault;
23598     DOMString[] types;
23599   };</webidl>
23600       <descriptive>
23601           <brief>
23602  The properties of a ContactAddress to pass to the ContactAddress constructor.
23603           </brief>
23604          <description>
23605           <p>
23606 See ContactAddress interface for more information about the members.
23607           </p>
23608          </description>
23609           <version>
23610  1.0
23611           </version>
23612       </descriptive>
23613       <DictionaryMember name="country" id="::Contact::ContactAddressInit::country">
23614         <webidl>    DOMString country;</webidl>
23615         <Type type="DOMString"/>
23616       </DictionaryMember>
23617       <DictionaryMember name="region" id="::Contact::ContactAddressInit::region">
23618         <webidl>    DOMString region;</webidl>
23619         <Type type="DOMString"/>
23620       </DictionaryMember>
23621       <DictionaryMember name="city" id="::Contact::ContactAddressInit::city">
23622         <webidl>    DOMString city;</webidl>
23623         <Type type="DOMString"/>
23624       </DictionaryMember>
23625       <DictionaryMember name="streetAddress" id="::Contact::ContactAddressInit::streetAddress">
23626         <webidl>    DOMString streetAddress;</webidl>
23627         <Type type="DOMString"/>
23628       </DictionaryMember>
23629       <DictionaryMember name="additionalInformation" id="::Contact::ContactAddressInit::additionalInformation">
23630         <webidl>    DOMString additionalInformation;</webidl>
23631         <Type type="DOMString"/>
23632       </DictionaryMember>
23633       <DictionaryMember name="postalCode" id="::Contact::ContactAddressInit::postalCode">
23634         <webidl>    DOMString postalCode;</webidl>
23635         <Type type="DOMString"/>
23636       </DictionaryMember>
23637       <DictionaryMember name="isDefault" id="::Contact::ContactAddressInit::isDefault">
23638         <webidl>    boolean isDefault;</webidl>
23639         <Type type="boolean"/>
23640       </DictionaryMember>
23641       <DictionaryMember name="types" id="::Contact::ContactAddressInit::types">
23642         <webidl>    DOMString[] types;</webidl>
23643         <Type type="array">
23644           <Type type="DOMString"/>
23645         </Type>
23646       </DictionaryMember>
23647     </Dictionary>
23648     <Interface name="ContactAddress" id="::Contact::ContactAddress">
23649       <webidl>  [Constructor(optional <ref>ContactAddressInit</ref>? addressInitDict)]
23650   interface ContactAddress
23651   {
23652     attribute DOMString? country;
23653
23654     attribute DOMString? region;
23655
23656     attribute DOMString? city;
23657
23658     attribute DOMString? streetAddress;
23659
23660     attribute DOMString? additionalInformation;
23661
23662     attribute DOMString? postalCode;
23663
23664     attribute boolean isDefault;
23665
23666     attribute DOMString[] types;
23667   };</webidl>
23668       <descriptive>
23669           <brief>
23670  This interface contains a set of attributes that represent a particular point
23671 on the Earth's surface.
23672           </brief>
23673          <description>
23674           <p>
23675 Except isDefault and types attributes, each of the attributes of this interface are set to <var>null</var> by default.
23676           </p>
23677           <p>
23678 For more details, see RFC 2426, Section 3.2.1.
23679           </p>
23680          </description>
23681           <version>
23682  1.0
23683           </version>
23684           <Code>   var contactInit = {};
23685    var contactAddress = new tizen.ContactAddress({streetAddress:'Gran Via, 32',
23686                                                   postalCode:'50013', city:'Zaragoza',
23687                                                  country:'ES', types:['WORK']});
23688    contactInit.contactAddress = [contactAddress];
23689  </Code>
23690       </descriptive>
23691       <ExtendedAttributeList>
23692         <ExtendedAttribute name="Constructor">
23693           <webidl>Constructor(optional <ref>ContactAddressInit</ref>? addressInitDict)</webidl>
23694           <ArgumentList>
23695             <Argument optional="optional" name="addressInitDict">
23696               <Type name="ContactAddressInit" nullable="nullable"/>
23697             </Argument>
23698           </ArgumentList>
23699         </ExtendedAttribute>
23700       </ExtendedAttributeList>
23701       <Attribute name="country" id="::Contact::ContactAddress::country">
23702         <webidl>    attribute DOMString? country;</webidl>
23703         <descriptive>
23704             <brief>
23705  The country of the address.
23706             </brief>
23707            <description>
23708             <p>
23709 It is recommended that the country is specified
23710 using the two-letter [ISO 3166-1] code.
23711             </p>
23712            </description>
23713             <version>
23714  1.0
23715             </version>
23716         </descriptive>
23717         <Type type="DOMString" nullable="nullable"/>
23718       </Attribute>
23719       <Attribute name="region" id="::Contact::ContactAddress::region">
23720         <webidl>    attribute DOMString? region;</webidl>
23721         <descriptive>
23722             <brief>
23723  The name of a country subdivision.
23724             </brief>
23725            <description>
23726             <p>
23727 For example, State (United States) or Province (Spain).
23728             </p>
23729            </description>
23730             <version>
23731  1.0
23732             </version>
23733         </descriptive>
23734         <Type type="DOMString" nullable="nullable"/>
23735       </Attribute>
23736       <Attribute name="city" id="::Contact::ContactAddress::city">
23737         <webidl>    attribute DOMString? city;</webidl>
23738         <descriptive>
23739             <brief>
23740  The name of the locality. For example, the city, county, town, or village.
23741             </brief>
23742             <version>
23743  1.0
23744             </version>
23745         </descriptive>
23746         <Type type="DOMString" nullable="nullable"/>
23747       </Attribute>
23748       <Attribute name="streetAddress" id="::Contact::ContactAddress::streetAddress">
23749         <webidl>    attribute DOMString? streetAddress;</webidl>
23750         <descriptive>
23751             <brief>
23752  The street address, for example, building number and street name/number.
23753             </brief>
23754             <version>
23755  1.0
23756             </version>
23757         </descriptive>
23758         <Type type="DOMString" nullable="nullable"/>
23759       </Attribute>
23760       <Attribute name="additionalInformation" id="::Contact::ContactAddress::additionalInformation">
23761         <webidl>    attribute DOMString? additionalInformation;</webidl>
23762         <descriptive>
23763             <brief>
23764  An attribute to capture any other address details that are required for an accurate address.
23765 For example, floor number, apartment number, suite name, the name of an office occupant, etc.
23766             </brief>
23767             <version>
23768  1.0
23769             </version>
23770         </descriptive>
23771         <Type type="DOMString" nullable="nullable"/>
23772       </Attribute>
23773       <Attribute name="postalCode" id="::Contact::ContactAddress::postalCode">
23774         <webidl>    attribute DOMString? postalCode;</webidl>
23775         <descriptive>
23776             <brief>
23777  The postal code of the location (also known as the zip code in the US).
23778             </brief>
23779             <version>
23780  1.0
23781             </version>
23782         </descriptive>
23783         <Type type="DOMString" nullable="nullable"/>
23784       </Attribute>
23785       <Attribute name="isDefault" id="::Contact::ContactAddress::isDefault">
23786         <webidl>    attribute boolean isDefault;</webidl>
23787         <descriptive>
23788             <brief>
23789  The default state of an address.
23790             </brief>
23791            <description>
23792             <p>
23793 Indicates if the address was marked as <em>default</em> or not for the contact.
23794 The only one among addresses for a person can have default property,
23795 so that this attribute might be changed without explicit modification
23796 according to the policy of platform.
23797             </p>
23798             <p>
23799 It deals with the 'pref' TYPE on RFC 2426, Section 3.2.1
23800             </p>
23801             <p>
23802 By default, this attribute is set to <var>false</var>.
23803             </p>
23804            </description>
23805             <version>
23806  2.0
23807             </version>
23808         </descriptive>
23809         <Type type="boolean"/>
23810       </Attribute>
23811       <Attribute name="types" id="::Contact::ContactAddress::types">
23812         <webidl>    attribute DOMString[] types;</webidl>
23813         <descriptive>
23814             <brief>
23815  The case insensitive list of address types.
23816             </brief>
23817            <description>
23818             <p>
23819 For more details, see RFC 2426, Section 3.2.1.
23820             </p>
23821             <p>
23822 At least the following values must be supported:
23823             </p>
23824             <ul>
23825               <li>
23826 WORK - Indicates a work address              </li>
23827               <li>
23828 HOME - Indicates a home address              </li>
23829             </ul>
23830             <p>
23831 By default, this attribute is set to HOME.
23832             </p>
23833            </description>
23834             <version>
23835  1.0
23836             </version>
23837         </descriptive>
23838         <Type type="array">
23839           <Type type="DOMString"/>
23840         </Type>
23841       </Attribute>
23842     </Interface>
23843     <Interface name="ContactPhoneNumber" id="::Contact::ContactPhoneNumber">
23844       <webidl>  [Constructor(DOMString number, optional DOMString[] types, optional boolean isDefault)]
23845   interface ContactPhoneNumber
23846   {
23847     attribute DOMString number;
23848
23849     attribute boolean isDefault;
23850
23851     attribute DOMString[] types;
23852   };</webidl>
23853       <descriptive>
23854           <brief>
23855  The ContactPhoneNumber object that contains the number and the type of phone number.
23856           </brief>
23857          <description>
23858           <p>
23859 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.
23860 At searching by phoneNumber, matchflag &quot;CONTAINS&quot; provides a result set which is retrieved from normalized phoneNumber as searching value.
23861           </p>
23862           <p>
23863 For more details, see RFC 2426, Section 3.3.1
23864           </p>
23865          </description>
23866           <version>
23867  1.0
23868           </version>
23869           <Code>   var contactInit = {};
23870    var phoneNumber = new tizen.ContactPhoneNumber('123456789', ['WORK','VOICE'], true);
23871    contactInit.phoneNumbers = [phoneNumber];
23872  </Code>
23873       </descriptive>
23874       <ExtendedAttributeList>
23875         <ExtendedAttribute name="Constructor">
23876           <webidl>Constructor(DOMString number, optional DOMString[] types, optional boolean isDefault)</webidl>
23877           <ArgumentList>
23878             <Argument name="number">
23879               <Type type="DOMString"/>
23880             </Argument>
23881             <Argument optional="optional" name="types">
23882               <Type type="array">
23883                 <Type type="DOMString"/>
23884               </Type>
23885             </Argument>
23886             <Argument optional="optional" name="isDefault">
23887               <Type type="boolean"/>
23888             </Argument>
23889           </ArgumentList>
23890         </ExtendedAttribute>
23891       </ExtendedAttributeList>
23892       <Attribute name="number" id="::Contact::ContactPhoneNumber::number">
23893         <webidl>    attribute DOMString number;</webidl>
23894         <descriptive>
23895             <brief>
23896  The full phone number.
23897             </brief>
23898             <version>
23899  1.0
23900             </version>
23901         </descriptive>
23902         <Type type="DOMString"/>
23903       </Attribute>
23904       <Attribute name="isDefault" id="::Contact::ContactPhoneNumber::isDefault">
23905         <webidl>    attribute boolean isDefault;</webidl>
23906         <descriptive>
23907             <brief>
23908  The default state of the phone number.
23909             </brief>
23910            <description>
23911             <p>
23912 Indicates if the phone number was marked as <em>default</em> or not for the contact.
23913 The only one among phone numbers for a person can have default property,
23914 so that this attribute might be changed without explicit modification
23915 according to the policy of platform.
23916             </p>
23917             <p>
23918 It deals with the 'pref' TYPE on RFC 2426, Section 3.3.1
23919             </p>
23920             <p>
23921 By default, this attribute is set to false.
23922             </p>
23923            </description>
23924             <version>
23925  2.0
23926             </version>
23927         </descriptive>
23928         <Type type="boolean"/>
23929       </Attribute>
23930       <Attribute name="types" id="::Contact::ContactPhoneNumber::types">
23931         <webidl>    attribute DOMString[] types;</webidl>
23932         <descriptive>
23933             <brief>
23934  The case insensitive list of phone types, as defined in RFC 2426.
23935             </brief>
23936            <description>
23937             <p>
23938 Specifies the intended use of the phone number.
23939             </p>
23940             <p>
23941 At least the following values must be supported:
23942             </p>
23943             <ul>
23944               <li>
23945 <var>WORK</var> - Indicates a work number              </li>
23946               <li>
23947 <var>HOME</var> - Indicates a home number              </li>
23948               <li>
23949 <var>VOICE</var> - Indicates a voice number (Default)              </li>
23950               <li>
23951 <var>FAX</var> - Indicates a facsimile number              </li>
23952               <li>
23953 <var>MSG</var> - Indicates a messaging service on the number              </li>
23954               <li>
23955 <var>CELL</var> - Indicates a cellular number              </li>
23956               <li>
23957 <var>PAGER</var> - Indicates a pager number              </li>
23958               <li>
23959 <var>BBS</var> - Indicates a bulletin board service number              </li>
23960               <li>
23961 <var>MODEM</var> - Indicates a MODEM number              </li>
23962               <li>
23963 <var>CAR</var> - Indicates a car-phone number              </li>
23964               <li>
23965 <var>ISDN</var> - Indicates an ISDN number              </li>
23966               <li>
23967 <var>VIDEO</var> - Indicates a video-phone number              </li>
23968               <li>
23969 <var>PCS</var> - Personal Communication Standard               </li>
23970             </ul>
23971            </description>
23972             <version>
23973  1.0
23974             </version>
23975         </descriptive>
23976         <Type type="array">
23977           <Type type="DOMString"/>
23978         </Type>
23979       </Attribute>
23980     </Interface>
23981     <Interface name="ContactEmailAddress" id="::Contact::ContactEmailAddress">
23982       <webidl>  [Constructor(DOMString email, optional DOMString[] types, optional boolean isDefault)]
23983   interface ContactEmailAddress
23984   {
23985     attribute DOMString email;
23986
23987     attribute boolean isDefault;
23988
23989     attribute DOMString[] types;
23990   };</webidl>
23991       <descriptive>
23992           <brief>
23993  The ContactEmailAddress object that contains the email address and the type of email address.
23994           </brief>
23995          <description>
23996           <p>
23997 For more details, see RFC 2426, Section 3.3.2.
23998           </p>
23999          </description>
24000           <version>
24001  1.0
24002           </version>
24003           <Code>  var contactInit = {};
24004   var email = new tizen.ContactEmailAddress('user@domain.com', ['WORK']);
24005   contactInit.emails = [email];
24006  </Code>
24007       </descriptive>
24008       <ExtendedAttributeList>
24009         <ExtendedAttribute name="Constructor">
24010           <webidl>Constructor(DOMString email, optional DOMString[] types, optional boolean isDefault)</webidl>
24011           <ArgumentList>
24012             <Argument name="email">
24013               <Type type="DOMString"/>
24014             </Argument>
24015             <Argument optional="optional" name="types">
24016               <Type type="array">
24017                 <Type type="DOMString"/>
24018               </Type>
24019             </Argument>
24020             <Argument optional="optional" name="isDefault">
24021               <Type type="boolean"/>
24022             </Argument>
24023           </ArgumentList>
24024         </ExtendedAttribute>
24025       </ExtendedAttributeList>
24026       <Attribute name="email" id="::Contact::ContactEmailAddress::email">
24027         <webidl>    attribute DOMString email;</webidl>
24028         <descriptive>
24029             <brief>
24030  The full email address.
24031             </brief>
24032             <version>
24033  1.0
24034             </version>
24035         </descriptive>
24036         <Type type="DOMString"/>
24037       </Attribute>
24038       <Attribute name="isDefault" id="::Contact::ContactEmailAddress::isDefault">
24039         <webidl>    attribute boolean isDefault;</webidl>
24040         <descriptive>
24041             <brief>
24042  The default state of an email address.
24043             </brief>
24044            <description>
24045             <p>
24046 Indicates if the email address was marked as <em>default</em> or not for the contact.
24047 The only one among email addresses for a person can have default property,
24048 so that this attribute might be changed without explicit modification
24049 according to the policy of platform.
24050             </p>
24051             <p>
24052 It deals with the 'pref' TYPE on RFC 2426, Section 3.3.2
24053             </p>
24054             <p>
24055 By default, this attribute is set to false.
24056             </p>
24057            </description>
24058             <version>
24059  2.0
24060             </version>
24061         </descriptive>
24062         <Type type="boolean"/>
24063       </Attribute>
24064       <Attribute name="types" id="::Contact::ContactEmailAddress::types">
24065         <webidl>    attribute DOMString[] types;</webidl>
24066         <descriptive>
24067             <brief>
24068  The case insensitive list of email types.
24069             </brief>
24070            <description>
24071             <p>
24072 Specifies the intended use of the email address.
24073             </p>
24074             <p>
24075 At least the following values must be supported:
24076             </p>
24077             <ul>
24078               <li>
24079 WORK - Indicates a work email              </li>
24080               <li>
24081 HOME - Indicates a home email              </li>
24082               <li>
24083 MOBILE - Indicates a mobile email              </li>
24084             </ul>
24085             <p>
24086 By default, this attribute is set to WORK.
24087             </p>
24088            </description>
24089             <version>
24090  1.0
24091             </version>
24092         </descriptive>
24093         <Type type="array">
24094           <Type type="DOMString"/>
24095         </Type>
24096       </Attribute>
24097     </Interface>
24098     <Interface name="ContactGroup" id="::Contact::ContactGroup">
24099       <webidl>  [Constructor(DOMString name, optional DOMString? ringtoneURI, optional DOMString? photoURI)]
24100   interface ContactGroup
24101   {
24102     readonly attribute <ref>ContactGroupId</ref>? id;
24103
24104     readonly attribute <ref>AddressBookId</ref>? addressBookId;
24105
24106     attribute DOMString name;
24107
24108     attribute DOMString? ringtoneURI;
24109
24110     attribute DOMString? photoURI;
24111
24112     readonly attribute DOMString readOnly;
24113   };</webidl>
24114       <descriptive>
24115           <brief>
24116  The group object.
24117           </brief>
24118           <version>
24119  2.0
24120           </version>
24121           <Code>  var addressbook = null;
24122   var group = null;
24123
24124   // Define the error callback for all the asynchronous calls
24125   function errorCB(err) {
24126     console.log( 'The following error occurred: ' +  err.name);
24127   }
24128
24129   // Define the success callback for retrieving all the
24130   // Address Books
24131   function addressBooksCB(addressbooks) {
24132     addressbook = addressbooks[0];
24133     try {
24134       group = new tizen.ContactGroup('Family', 'file://opt/media/Downloads/ring.mp3');
24135     } catch (err) {
24136       console.log( 'The following error occurred while converting: ' +  err.name);
24137     }
24138
24139     try {
24140       if (group) {
24141         addressbook.addGroup(group);
24142         console.log('Group was added with ID ' + group.id);
24143       }
24144     } catch (err) {
24145       console.log( 'The following error occurred while adding: ' +  err.name);
24146     }
24147   }
24148
24149   tizen.contact.getAddressBooks(addressBooksCB, errorCB);
24150
24151  </Code>
24152       </descriptive>
24153       <ExtendedAttributeList>
24154         <ExtendedAttribute name="Constructor">
24155           <webidl>Constructor(DOMString name, optional DOMString? ringtoneURI, optional DOMString? photoURI)</webidl>
24156           <ArgumentList>
24157             <Argument name="name">
24158               <Type type="DOMString"/>
24159             </Argument>
24160             <Argument optional="optional" name="ringtoneURI">
24161               <Type type="DOMString" nullable="nullable"/>
24162             </Argument>
24163             <Argument optional="optional" name="photoURI">
24164               <Type type="DOMString" nullable="nullable"/>
24165             </Argument>
24166           </ArgumentList>
24167         </ExtendedAttribute>
24168       </ExtendedAttributeList>
24169       <Attribute readonly="readonly" name="id" id="::Contact::ContactGroup::id">
24170         <webidl>    readonly attribute <ref>ContactGroupId</ref>? id;</webidl>
24171         <descriptive>
24172             <brief>
24173  The identifier of a group.
24174             </brief>
24175            <description>
24176             <p>
24177 By default, this attribute is set to <var>null</var>.
24178             </p>
24179            </description>
24180             <version>
24181  2.0
24182             </version>
24183         </descriptive>
24184         <Type name="ContactGroupId" nullable="nullable"/>
24185       </Attribute>
24186       <Attribute readonly="readonly" name="addressBookId" id="::Contact::ContactGroup::addressBookId">
24187         <webidl>    readonly attribute <ref>AddressBookId</ref>? addressBookId;</webidl>
24188         <descriptive>
24189             <brief>
24190  The identifier of the address book that the group belongs to.
24191             </brief>
24192            <description>
24193             <p>
24194 By default, this attribute is set to <var>null</var>.
24195             </p>
24196            </description>
24197             <version>
24198  2.0
24199             </version>
24200         </descriptive>
24201         <Type name="AddressBookId" nullable="nullable"/>
24202       </Attribute>
24203       <Attribute name="name" id="::Contact::ContactGroup::name">
24204         <webidl>    attribute DOMString name;</webidl>
24205         <descriptive>
24206             <brief>
24207  The name of a group.
24208             </brief>
24209             <version>
24210  2.0
24211             </version>
24212         </descriptive>
24213         <Type type="DOMString"/>
24214       </Attribute>
24215       <Attribute name="ringtoneURI" id="::Contact::ContactGroup::ringtoneURI">
24216         <webidl>    attribute DOMString? ringtoneURI;</webidl>
24217         <descriptive>
24218             <brief>
24219  The URI to the custom ringtone for a group.
24220             </brief>
24221            <description>
24222             <p>
24223 To specify a custom ringtone for a group.
24224             </p>
24225             <p>
24226 By default, this attribute is initialized to <var>null</var>.
24227 This attribute only contains a local file URI.
24228             </p>
24229            </description>
24230             <version>
24231  2.0
24232             </version>
24233         </descriptive>
24234         <Type type="DOMString" nullable="nullable"/>
24235       </Attribute>
24236       <Attribute name="photoURI" id="::Contact::ContactGroup::photoURI">
24237         <webidl>    attribute DOMString? photoURI;</webidl>
24238         <descriptive>
24239             <brief>
24240  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.
24241             </brief>
24242            <description>
24243             <p>
24244 By default, this attribute is set to <var>null</var>.
24245             </p>
24246            </description>
24247             <version>
24248  2.0
24249             </version>
24250         </descriptive>
24251         <Type type="DOMString" nullable="nullable"/>
24252       </Attribute>
24253       <Attribute readonly="readonly" name="readOnly" id="::Contact::ContactGroup::readOnly">
24254         <webidl>    readonly attribute DOMString readOnly;</webidl>
24255         <descriptive>
24256             <brief>
24257  The flag indicating if the group can be modified / removed or not.
24258 Some groups cannot be edited if this flag sets to <var>true</var>.
24259             </brief>
24260            <description>
24261             <p>
24262 By default, this attribute is set to false.
24263             </p>
24264            </description>
24265             <version>
24266  2.0
24267             </version>
24268         </descriptive>
24269         <Type type="DOMString"/>
24270       </Attribute>
24271     </Interface>
24272     <Interface name="PersonArraySuccessCallback" id="::Contact::PersonArraySuccessCallback">
24273       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface PersonArraySuccessCallback {
24274     void onsuccess(<ref>Person</ref>[] persons);
24275   };</webidl>
24276       <descriptive>
24277           <brief>
24278  The success callback that is used for retrieving
24279 a list of persons.
24280           </brief>
24281          <description>
24282           <p>
24283 The success callback that takes an array of persons as an input
24284 argument. It is used in the asynchronous operation to
24285 get or save a list of persons.
24286           </p>
24287          </description>
24288           <version>
24289  2.0
24290           </version>
24291       </descriptive>
24292       <ExtendedAttributeList>
24293         <ExtendedAttribute name="Callback" value="FunctionOnly">
24294           <webidl>Callback</webidl>
24295         </ExtendedAttribute>
24296         <ExtendedAttribute name="NoInterfaceObject">
24297           <webidl> NoInterfaceObject</webidl>
24298         </ExtendedAttribute>
24299       </ExtendedAttributeList>
24300       <Operation name="onsuccess" id="::Contact::PersonArraySuccessCallback::onsuccess">
24301         <webidl>    void onsuccess(<ref>Person</ref>[] persons);</webidl>
24302         <descriptive>
24303             <brief>
24304  The method invoked when a list of persons is retrieved successfully.
24305             </brief>
24306             <version>
24307  2.0
24308             </version>
24309         </descriptive>
24310         <Type type="void"/>
24311         <ArgumentList>
24312           <Argument name="persons">
24313             <descriptive>
24314                 <description><p>
24315  List of persons.
24316                 </p></description>
24317             </descriptive>
24318             <Type type="array">
24319               <Type name="Person"/>
24320             </Type>
24321           </Argument>
24322         </ArgumentList>
24323       </Operation>
24324     </Interface>
24325     <Interface name="ContactArraySuccessCallback" id="::Contact::ContactArraySuccessCallback">
24326       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface ContactArraySuccessCallback {
24327     void onsuccess(<ref>Contact</ref>[] contacts);
24328   };</webidl>
24329       <descriptive>
24330           <brief>
24331  The success callback that is used for saving and retrieving
24332 a list of contacts.
24333           </brief>
24334          <description>
24335           <p>
24336 The success callback that takes an array of contacts as an input
24337 argument. It is used in the asynchronous operation to
24338 get or save a list of contacts.
24339           </p>
24340          </description>
24341           <version>
24342  1.0
24343           </version>
24344       </descriptive>
24345       <ExtendedAttributeList>
24346         <ExtendedAttribute name="Callback" value="FunctionOnly">
24347           <webidl>Callback</webidl>
24348         </ExtendedAttribute>
24349         <ExtendedAttribute name="NoInterfaceObject">
24350           <webidl> NoInterfaceObject</webidl>
24351         </ExtendedAttribute>
24352       </ExtendedAttributeList>
24353       <Operation name="onsuccess" id="::Contact::ContactArraySuccessCallback::onsuccess">
24354         <webidl>    void onsuccess(<ref>Contact</ref>[] contacts);</webidl>
24355         <descriptive>
24356             <brief>
24357  The method invoked when a list of contacts is retrieved successfully.
24358             </brief>
24359             <version>
24360  1.0
24361             </version>
24362         </descriptive>
24363         <Type type="void"/>
24364         <ArgumentList>
24365           <Argument name="contacts">
24366             <descriptive>
24367                 <description><p>
24368  List of contacts.
24369 The Contacts that were successfully saved must have their identifiers set.
24370                 </p></description>
24371             </descriptive>
24372             <Type type="array">
24373               <Type name="Contact"/>
24374             </Type>
24375           </Argument>
24376         </ArgumentList>
24377       </Operation>
24378     </Interface>
24379     <Interface name="AddressBookArraySuccessCallback" id="::Contact::AddressBookArraySuccessCallback">
24380       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface AddressBookArraySuccessCallback {
24381     void onsuccess(<ref>AddressBook</ref>[] addressbooks);
24382   };</webidl>
24383       <descriptive>
24384           <brief>
24385  The success callback when retrieving a list of AddressBooks.
24386           </brief>
24387          <description>
24388           <p>
24389 The success callback that takes an array of AddressBooks as an input
24390 argument. It is used in the asynchronous operation to
24391 get address books.
24392           </p>
24393          </description>
24394           <version>
24395  1.0
24396           </version>
24397       </descriptive>
24398       <ExtendedAttributeList>
24399         <ExtendedAttribute name="Callback" value="FunctionOnly">
24400           <webidl>Callback</webidl>
24401         </ExtendedAttribute>
24402         <ExtendedAttribute name="NoInterfaceObject">
24403           <webidl> NoInterfaceObject</webidl>
24404         </ExtendedAttribute>
24405       </ExtendedAttributeList>
24406       <Operation name="onsuccess" id="::Contact::AddressBookArraySuccessCallback::onsuccess">
24407         <webidl>    void onsuccess(<ref>AddressBook</ref>[] addressbooks);</webidl>
24408         <descriptive>
24409             <brief>
24410  The method invoked when a list of address books is retrieved successfully.
24411             </brief>
24412             <version>
24413  1.0
24414             </version>
24415         </descriptive>
24416         <Type type="void"/>
24417         <ArgumentList>
24418           <Argument name="addressbooks">
24419             <descriptive>
24420                 <description><p>
24421  The address books to retrieve.
24422                 </p></description>
24423             </descriptive>
24424             <Type type="array">
24425               <Type name="AddressBook"/>
24426             </Type>
24427           </Argument>
24428         </ArgumentList>
24429       </Operation>
24430     </Interface>
24431     <Interface name="AddressBookChangeCallback" id="::Contact::AddressBookChangeCallback">
24432       <webidl>  [Callback, NoInterfaceObject] interface AddressBookChangeCallback {
24433     void oncontactsadded(<ref>Contact</ref>[] contacts);
24434
24435     void oncontactsupdated(<ref>Contact</ref>[] contacts);
24436
24437     void oncontactsremoved(<ref>ContactId</ref>[] contactIds);
24438   };</webidl>
24439       <descriptive>
24440           <brief>
24441  The interface for specifying the methods to be called for address book
24442 change notifications.
24443           </brief>
24444          <description>
24445           <p>
24446 This interface specifies a set of functions that will be invoked every time an address
24447 book change occurs (contact addition/update/deletion).
24448           </p>
24449          </description>
24450           <version>
24451  1.0
24452           </version>
24453       </descriptive>
24454       <ExtendedAttributeList>
24455         <ExtendedAttribute name="Callback">
24456           <webidl>Callback</webidl>
24457         </ExtendedAttribute>
24458         <ExtendedAttribute name="NoInterfaceObject">
24459           <webidl> NoInterfaceObject</webidl>
24460         </ExtendedAttribute>
24461       </ExtendedAttributeList>
24462       <Operation name="oncontactsadded" id="::Contact::AddressBookChangeCallback::oncontactsadded">
24463         <webidl>    void oncontactsadded(<ref>Contact</ref>[] contacts);</webidl>
24464         <descriptive>
24465             <brief>
24466  The method invoked when contacts are added to the address book.
24467             </brief>
24468             <version>
24469  1.0
24470             </version>
24471         </descriptive>
24472         <Type type="void"/>
24473         <ArgumentList>
24474           <Argument name="contacts">
24475             <descriptive>
24476                 <description><p>
24477  A list of contacts to add.
24478                 </p></description>
24479             </descriptive>
24480             <Type type="array">
24481               <Type name="Contact"/>
24482             </Type>
24483           </Argument>
24484         </ArgumentList>
24485       </Operation>
24486       <Operation name="oncontactsupdated" id="::Contact::AddressBookChangeCallback::oncontactsupdated">
24487         <webidl>    void oncontactsupdated(<ref>Contact</ref>[] contacts);</webidl>
24488         <descriptive>
24489             <brief>
24490  The method invoked when contacts are updated in the address book.
24491             </brief>
24492             <version>
24493  1.0
24494             </version>
24495         </descriptive>
24496         <Type type="void"/>
24497         <ArgumentList>
24498           <Argument name="contacts">
24499             <descriptive>
24500                 <description><p>
24501  A list of contacts to update.
24502                 </p></description>
24503             </descriptive>
24504             <Type type="array">
24505               <Type name="Contact"/>
24506             </Type>
24507           </Argument>
24508         </ArgumentList>
24509       </Operation>
24510       <Operation name="oncontactsremoved" id="::Contact::AddressBookChangeCallback::oncontactsremoved">
24511         <webidl>    void oncontactsremoved(<ref>ContactId</ref>[] contactIds);</webidl>
24512         <descriptive>
24513             <brief>
24514  The method invoked when contacts are deleted from the address book.
24515             </brief>
24516             <version>
24517  1.0
24518             </version>
24519         </descriptive>
24520         <Type type="void"/>
24521         <ArgumentList>
24522           <Argument name="contactIds">
24523             <descriptive>
24524                 <description><p>
24525  A list of identifiers for the contacts to delete.
24526                 </p></description>
24527             </descriptive>
24528             <Type type="array">
24529               <Type name="ContactId"/>
24530             </Type>
24531           </Argument>
24532         </ArgumentList>
24533       </Operation>
24534     </Interface>
24535     <Interface name="PersonsChangeCallback" id="::Contact::PersonsChangeCallback">
24536       <webidl>  [Callback, NoInterfaceObject] interface PersonsChangeCallback {
24537     void onpersonsadded(<ref>Person</ref>[] persons);
24538
24539     void onpersonsupdated(<ref>Person</ref>[] persons);
24540
24541     void onpersonsremoved(<ref>PersonId</ref>[] personIds);
24542   };</webidl>
24543       <descriptive>
24544           <brief>
24545  The interface for specifying the methods to be called for change notifications.
24546           </brief>
24547          <description>
24548           <p>
24549 This interface specifies a set of functions that will be invoked every time person's
24550 list change occurs (person addition/update/deletion).
24551           </p>
24552          </description>
24553           <version>
24554  2.0
24555           </version>
24556       </descriptive>
24557       <ExtendedAttributeList>
24558         <ExtendedAttribute name="Callback">
24559           <webidl>Callback</webidl>
24560         </ExtendedAttribute>
24561         <ExtendedAttribute name="NoInterfaceObject">
24562           <webidl> NoInterfaceObject</webidl>
24563         </ExtendedAttribute>
24564       </ExtendedAttributeList>
24565       <Operation name="onpersonsadded" id="::Contact::PersonsChangeCallback::onpersonsadded">
24566         <webidl>    void onpersonsadded(<ref>Person</ref>[] persons);</webidl>
24567         <descriptive>
24568             <brief>
24569  The method invoked when persons are added to the person list.
24570             </brief>
24571             <version>
24572  2.0
24573             </version>
24574         </descriptive>
24575         <Type type="void"/>
24576         <ArgumentList>
24577           <Argument name="persons">
24578             <descriptive>
24579                 <description><p>
24580  A list of persons to add.
24581                 </p></description>
24582             </descriptive>
24583             <Type type="array">
24584               <Type name="Person"/>
24585             </Type>
24586           </Argument>
24587         </ArgumentList>
24588       </Operation>
24589       <Operation name="onpersonsupdated" id="::Contact::PersonsChangeCallback::onpersonsupdated">
24590         <webidl>    void onpersonsupdated(<ref>Person</ref>[] persons);</webidl>
24591         <descriptive>
24592             <brief>
24593  The method invoked when persons are updated in the person list.
24594             </brief>
24595             <version>
24596  2.0
24597             </version>
24598         </descriptive>
24599         <Type type="void"/>
24600         <ArgumentList>
24601           <Argument name="persons">
24602             <descriptive>
24603                 <description><p>
24604  A list of persons to update.
24605                 </p></description>
24606             </descriptive>
24607             <Type type="array">
24608               <Type name="Person"/>
24609             </Type>
24610           </Argument>
24611         </ArgumentList>
24612       </Operation>
24613       <Operation name="onpersonsremoved" id="::Contact::PersonsChangeCallback::onpersonsremoved">
24614         <webidl>    void onpersonsremoved(<ref>PersonId</ref>[] personIds);</webidl>
24615         <descriptive>
24616             <brief>
24617  The method invoked when persons are deleted from the person list.
24618             </brief>
24619             <version>
24620  2.0
24621             </version>
24622         </descriptive>
24623         <Type type="void"/>
24624         <ArgumentList>
24625           <Argument name="personIds">
24626             <descriptive>
24627                 <description><p>
24628  A list of identifiers for the persons to delete.
24629                 </p></description>
24630             </descriptive>
24631             <Type type="array">
24632               <Type name="PersonId"/>
24633             </Type>
24634           </Argument>
24635         </ArgumentList>
24636       </Operation>
24637     </Interface>
24638   </Module>
24639   <Module name="Content" id="::Content">
24640     <webidl>module Content {
24641
24642   enum ContentDirectoryStorageType { &quot;INTERNAL&quot;, &quot;EXTERNAL&quot; };
24643
24644   enum ContentType { &quot;IMAGE&quot;, &quot;VIDEO&quot;, &quot;AUDIO&quot;, &quot;OTHER&quot; };
24645
24646   enum AudioContentLyricsType { &quot;SYNCHRONIZED&quot;, &quot;UNSYNCHRONIZED&quot; };
24647
24648   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; };
24649
24650   typedef DOMString ContentId;
24651
24652   typedef DOMString ContentDirectoryId;
24653
24654   [NoInterfaceObject] interface ContentManagerObject {
24655     readonly attribute <ref>ContentManager</ref> content;
24656   };
24657   <ref>Tizen</ref> implements <ref>ContentManagerObject</ref>;
24658
24659   [NoInterfaceObject] interface ContentManager {
24660
24661     void update(<ref>Content</ref> content) raises(<ref>WebAPIException</ref>);
24662
24663     void updateBatch(<ref>Content</ref>[] contents,
24664                      optional <ref>SuccessCallback</ref>? successCallback,
24665                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
24666
24667     void getDirectories(<ref>ContentDirectoryArraySuccessCallback</ref> successCallback,
24668                         optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
24669
24670     void find(<ref>ContentArraySuccessCallback</ref> successCallback,
24671               optional <ref>ErrorCallback</ref>? errorCallback,
24672               optional <ref>ContentDirectoryId</ref>? directoryId,
24673               optional <ref>AbstractFilter</ref>? filter,
24674               optional <ref>SortMode</ref>? sortMode,
24675               optional unsigned long? count,
24676               optional unsigned long? offset) raises(<ref>WebAPIException</ref>);
24677
24678
24679     void scanFile(DOMString contentURI,
24680                   optional <ref>ContentScanSuccessCallback</ref>? successCallback,
24681                   optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
24682
24683     void setChangeListener(<ref>ContentChangeCallback</ref> changeCallback) raises(<ref>WebAPIException</ref>);
24684
24685     void unsetChangeListener() raises(<ref>WebAPIException</ref>);
24686
24687   };
24688
24689   [Callback=FunctionOnly, NoInterfaceObject] interface ContentArraySuccessCallback {
24690     void onsuccess(<ref>Content</ref>[] contents);
24691   };
24692
24693   [Callback=FunctionOnly, NoInterfaceObject] interface ContentDirectoryArraySuccessCallback {
24694     void onsuccess(<ref>ContentDirectory</ref>[] directories);
24695   };
24696
24697   [Callback=FunctionOnly, NoInterfaceObject] interface ContentScanSuccessCallback {
24698     void onsuccess(DOMString contentURI);
24699   };
24700
24701   [Callback, NoInterfaceObject] interface ContentChangeCallback {
24702     void oncontentadded(<ref>Content</ref> content);
24703
24704     void oncontentupdated(<ref>Content</ref> content);
24705
24706     void oncontentremoved(<ref>ContentId</ref> id);
24707   };
24708
24709
24710   [NoInterfaceObject] interface ContentDirectory {
24711
24712     readonly attribute <ref>ContentDirectoryId</ref> id;
24713
24714     readonly attribute DOMString directoryURI;
24715
24716     readonly attribute DOMString title;
24717
24718     readonly attribute <ref>ContentDirectoryStorageType</ref> storageType;
24719
24720     readonly attribute Date? modifiedDate;
24721
24722    };
24723
24724   [NoInterfaceObject] interface Content {
24725
24726     readonly attribute DOMString[] editableAttributes;
24727
24728     readonly attribute <ref>ContentId</ref> id;
24729
24730     attribute DOMString name;
24731
24732     readonly attribute <ref>ContentType</ref> type;
24733
24734     readonly attribute DOMString mimeType;
24735
24736     readonly attribute DOMString title;
24737
24738     readonly attribute DOMString contentURI;
24739
24740     readonly attribute DOMString[]? thumbnailURIs;
24741
24742     readonly attribute Date? releaseDate;
24743
24744     readonly attribute Date? modifiedDate;
24745
24746     readonly attribute unsigned long size;
24747
24748     attribute DOMString? description;
24749
24750     attribute unsigned long rating;
24751   };
24752
24753   [NoInterfaceObject] interface VideoContent : <ref>Content</ref> {
24754
24755     attribute <ref>SimpleCoordinates</ref>? geolocation;
24756
24757     readonly attribute DOMString? album;
24758
24759     readonly attribute DOMString[]? artists;
24760
24761     readonly attribute unsigned long duration;
24762
24763     readonly attribute unsigned long width;
24764
24765     readonly attribute unsigned long height;
24766
24767   };
24768
24769
24770   [NoInterfaceObject] interface AudioContentLyrics {
24771
24772     readonly attribute <ref>AudioContentLyricsType</ref> type;
24773
24774     readonly attribute unsigned long[] timestamps;
24775
24776     readonly attribute DOMString[] texts;
24777   };
24778
24779   [NoInterfaceObject] interface AudioContent : <ref>Content</ref> {
24780
24781     readonly attribute DOMString? album;
24782
24783     readonly attribute DOMString[]? genres;
24784
24785     readonly attribute DOMString[]? artists;
24786
24787     readonly attribute DOMString[]? composers;
24788
24789     readonly attribute <ref>AudioContentLyrics</ref>? lyrics;
24790
24791     readonly attribute DOMString? copyright;
24792
24793     readonly attribute unsigned long bitrate;
24794
24795     readonly attribute unsigned short? trackNumber;
24796
24797     readonly attribute unsigned long duration;
24798
24799   };
24800
24801   [NoInterfaceObject] interface ImageContent : <ref>Content</ref> {
24802
24803     attribute <ref>SimpleCoordinates</ref>? geolocation;
24804
24805     readonly attribute unsigned long width;
24806
24807     readonly attribute unsigned long height;
24808
24809     attribute <ref>ImageContentOrientation</ref> orientation;
24810
24811   };
24812 };</webidl>
24813     <descriptive>
24814         <brief>
24815  This API provides functionality to discover contents such as images, videos, music, or other. 
24816         </brief>
24817        <description>
24818         <p>
24819 It is possible to search for specific contents using filters.
24820 The API also supports setting attributes of specific contents.
24821         </p>
24822         <p>
24823 For more information on the Content features, see <a href="../../org.tizen.web.appprogramming/html/guide/content_guide/mediacontent.htm">Content Guide</a>.
24824         </p>
24825        </description>
24826         <version>
24827  2.0
24828         </version>
24829     </descriptive>
24830     <Enum name="ContentDirectoryStorageType" id="::Content::ContentDirectoryStorageType">
24831       <webidl>  enum ContentDirectoryStorageType { &quot;INTERNAL&quot;, &quot;EXTERNAL&quot; };</webidl>
24832       <descriptive>
24833          <description>
24834           <p>
24835 Defines whether a content directory is stored on internal or external storage (such as a removable memory card).
24836           </p>
24837          </description>
24838           <version>
24839  2.0
24840           </version>
24841       </descriptive>
24842       <EnumValue stringvalue="INTERNAL">
24843         <webidl> &quot;INTERNAL</webidl>
24844       </EnumValue>
24845       <EnumValue stringvalue="EXTERNAL">
24846         <webidl> &quot;EXTERNAL</webidl>
24847       </EnumValue>
24848     </Enum>
24849     <Enum name="ContentType" id="::Content::ContentType">
24850       <webidl>  enum ContentType { &quot;IMAGE&quot;, &quot;VIDEO&quot;, &quot;AUDIO&quot;, &quot;OTHER&quot; };</webidl>
24851       <descriptive>
24852          <description>
24853           <p>
24854 Defines the type of content such as image, video, audio and other.
24855           </p>
24856          </description>
24857           <version>
24858  2.0
24859           </version>
24860           <remark>
24861  &quot;OTHER&quot; type is added since 2.1.
24862           </remark>
24863       </descriptive>
24864       <EnumValue stringvalue="IMAGE">
24865         <webidl> &quot;IMAGE</webidl>
24866       </EnumValue>
24867       <EnumValue stringvalue="VIDEO">
24868         <webidl> &quot;VIDEO</webidl>
24869       </EnumValue>
24870       <EnumValue stringvalue="AUDIO">
24871         <webidl> &quot;AUDIO</webidl>
24872       </EnumValue>
24873       <EnumValue stringvalue="OTHER">
24874         <webidl> &quot;OTHER</webidl>
24875       </EnumValue>
24876     </Enum>
24877     <Enum name="AudioContentLyricsType" id="::Content::AudioContentLyricsType">
24878       <webidl>  enum AudioContentLyricsType { &quot;SYNCHRONIZED&quot;, &quot;UNSYNCHRONIZED&quot; };</webidl>
24879       <descriptive>
24880          <description>
24881           <p>
24882 Defines whether the lyric supplied with an audio file is time-synchronized or not.
24883           </p>
24884          </description>
24885           <version>
24886  2.0
24887           </version>
24888       </descriptive>
24889       <EnumValue stringvalue="SYNCHRONIZED">
24890         <webidl> &quot;SYNCHRONIZED</webidl>
24891       </EnumValue>
24892       <EnumValue stringvalue="UNSYNCHRONIZED">
24893         <webidl> &quot;UNSYNCHRONIZED</webidl>
24894       </EnumValue>
24895     </Enum>
24896     <Enum name="ImageContentOrientation" id="::Content::ImageContentOrientation">
24897       <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>
24898       <descriptive>
24899          <description>
24900           <p>
24901 Defines an orientation of an image.
24902           </p>
24903          </description>
24904           <version>
24905  2.0
24906           </version>
24907       </descriptive>
24908       <EnumValue stringvalue="NORMAL">
24909         <webidl> &quot;NORMAL</webidl>
24910       </EnumValue>
24911       <EnumValue stringvalue="FLIP_HORIZONTAL">
24912         <webidl> &quot;FLIP_HORIZONTAL</webidl>
24913       </EnumValue>
24914       <EnumValue stringvalue="ROTATE_180">
24915         <webidl> &quot;ROTATE_180</webidl>
24916       </EnumValue>
24917       <EnumValue stringvalue="FLIP_VERTICAL">
24918         <webidl> &quot;FLIP_VERTICAL</webidl>
24919       </EnumValue>
24920       <EnumValue stringvalue="TRANSPOSE">
24921         <webidl> &quot;TRANSPOSE</webidl>
24922       </EnumValue>
24923       <EnumValue stringvalue="ROTATE_90">
24924         <webidl> &quot;ROTATE_90</webidl>
24925       </EnumValue>
24926       <EnumValue stringvalue="TRANSVERSE">
24927         <webidl> &quot;TRANSVERSE</webidl>
24928       </EnumValue>
24929       <EnumValue stringvalue="ROTATE_270">
24930         <webidl> &quot;ROTATE_270</webidl>
24931       </EnumValue>
24932     </Enum>
24933     <Typedef name="ContentId" id="::Content::ContentId">
24934       <webidl>  typedef DOMString ContentId;</webidl>
24935       <descriptive>
24936           <brief>
24937  Content identifier.
24938           </brief>
24939           <version>
24940  2.0
24941           </version>
24942       </descriptive>
24943       <Type type="DOMString"/>
24944     </Typedef>
24945     <Typedef name="ContentDirectoryId" id="::Content::ContentDirectoryId">
24946       <webidl>  typedef DOMString ContentDirectoryId;</webidl>
24947       <descriptive>
24948           <brief>
24949  Content directory identifier.
24950           </brief>
24951           <version>
24952  2.0
24953           </version>
24954       </descriptive>
24955       <Type type="DOMString"/>
24956     </Typedef>
24957     <Interface name="ContentManagerObject" id="::Content::ContentManagerObject">
24958       <webidl>  [NoInterfaceObject] interface ContentManagerObject {
24959     readonly attribute <ref>ContentManager</ref> content;
24960   };</webidl>
24961       <descriptive>
24962           <brief>
24963  Defines what is instantiated by the Tizen object.
24964           </brief>
24965          <description>
24966           <p>
24967 There is a <em>tizen.content </em>object that allows accessing the functionality of the Content module.
24968           </p>
24969          </description>
24970           <version>
24971  2.0
24972           </version>
24973       </descriptive>
24974       <ExtendedAttributeList>
24975         <ExtendedAttribute name="NoInterfaceObject">
24976           <webidl>NoInterfaceObject</webidl>
24977         </ExtendedAttribute>
24978       </ExtendedAttributeList>
24979       <Attribute readonly="readonly" name="content" id="::Content::ContentManagerObject::content">
24980         <webidl>    readonly attribute <ref>ContentManager</ref> content;</webidl>
24981         <Type name="ContentManager"/>
24982       </Attribute>
24983     </Interface>
24984     <Implements name1="Tizen" name2="ContentManagerObject">
24985       <webidl>  <ref>Tizen</ref> implements <ref>ContentManagerObject</ref>;</webidl>
24986     </Implements>
24987     <Interface name="ContentManager" id="::Content::ContentManager">
24988       <webidl>  [NoInterfaceObject] interface ContentManager {
24989
24990     void update(<ref>Content</ref> content) raises(<ref>WebAPIException</ref>);
24991
24992     void updateBatch(<ref>Content</ref>[] contents,
24993                      optional <ref>SuccessCallback</ref>? successCallback,
24994                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
24995
24996     void getDirectories(<ref>ContentDirectoryArraySuccessCallback</ref> successCallback,
24997                         optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
24998
24999     void find(<ref>ContentArraySuccessCallback</ref> successCallback,
25000               optional <ref>ErrorCallback</ref>? errorCallback,
25001               optional <ref>ContentDirectoryId</ref>? directoryId,
25002               optional <ref>AbstractFilter</ref>? filter,
25003               optional <ref>SortMode</ref>? sortMode,
25004               optional unsigned long? count,
25005               optional unsigned long? offset) raises(<ref>WebAPIException</ref>);
25006
25007
25008     void scanFile(DOMString contentURI,
25009                   optional <ref>ContentScanSuccessCallback</ref>? successCallback,
25010                   optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
25011
25012     void setChangeListener(<ref>ContentChangeCallback</ref> changeCallback) raises(<ref>WebAPIException</ref>);
25013
25014     void unsetChangeListener() raises(<ref>WebAPIException</ref>);
25015
25016   };</webidl>
25017       <descriptive>
25018           <brief>
25019  This interface provides operations to retrieve and manipulate contents.
25020           </brief>
25021           <version>
25022  2.0
25023           </version>
25024       </descriptive>
25025       <ExtendedAttributeList>
25026         <ExtendedAttribute name="NoInterfaceObject">
25027           <webidl>NoInterfaceObject</webidl>
25028         </ExtendedAttribute>
25029       </ExtendedAttributeList>
25030       <Operation name="update" id="::Content::ContentManager::update">
25031         <webidl>    void update(<ref>Content</ref> content) raises(<ref>WebAPIException</ref>);</webidl>
25032         <descriptive>
25033             <brief>
25034  Updates attributes of the content in content database synchronously.
25035             </brief>
25036            <description>
25037             <p>
25038 When an application has changed some attributes of a content, this method allows
25039 writing it back to the content database.
25040             </p>
25041            </description>
25042             <version>
25043  2.0
25044             </version>
25045             <privilegelevel>
25046  public
25047             </privilegelevel>
25048             <privilege>
25049  http://tizen.org/privilege/content.write
25050             </privilege>
25051             <remark>
25052  The <em>editableAttributes </em>in <em>Content </em>interface indicates 
25053 the attributes that can be changed. 
25054 This API does not support updating the metadata of a file.
25055             </remark>
25056             <Code> // Assume the content is a Content object as a result of find method.
25057  // Check the description is editable, and then set a description.
25058  if (content.editableAttributes.indexOf(&quot;description&quot;) >= 0) {
25059      content.description = &quot;Sample content&quot;;
25060  }
25061  tizen.content.update(content);
25062  </Code>
25063         </descriptive>
25064         <Type type="void"/>
25065         <ArgumentList>
25066           <Argument name="content">
25067             <descriptive>
25068                 <description><p>
25069  The content to update.
25070                 </p></description>
25071             </descriptive>
25072             <Type name="Content"/>
25073           </Argument>
25074         </ArgumentList>
25075         <Raises>
25076           <RaiseException name="WebAPIException">
25077             <descriptive>
25078                 <description><p>
25079  with error type TypeMismatchError, if any input parameter
25080 is not compatible with the expected type for that parameter.
25081                 </p></description>
25082                 <description><p>
25083  with error type InvalidValuesError, if any of the input parameters
25084 contain an invalid value.
25085                 </p></description>
25086                 <description><p>
25087  with error type SecurityError, if the application does not have the privilege to call this method.
25088                 </p></description>
25089                 <description><p>
25090  with error type UnknownError in any other error case.
25091                 </p></description>
25092             </descriptive>
25093           </RaiseException>
25094         </Raises>
25095       </Operation>
25096       <Operation name="updateBatch" id="::Content::ContentManager::updateBatch">
25097         <webidl>    void updateBatch(<ref>Content</ref>[] contents,
25098                      optional <ref>SuccessCallback</ref>? successCallback,
25099                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
25100         <descriptive>
25101             <brief>
25102  Updates a batch of content attributes in the content database synchronously.
25103             </brief>
25104            <description>
25105             <p>
25106 When an application has changed any attributes in array of content, this method allows writing them
25107 back to the content database.
25108             </p>
25109             <p>
25110 The errorCallback can be launched with any of these error types:
25111             </p>
25112             <ul>
25113               <li>
25114 InvalidValuesError: If any of the input parameters contain an invalid value.              </li>
25115               <li>
25116 UnknownError: In any other error case.              </li>
25117             </ul>
25118            </description>
25119             <version>
25120  2.0
25121             </version>
25122             <privilegelevel>
25123  public
25124             </privilegelevel>
25125             <privilege>
25126  http://tizen.org/privilege/content.write
25127             </privilege>
25128             <remark>
25129  The <em>editableAttributes </em>in <em>Content </em>interface indicates 
25130 the attributes that can be changed.
25131 This API does not support updating the metadata of a file.
25132             </remark>
25133             <Code> // The following example increases rating of an content by 1
25134
25135  function errorCB(err) {
25136      console.log( 'The following error occurred: ' +  err.name);
25137  }
25138
25139  function successCB() {
25140      console.log('Attributes set successfully');
25141  }
25142
25143  // Assume the content is a Content object as a result of find method.
25144  // Check the rating is editable, and then increase by 1.
25145  if (content.editableAttributes.indexOf(&quot;rating&quot;) >= 0) {
25146      content.rating++;
25147  }
25148  tizen.content.updateBatch([content], successCB, errorCB);
25149  </Code>
25150         </descriptive>
25151         <Type type="void"/>
25152         <ArgumentList>
25153           <Argument name="contents">
25154             <descriptive>
25155                 <description><p>
25156  Array of content to change.
25157                 </p></description>
25158             </descriptive>
25159             <Type type="array">
25160               <Type name="Content"/>
25161             </Type>
25162           </Argument>
25163           <Argument optional="optional" name="successCallback">
25164             <descriptive>
25165                 <description><p>
25166  Function called when attributes have been changed.
25167                 </p></description>
25168             </descriptive>
25169             <Type name="SuccessCallback" nullable="nullable"/>
25170           </Argument>
25171           <Argument optional="optional" name="errorCallback">
25172             <descriptive>
25173                 <description><p>
25174  Function called when an error has occurred.
25175                 </p></description>
25176             </descriptive>
25177             <Type name="ErrorCallback" nullable="nullable"/>
25178           </Argument>
25179         </ArgumentList>
25180         <Raises>
25181           <RaiseException name="WebAPIException">
25182             <descriptive>
25183                 <description><p>
25184  with error type TypeMismatchError, if the input parameter
25185 is not compatible with the expected type for that parameter.
25186                 </p></description>
25187                 <description><p>
25188  with error type SecurityError, if the application does not have the privilege to call this method.
25189                 </p></description>
25190             </descriptive>
25191           </RaiseException>
25192         </Raises>
25193       </Operation>
25194       <Operation name="getDirectories" id="::Content::ContentManager::getDirectories">
25195         <webidl>    void getDirectories(<ref>ContentDirectoryArraySuccessCallback</ref> successCallback,
25196                         optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
25197         <descriptive>
25198             <brief>
25199  Gets a list of content directory.
25200             </brief>
25201            <description>
25202             <p>
25203 This method returns (via callback) a list of content directory objects. To obtain a list of contents
25204 in a specific directory, use find() method with the directory ID.
25205             </p>
25206             <p>
25207 The errorCallback is launched with this error type:
25208             </p>
25209             <ul>
25210               <li>
25211 UnknownError: In any other error case.              </li>
25212             </ul>
25213            </description>
25214             <version>
25215  2.0
25216             </version>
25217             <Code> // The following example retrieves content directories in the storage.
25218
25219  function errorCB(err) {
25220      console.log( 'The following error occurred: ' +  err.name);
25221  }
25222
25223  function printDirectory(directory, index, directories) {
25224      console.log('directoryURI: ' + directory.directoryURI + ' Title: ' + directory.title);
25225  }
25226  function getDirectoriesCB(directories) {
25227      directories.forEach(printDirectory);
25228  }
25229
25230  tizen.content.getDirectories(getDirectoriesCB, errorCB);
25231  </Code>
25232         </descriptive>
25233         <Type type="void"/>
25234         <ArgumentList>
25235           <Argument name="successCallback">
25236             <descriptive>
25237                 <description><p>
25238  Function called when content directories have been retrieved successfully.
25239                 </p></description>
25240             </descriptive>
25241             <Type name="ContentDirectoryArraySuccessCallback"/>
25242           </Argument>
25243           <Argument optional="optional" name="errorCallback">
25244             <descriptive>
25245                 <description><p>
25246  Function called when an error has occurred.
25247                 </p></description>
25248             </descriptive>
25249             <Type name="ErrorCallback" nullable="nullable"/>
25250           </Argument>
25251         </ArgumentList>
25252         <Raises>
25253           <RaiseException name="WebAPIException">
25254             <descriptive>
25255                 <description><p>
25256  with error type TypeMismatchError, if the input parameter
25257 is not compatible with the expected type for that parameter.
25258                 </p></description>
25259             </descriptive>
25260           </RaiseException>
25261         </Raises>
25262       </Operation>
25263       <Operation name="find" id="::Content::ContentManager::find">
25264         <webidl>    void find(<ref>ContentArraySuccessCallback</ref> successCallback,
25265               optional <ref>ErrorCallback</ref>? errorCallback,
25266               optional <ref>ContentDirectoryId</ref>? directoryId,
25267               optional <ref>AbstractFilter</ref>? filter,
25268               optional <ref>SortMode</ref>? sortMode,
25269               optional unsigned long? count,
25270               optional unsigned long? offset) raises(<ref>WebAPIException</ref>);</webidl>
25271         <descriptive>
25272             <brief>
25273  Finds contents that satisfy the conditions set by a filter.
25274             </brief>
25275            <description>
25276             <p>
25277 This method allows searching based on a supplied filter. For more detail on AbstractFilter, see
25278 <a href="../../org.tizen.web.device.apireference/tizen/tizen.html#::Tizen::AbstractFilter">Tizen</a> module. The filter allows precise searching such
25279 as &quot;return all songs by artist U2, ordered by name&quot;.
25280             </p>
25281             <p>
25282 The errorCallback can be launched with these error types:
25283             </p>
25284             <ul>
25285               <li>
25286 InvalidValuesError: If any of the input parameters contain an invalid value.              </li>
25287               <li>
25288 UnknownError: In any other error case.              </li>
25289             </ul>
25290            </description>
25291             <version>
25292  2.0
25293             </version>
25294             <privilegelevel>
25295  public
25296             </privilegelevel>
25297             <privilege>
25298  http://tizen.org/privilege/content.read
25299             </privilege>
25300             <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.
25301  var count = 100;
25302  var offset = 0;
25303  var sortMode = new tizen.SortMode(&quot;trackNumber&quot;, &quot;ASC&quot;);
25304  var artistFilter = new tizen.AttributeFilter(&quot;artists&quot;, &quot;EXACTLY&quot;, &quot;U2&quot;);
25305  var albumFilter = new tizen.AttributeFilter(&quot;album&quot;, &quot;EXACTLY&quot;, &quot;The Joshua Tree&quot;);
25306  var filter = new tizen.CompositeFilter(&quot;INTERSECTION&quot;, [albumFilter, artistFilter]);
25307  
25308  function errorCB(err) {
25309      console.log( 'The following error occurred: ' +  err.name);
25310  }
25311
25312  function printContent(content, index, contents) {
25313      console.log('Track: ' + content.trackNumber + ' Title: ' + content.title + 'Duration: ' + content.duration + 'URL: ' + content.contentURI + 'MIME: ' + content.mimeType);
25314  }
25315
25316  function findCB(contents) {
25317      console.log('The Joshua Tree by U2:');
25318      contents.forEach(printContent);
25319      // Increase the offset as much as the count and then find content again.
25320      if (contents.length == count) {
25321          offset += count;
25322          tizen.content.find(findCB, errorCB, null, filter, sortMode, count, offset);
25323      }
25324  }
25325
25326  tizen.content.find(findCB, errorCB, null, filter, sortMode, count, offset);
25327
25328  </Code>
25329         </descriptive>
25330         <Type type="void"/>
25331         <ArgumentList>
25332           <Argument name="successCallback">
25333             <descriptive>
25334                 <description><p>
25335  Function called when a content have been retrieved.
25336                 </p></description>
25337             </descriptive>
25338             <Type name="ContentArraySuccessCallback"/>
25339           </Argument>
25340           <Argument optional="optional" name="errorCallback">
25341             <descriptive>
25342                 <description><p>
25343  Function called when an error has occurred.
25344                 </p></description>
25345             </descriptive>
25346             <Type name="ErrorCallback" nullable="nullable"/>
25347           </Argument>
25348           <Argument optional="optional" name="directoryId">
25349             <descriptive>
25350                 <description><p>
25351  Directory ID that is use to select content to retrieve in a specified directory.
25352                 </p></description>
25353             </descriptive>
25354             <Type name="ContentDirectoryId" nullable="nullable"/>
25355           </Argument>
25356           <Argument optional="optional" name="filter">
25357             <descriptive>
25358                 <description><p>
25359  Filter that is used to select content to retrieve.
25360                 </p></description>
25361             </descriptive>
25362             <Type name="AbstractFilter" nullable="nullable"/>
25363           </Argument>
25364           <Argument optional="optional" name="sortMode">
25365             <descriptive>
25366                 <description><p>
25367  Used to determine the sort order in which the content are returned.
25368                 </p></description>
25369             </descriptive>
25370             <Type name="SortMode" nullable="nullable"/>
25371           </Argument>
25372           <Argument optional="optional" name="count">
25373             <descriptive>
25374                 <description><p>
25375  Maximum amount of content to return.
25376                 </p></description>
25377             </descriptive>
25378             <Type type="unsigned long" nullable="nullable"/>
25379           </Argument>
25380           <Argument optional="optional" name="offset">
25381             <descriptive>
25382                 <description><p>
25383  Offset of the result set.
25384                 </p></description>
25385             </descriptive>
25386             <Type type="unsigned long" nullable="nullable"/>
25387           </Argument>
25388         </ArgumentList>
25389         <Raises>
25390           <RaiseException name="WebAPIException">
25391             <descriptive>
25392                 <description><p>
25393  with error type TypeMismatchError, if the input parameter
25394 is not compatible with the expected type for that parameter.
25395                 </p></description>
25396                 <description><p>
25397  with error type SecurityError, if the application does not have the privilege to call this method.
25398                 </p></description>
25399                 <description><p>
25400  with error type NotSupportedError, if this feature is not supported.
25401                 </p></description>
25402             </descriptive>
25403           </RaiseException>
25404         </Raises>
25405       </Operation>
25406       <Operation name="scanFile" id="::Content::ContentManager::scanFile">
25407         <webidl>    void scanFile(DOMString contentURI,
25408                   optional <ref>ContentScanSuccessCallback</ref>? successCallback,
25409                   optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
25410         <descriptive>
25411             <brief>
25412  Scan a file to create or update a content in the content database.
25413             </brief>
25414            <description>
25415             <p>
25416 When an application creates or updates a content, this method allows scan it 
25417 to insert or update the content in the content database.
25418             </p>
25419            </description>
25420             <version>
25421  2.1
25422             </version>
25423             <privilegelevel>
25424  public
25425             </privilegelevel>
25426             <privilege>
25427  http://tizen.org/privilege/content.write
25428             </privilege>
25429             <Code> // The following example scan 'tizen.jpg' in media directory
25430
25431  function errorCB(err) {
25432      console.log( 'The following error occurred: ' +  err.name);
25433  }
25434
25435  function successCB(path) {
25436      console.log('scanning is completed');
25437  }
25438
25439  var path = &quot;file:///opt/usr/media/tizen.jpg&quot;;
25440  tizen.content.scanFile(path, successCB, errorCB);
25441
25442  </Code>
25443         </descriptive>
25444         <Type type="void"/>
25445         <ArgumentList>
25446           <Argument name="contentURI">
25447             <descriptive>
25448                 <description><p>
25449  The URI of content to scan.
25450                 </p></description>
25451             </descriptive>
25452             <Type type="DOMString"/>
25453           </Argument>
25454           <Argument optional="optional" name="successCallback">
25455             <descriptive>
25456                 <description><p>
25457  Function called when scanning has been completed.
25458                 </p></description>
25459             </descriptive>
25460             <Type name="ContentScanSuccessCallback" nullable="nullable"/>
25461           </Argument>
25462           <Argument optional="optional" name="errorCallback">
25463             <descriptive>
25464                 <description><p>
25465  Function called when an error has occurred.
25466                 </p></description>
25467             </descriptive>
25468             <Type name="ErrorCallback" nullable="nullable"/>
25469           </Argument>
25470         </ArgumentList>
25471         <Raises>
25472           <RaiseException name="WebAPIException">
25473             <descriptive>
25474                 <description><p>
25475  with error type TypeMismatchError, if any input parameter
25476 is not compatible with the expected type for that parameter.
25477                 </p></description>
25478                 <description><p>
25479  with error type InvalidValuesError, if any of the input parameters
25480 contain an invalid value.
25481                 </p></description>
25482                 <description><p>
25483  with error type SecurityError, if the application does not have the privilege to call this method.
25484                 </p></description>
25485                 <description><p>
25486  with error type UnknownError in any other error case.
25487                 </p></description>
25488             </descriptive>
25489           </RaiseException>
25490         </Raises>
25491       </Operation>
25492       <Operation name="setChangeListener" id="::Content::ContentManager::setChangeListener">
25493         <webidl>    void setChangeListener(<ref>ContentChangeCallback</ref> changeCallback) raises(<ref>WebAPIException</ref>);</webidl>
25494         <descriptive>
25495             <brief>
25496  Sets a listener to receive notifications about content changes.
25497             </brief>
25498             <version>
25499  2.1
25500             </version>
25501             <privilegelevel>
25502  public
25503             </privilegelevel>
25504             <privilege>
25505  http://tizen.org/privilege/content.read
25506             </privilege>
25507             <Code> var listener= {
25508     oncontentadded: function(content) {
25509         console.log(content.contentURI + ' content is added');
25510     },
25511     oncontentupdated: function(content) {
25512         console.log(content.contentURI + ' content is updated');
25513     },
25514     oncontentremoved: function(id) {
25515         console.log(id + ' is removed');
25516     }
25517  };
25518
25519  // Registers to be notified when the content changes
25520  tizen.content.setChangeListener(listener);
25521
25522  </Code>
25523         </descriptive>
25524         <Type type="void"/>
25525         <ArgumentList>
25526           <Argument name="changeCallback">
25527             <descriptive>
25528                 <description><p>
25529  A callback to be invoked for receiving content change notification.
25530                 </p></description>
25531             </descriptive>
25532             <Type name="ContentChangeCallback"/>
25533           </Argument>
25534         </ArgumentList>
25535         <Raises>
25536           <RaiseException name="WebAPIException">
25537             <descriptive>
25538                 <description><p>
25539  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
25540                 </p></description>
25541                 <description><p>
25542  with error type InvalidValuesError, if any of the input parameters contain an invalid value.
25543                 </p></description>
25544                 <description><p>
25545  with error type SecurityError, if the application does not have the privilege to call this method.
25546                 </p></description>
25547                 <description><p>
25548  with error type UnknownError, if any other error occurs.
25549                 </p></description>
25550             </descriptive>
25551           </RaiseException>
25552         </Raises>
25553       </Operation>
25554       <Operation name="unsetChangeListener" id="::Content::ContentManager::unsetChangeListener">
25555         <webidl>    void unsetChangeListener() raises(<ref>WebAPIException</ref>);</webidl>
25556         <descriptive>
25557             <brief>
25558  Unsets the listener to unsubscribes from receiving notification for any content changes.
25559             </brief>
25560             <version>
25561  2.1
25562             </version>
25563             <privilegelevel>
25564  public
25565             </privilegelevel>
25566             <privilege>
25567  http://tizen.org/privilege/content.read
25568             </privilege>
25569             <Code> tizen.content.unsetChangeListener();
25570
25571  </Code>
25572         </descriptive>
25573         <Type type="void"/>
25574         <ArgumentList/>
25575         <Raises>
25576           <RaiseException name="WebAPIException">
25577             <descriptive>
25578                 <description><p>
25579  with error type SecurityError, if the application does not have the privilege to call this method.
25580                 </p></description>
25581                 <description><p>
25582  with error type UnknownError if any other error occurs.
25583                 </p></description>
25584             </descriptive>
25585           </RaiseException>
25586         </Raises>
25587       </Operation>
25588     </Interface>
25589     <Interface name="ContentArraySuccessCallback" id="::Content::ContentArraySuccessCallback">
25590       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface ContentArraySuccessCallback {
25591     void onsuccess(<ref>Content</ref>[] contents);
25592   };</webidl>
25593       <descriptive>
25594           <brief>
25595  The callback function used to return a list of content objects.
25596           </brief>
25597           <version>
25598  2.0
25599           </version>
25600       </descriptive>
25601       <ExtendedAttributeList>
25602         <ExtendedAttribute name="Callback" value="FunctionOnly">
25603           <webidl>Callback</webidl>
25604         </ExtendedAttribute>
25605         <ExtendedAttribute name="NoInterfaceObject">
25606           <webidl> NoInterfaceObject</webidl>
25607         </ExtendedAttribute>
25608       </ExtendedAttributeList>
25609       <Operation name="onsuccess" id="::Content::ContentArraySuccessCallback::onsuccess">
25610         <webidl>    void onsuccess(<ref>Content</ref>[] contents);</webidl>
25611         <descriptive>
25612             <brief>
25613  Called when the list of content is retrieved successfully.
25614             </brief>
25615             <version>
25616  2.0
25617             </version>
25618         </descriptive>
25619         <Type type="void"/>
25620         <ArgumentList>
25621           <Argument name="contents">
25622             <descriptive>
25623                 <description><p>
25624  The array of <em>Content </em>objects.
25625                 </p></description>
25626             </descriptive>
25627             <Type type="array">
25628               <Type name="Content"/>
25629             </Type>
25630           </Argument>
25631         </ArgumentList>
25632       </Operation>
25633     </Interface>
25634     <Interface name="ContentDirectoryArraySuccessCallback" id="::Content::ContentDirectoryArraySuccessCallback">
25635       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface ContentDirectoryArraySuccessCallback {
25636     void onsuccess(<ref>ContentDirectory</ref>[] directories);
25637   };</webidl>
25638       <descriptive>
25639           <brief>
25640  The callback function used to return a list of ContentDirectory objects.
25641           </brief>
25642           <version>
25643  2.0
25644           </version>
25645       </descriptive>
25646       <ExtendedAttributeList>
25647         <ExtendedAttribute name="Callback" value="FunctionOnly">
25648           <webidl>Callback</webidl>
25649         </ExtendedAttribute>
25650         <ExtendedAttribute name="NoInterfaceObject">
25651           <webidl> NoInterfaceObject</webidl>
25652         </ExtendedAttribute>
25653       </ExtendedAttributeList>
25654       <Operation name="onsuccess" id="::Content::ContentDirectoryArraySuccessCallback::onsuccess">
25655         <webidl>    void onsuccess(<ref>ContentDirectory</ref>[] directories);</webidl>
25656         <descriptive>
25657             <brief>
25658  Called when the list of directory is retrieved successfully.
25659             </brief>
25660             <version>
25661  2.0
25662             </version>
25663         </descriptive>
25664         <Type type="void"/>
25665         <ArgumentList>
25666           <Argument name="directories">
25667             <descriptive>
25668                 <description><p>
25669  The array of <em>ContentDirectory </em>objects.
25670                 </p></description>
25671             </descriptive>
25672             <Type type="array">
25673               <Type name="ContentDirectory"/>
25674             </Type>
25675           </Argument>
25676         </ArgumentList>
25677       </Operation>
25678     </Interface>
25679     <Interface name="ContentScanSuccessCallback" id="::Content::ContentScanSuccessCallback">
25680       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface ContentScanSuccessCallback {
25681     void onsuccess(DOMString contentURI);
25682   };</webidl>
25683       <descriptive>
25684           <brief>
25685  The callback function used to return a content to scan has been completed.
25686           </brief>
25687           <version>
25688  2.1
25689           </version>
25690       </descriptive>
25691       <ExtendedAttributeList>
25692         <ExtendedAttribute name="Callback" value="FunctionOnly">
25693           <webidl>Callback</webidl>
25694         </ExtendedAttribute>
25695         <ExtendedAttribute name="NoInterfaceObject">
25696           <webidl> NoInterfaceObject</webidl>
25697         </ExtendedAttribute>
25698       </ExtendedAttributeList>
25699       <Operation name="onsuccess" id="::Content::ContentScanSuccessCallback::onsuccess">
25700         <webidl>    void onsuccess(DOMString contentURI);</webidl>
25701         <descriptive>
25702             <brief>
25703  Called when the scanning has been completed.
25704             </brief>
25705             <version>
25706  2.1
25707             </version>
25708         </descriptive>
25709         <Type type="void"/>
25710         <ArgumentList>
25711           <Argument name="contentURI">
25712             <descriptive>
25713                 <description><p>
25714  The URI of <em>Content </em>objects.
25715                 </p></description>
25716             </descriptive>
25717             <Type type="DOMString"/>
25718           </Argument>
25719         </ArgumentList>
25720       </Operation>
25721     </Interface>
25722     <Interface name="ContentChangeCallback" id="::Content::ContentChangeCallback">
25723       <webidl>  [Callback, NoInterfaceObject] interface ContentChangeCallback {
25724     void oncontentadded(<ref>Content</ref> content);
25725
25726     void oncontentupdated(<ref>Content</ref> content);
25727
25728     void oncontentremoved(<ref>ContentId</ref> id);
25729   };</webidl>
25730       <descriptive>
25731           <brief>
25732  This interface specifies a set of methods that are invoked every time a content change occurs.
25733           </brief>
25734           <version>
25735  2.1
25736           </version>
25737       </descriptive>
25738       <ExtendedAttributeList>
25739         <ExtendedAttribute name="Callback">
25740           <webidl>Callback</webidl>
25741         </ExtendedAttribute>
25742         <ExtendedAttribute name="NoInterfaceObject">
25743           <webidl> NoInterfaceObject</webidl>
25744         </ExtendedAttribute>
25745       </ExtendedAttributeList>
25746       <Operation name="oncontentadded" id="::Content::ContentChangeCallback::oncontentadded">
25747         <webidl>    void oncontentadded(<ref>Content</ref> content);</webidl>
25748         <descriptive>
25749             <brief>
25750  Called when content is added.
25751             </brief>
25752             <version>
25753  2.1
25754             </version>
25755         </descriptive>
25756         <Type type="void"/>
25757         <ArgumentList>
25758           <Argument name="content">
25759             <descriptive>
25760                 <description><p>
25761  The content to add.
25762                 </p></description>
25763             </descriptive>
25764             <Type name="Content"/>
25765           </Argument>
25766         </ArgumentList>
25767       </Operation>
25768       <Operation name="oncontentupdated" id="::Content::ContentChangeCallback::oncontentupdated">
25769         <webidl>    void oncontentupdated(<ref>Content</ref> content);</webidl>
25770         <descriptive>
25771             <brief>
25772  Called when content is updated.
25773             </brief>
25774             <version>
25775  2.1
25776             </version>
25777         </descriptive>
25778         <Type type="void"/>
25779         <ArgumentList>
25780           <Argument name="content">
25781             <descriptive>
25782                 <description><p>
25783  The content to update.
25784                 </p></description>
25785             </descriptive>
25786             <Type name="Content"/>
25787           </Argument>
25788         </ArgumentList>
25789       </Operation>
25790       <Operation name="oncontentremoved" id="::Content::ContentChangeCallback::oncontentremoved">
25791         <webidl>    void oncontentremoved(<ref>ContentId</ref> id);</webidl>
25792         <descriptive>
25793             <brief>
25794  Called when content is removed.
25795             </brief>
25796             <version>
25797  2.1
25798             </version>
25799         </descriptive>
25800         <Type type="void"/>
25801         <ArgumentList>
25802           <Argument name="id">
25803             <descriptive>
25804                 <description><p>
25805  The id of content to remove.
25806                 </p></description>
25807             </descriptive>
25808             <Type name="ContentId"/>
25809           </Argument>
25810         </ArgumentList>
25811       </Operation>
25812     </Interface>
25813     <Interface name="ContentDirectory" id="::Content::ContentDirectory">
25814       <webidl>  [NoInterfaceObject] interface ContentDirectory {
25815
25816     readonly attribute <ref>ContentDirectoryId</ref> id;
25817
25818     readonly attribute DOMString directoryURI;
25819
25820     readonly attribute DOMString title;
25821
25822     readonly attribute <ref>ContentDirectoryStorageType</ref> storageType;
25823
25824     readonly attribute Date? modifiedDate;
25825
25826    };</webidl>
25827       <descriptive>
25828           <brief>
25829  This interface that provides access to properties of a content directory.
25830           </brief>
25831           <version>
25832  2.0
25833           </version>
25834       </descriptive>
25835       <ExtendedAttributeList>
25836         <ExtendedAttribute name="NoInterfaceObject">
25837           <webidl>NoInterfaceObject</webidl>
25838         </ExtendedAttribute>
25839       </ExtendedAttributeList>
25840       <Attribute readonly="readonly" name="id" id="::Content::ContentDirectory::id">
25841         <webidl>    readonly attribute <ref>ContentDirectoryId</ref> id;</webidl>
25842         <descriptive>
25843             <brief>
25844  The opaque content directory identifier.
25845             </brief>
25846             <version>
25847  2.0
25848             </version>
25849         </descriptive>
25850         <Type name="ContentDirectoryId"/>
25851       </Attribute>
25852       <Attribute readonly="readonly" name="directoryURI" id="::Content::ContentDirectory::directoryURI">
25853         <webidl>    readonly attribute DOMString directoryURI;</webidl>
25854         <descriptive>
25855             <brief>
25856  The directory path on the device.
25857             </brief>
25858             <version>
25859  2.0
25860             </version>
25861         </descriptive>
25862         <Type type="DOMString"/>
25863       </Attribute>
25864       <Attribute readonly="readonly" name="title" id="::Content::ContentDirectory::title">
25865         <webidl>    readonly attribute DOMString title;</webidl>
25866         <descriptive>
25867             <brief>
25868  The directory name.
25869             </brief>
25870             <version>
25871  2.0
25872             </version>
25873         </descriptive>
25874         <Type type="DOMString"/>
25875       </Attribute>
25876       <Attribute readonly="readonly" name="storageType" id="::Content::ContentDirectory::storageType">
25877         <webidl>    readonly attribute <ref>ContentDirectoryStorageType</ref> storageType;</webidl>
25878         <descriptive>
25879             <brief>
25880  The type of a device storage.
25881             </brief>
25882             <version>
25883  2.0
25884             </version>
25885         </descriptive>
25886         <Type name="ContentDirectoryStorageType"/>
25887       </Attribute>
25888       <Attribute readonly="readonly" name="modifiedDate" id="::Content::ContentDirectory::modifiedDate">
25889         <webidl>    readonly attribute Date? modifiedDate;</webidl>
25890         <descriptive>
25891             <brief>
25892  The last modified date for a directory.
25893             </brief>
25894             <version>
25895  2.0
25896             </version>
25897         </descriptive>
25898         <Type type="Date" nullable="nullable"/>
25899       </Attribute>
25900     </Interface>
25901     <Interface name="Content" id="::Content::Content">
25902       <webidl>  [NoInterfaceObject] interface Content {
25903
25904     readonly attribute DOMString[] editableAttributes;
25905
25906     readonly attribute <ref>ContentId</ref> id;
25907
25908     attribute DOMString name;
25909
25910     readonly attribute <ref>ContentType</ref> type;
25911
25912     readonly attribute DOMString mimeType;
25913
25914     readonly attribute DOMString title;
25915
25916     readonly attribute DOMString contentURI;
25917
25918     readonly attribute DOMString[]? thumbnailURIs;
25919
25920     readonly attribute Date? releaseDate;
25921
25922     readonly attribute Date? modifiedDate;
25923
25924     readonly attribute unsigned long size;
25925
25926     attribute DOMString? description;
25927
25928     attribute unsigned long rating;
25929   };</webidl>
25930       <descriptive>
25931           <brief>
25932  This interface provides access to properties of a content.
25933           </brief>
25934           <version>
25935  2.0
25936           </version>
25937       </descriptive>
25938       <ExtendedAttributeList>
25939         <ExtendedAttribute name="NoInterfaceObject">
25940           <webidl>NoInterfaceObject</webidl>
25941         </ExtendedAttribute>
25942       </ExtendedAttributeList>
25943       <Attribute readonly="readonly" name="editableAttributes" id="::Content::Content::editableAttributes">
25944         <webidl>    readonly attribute DOMString[] editableAttributes;</webidl>
25945         <descriptive>
25946             <brief>
25947  The list of attributes that can be editable to the local backend using update or updateBatch method.
25948             </brief>
25949             <version>
25950  2.0
25951             </version>
25952         </descriptive>
25953         <Type type="array">
25954           <Type type="DOMString"/>
25955         </Type>
25956       </Attribute>
25957       <Attribute readonly="readonly" name="id" id="::Content::Content::id">
25958         <webidl>    readonly attribute <ref>ContentId</ref> id;</webidl>
25959         <descriptive>
25960             <brief>
25961  The opaque content identifier.
25962             </brief>
25963             <version>
25964  2.0
25965             </version>
25966         </descriptive>
25967         <Type name="ContentId"/>
25968       </Attribute>
25969       <Attribute name="name" id="::Content::Content::name">
25970         <webidl>    attribute DOMString name;</webidl>
25971         <descriptive>
25972             <brief>
25973  The content name. The initial value is the file name of the content.
25974             </brief>
25975             <version>
25976  2.1
25977             </version>
25978         </descriptive>
25979         <Type type="DOMString"/>
25980       </Attribute>
25981       <Attribute readonly="readonly" name="type" id="::Content::Content::type">
25982         <webidl>    readonly attribute <ref>ContentType</ref> type;</webidl>
25983         <descriptive>
25984             <brief>
25985  The content type.
25986             </brief>
25987             <version>
25988  2.0
25989             </version>
25990         </descriptive>
25991         <Type name="ContentType"/>
25992       </Attribute>
25993       <Attribute readonly="readonly" name="mimeType" id="::Content::Content::mimeType">
25994         <webidl>    readonly attribute DOMString mimeType;</webidl>
25995         <descriptive>
25996             <brief>
25997  The content MIME type.
25998             </brief>
25999             <version>
26000  2.0
26001             </version>
26002         </descriptive>
26003         <Type type="DOMString"/>
26004       </Attribute>
26005       <Attribute readonly="readonly" name="title" id="::Content::Content::title">
26006         <webidl>    readonly attribute DOMString title;</webidl>
26007         <descriptive>
26008             <brief>
26009  The content title.
26010             </brief>
26011             <version>
26012  2.0
26013             </version>
26014         </descriptive>
26015         <Type type="DOMString"/>
26016       </Attribute>
26017       <Attribute readonly="readonly" name="contentURI" id="::Content::Content::contentURI">
26018         <webidl>    readonly attribute DOMString contentURI;</webidl>
26019         <descriptive>
26020             <brief>
26021  The URI to access the content.
26022             </brief>
26023             <version>
26024  2.0
26025             </version>
26026         </descriptive>
26027         <Type type="DOMString"/>
26028       </Attribute>
26029       <Attribute readonly="readonly" name="thumbnailURIs" id="::Content::Content::thumbnailURIs">
26030         <webidl>    readonly attribute DOMString[]? thumbnailURIs;</webidl>
26031         <descriptive>
26032             <brief>
26033  The array of content thumbnails URIs.
26034             </brief>
26035             <version>
26036  2.0
26037             </version>
26038         </descriptive>
26039         <Type type="array" nullable="nullable">
26040           <Type type="DOMString"/>
26041         </Type>
26042       </Attribute>
26043       <Attribute readonly="readonly" name="releaseDate" id="::Content::Content::releaseDate">
26044         <webidl>    readonly attribute Date? releaseDate;</webidl>
26045         <descriptive>
26046             <brief>
26047  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.
26048             </brief>
26049             <version>
26050  2.0
26051             </version>
26052         </descriptive>
26053         <Type type="Date" nullable="nullable"/>
26054       </Attribute>
26055       <Attribute readonly="readonly" name="modifiedDate" id="::Content::Content::modifiedDate">
26056         <webidl>    readonly attribute Date? modifiedDate;</webidl>
26057         <descriptive>
26058             <brief>
26059  The last modified date for a content.
26060             </brief>
26061             <version>
26062  2.0
26063             </version>
26064         </descriptive>
26065         <Type type="Date" nullable="nullable"/>
26066       </Attribute>
26067       <Attribute readonly="readonly" name="size" id="::Content::Content::size">
26068         <webidl>    readonly attribute unsigned long size;</webidl>
26069         <descriptive>
26070             <brief>
26071  The file size of the content in bytes.
26072             </brief>
26073             <version>
26074  2.0
26075             </version>
26076         </descriptive>
26077         <Type type="unsigned long"/>
26078       </Attribute>
26079       <Attribute name="description" id="::Content::Content::description">
26080         <webidl>    attribute DOMString? description;</webidl>
26081         <descriptive>
26082             <brief>
26083  The content description.
26084             </brief>
26085             <version>
26086  2.0
26087             </version>
26088         </descriptive>
26089         <Type type="DOMString" nullable="nullable"/>
26090       </Attribute>
26091       <Attribute name="rating" id="::Content::Content::rating">
26092         <webidl>    attribute unsigned long rating;</webidl>
26093         <descriptive>
26094             <brief>
26095  The content rating and this value can vary from <var>0 </var>to <var>10</var>.
26096             </brief>
26097             <version>
26098  2.0
26099             </version>
26100         </descriptive>
26101         <Type type="unsigned long"/>
26102       </Attribute>
26103     </Interface>
26104     <Interface name="VideoContent" id="::Content::VideoContent">
26105       <webidl>  [NoInterfaceObject] interface VideoContent : <ref>Content</ref> {
26106
26107     attribute <ref>SimpleCoordinates</ref>? geolocation;
26108
26109     readonly attribute DOMString? album;
26110
26111     readonly attribute DOMString[]? artists;
26112
26113     readonly attribute unsigned long duration;
26114
26115     readonly attribute unsigned long width;
26116
26117     readonly attribute unsigned long height;
26118
26119   };</webidl>
26120       <descriptive>
26121           <brief>
26122  This interface extends a basic <em>Content </em>object with video-specific attributes.
26123           </brief>
26124           <version>
26125  2.0
26126           </version>
26127       </descriptive>
26128       <ExtendedAttributeList>
26129         <ExtendedAttribute name="NoInterfaceObject">
26130           <webidl>NoInterfaceObject</webidl>
26131         </ExtendedAttribute>
26132       </ExtendedAttributeList>
26133       <InterfaceInheritance>
26134         <Name name="Content"/>
26135       </InterfaceInheritance>
26136       <Attribute name="geolocation" id="::Content::VideoContent::geolocation">
26137         <webidl>    attribute <ref>SimpleCoordinates</ref>? geolocation;</webidl>
26138         <descriptive>
26139             <brief>
26140  The geographical location where the video was made.
26141             </brief>
26142             <version>
26143  2.0
26144             </version>
26145         </descriptive>
26146         <Type name="SimpleCoordinates" nullable="nullable"/>
26147       </Attribute>
26148       <Attribute readonly="readonly" name="album" id="::Content::VideoContent::album">
26149         <webidl>    readonly attribute DOMString? album;</webidl>
26150         <descriptive>
26151             <brief>
26152  The album name to which the video belongs.
26153             </brief>
26154             <version>
26155  2.0
26156             </version>
26157         </descriptive>
26158         <Type type="DOMString" nullable="nullable"/>
26159       </Attribute>
26160       <Attribute readonly="readonly" name="artists" id="::Content::VideoContent::artists">
26161         <webidl>    readonly attribute DOMString[]? artists;</webidl>
26162         <descriptive>
26163             <brief>
26164  The list of artists who created the video.
26165             </brief>
26166             <version>
26167  2.0
26168             </version>
26169         </descriptive>
26170         <Type type="array" nullable="nullable">
26171           <Type type="DOMString"/>
26172         </Type>
26173       </Attribute>
26174       <Attribute readonly="readonly" name="duration" id="::Content::VideoContent::duration">
26175         <webidl>    readonly attribute unsigned long duration;</webidl>
26176         <descriptive>
26177             <brief>
26178  The video duration in milliseconds.
26179             </brief>
26180             <version>
26181  2.0
26182             </version>
26183         </descriptive>
26184         <Type type="unsigned long"/>
26185       </Attribute>
26186       <Attribute readonly="readonly" name="width" id="::Content::VideoContent::width">
26187         <webidl>    readonly attribute unsigned long width;</webidl>
26188         <descriptive>
26189             <brief>
26190  The width of a video in pixels.
26191             </brief>
26192             <version>
26193  2.0
26194             </version>
26195         </descriptive>
26196         <Type type="unsigned long"/>
26197       </Attribute>
26198       <Attribute readonly="readonly" name="height" id="::Content::VideoContent::height">
26199         <webidl>    readonly attribute unsigned long height;</webidl>
26200         <descriptive>
26201             <brief>
26202  The height of the video in pixels.
26203             </brief>
26204             <version>
26205  2.0
26206             </version>
26207         </descriptive>
26208         <Type type="unsigned long"/>
26209       </Attribute>
26210     </Interface>
26211     <Interface name="AudioContentLyrics" id="::Content::AudioContentLyrics">
26212       <webidl>  [NoInterfaceObject] interface AudioContentLyrics {
26213
26214     readonly attribute <ref>AudioContentLyricsType</ref> type;
26215
26216     readonly attribute unsigned long[] timestamps;
26217
26218     readonly attribute DOMString[] texts;
26219   };</webidl>
26220       <descriptive>
26221           <brief>
26222  This interface provides lyrics for music.
26223           </brief>
26224           <version>
26225  2.0
26226           </version>
26227       </descriptive>
26228       <ExtendedAttributeList>
26229         <ExtendedAttribute name="NoInterfaceObject">
26230           <webidl>NoInterfaceObject</webidl>
26231         </ExtendedAttribute>
26232       </ExtendedAttributeList>
26233       <Attribute readonly="readonly" name="type" id="::Content::AudioContentLyrics::type">
26234         <webidl>    readonly attribute <ref>AudioContentLyricsType</ref> type;</webidl>
26235         <descriptive>
26236             <brief>
26237  The type of lyrics, that is, whether they are synchronized with the music or not.
26238             </brief>
26239             <version>
26240  2.0
26241             </version>
26242         </descriptive>
26243         <Type name="AudioContentLyricsType"/>
26244       </Attribute>
26245       <Attribute readonly="readonly" name="timestamps" id="::Content::AudioContentLyrics::timestamps">
26246         <webidl>    readonly attribute unsigned long[] timestamps;</webidl>
26247         <descriptive>
26248             <brief>
26249  The array of timestamps in milliseconds for lyrics.
26250             </brief>
26251            <description>
26252             <p>
26253 If the lyrics are not synchronized (if there is no time information for the lyrics) the array is undefined.
26254             </p>
26255            </description>
26256             <version>
26257  2.0
26258             </version>
26259         </descriptive>
26260         <Type type="array">
26261           <Type type="unsigned long"/>
26262         </Type>
26263       </Attribute>
26264       <Attribute readonly="readonly" name="texts" id="::Content::AudioContentLyrics::texts">
26265         <webidl>    readonly attribute DOMString[] texts;</webidl>
26266         <descriptive>
26267             <brief>
26268  The array of lyric snippets.
26269             </brief>
26270            <description>
26271             <p>
26272 If the lyrics are not synchronized, the array has only one member with full lyrics.
26273             </p>
26274            </description>
26275             <version>
26276  2.0
26277             </version>
26278         </descriptive>
26279         <Type type="array">
26280           <Type type="DOMString"/>
26281         </Type>
26282       </Attribute>
26283     </Interface>
26284     <Interface name="AudioContent" id="::Content::AudioContent">
26285       <webidl>  [NoInterfaceObject] interface AudioContent : <ref>Content</ref> {
26286
26287     readonly attribute DOMString? album;
26288
26289     readonly attribute DOMString[]? genres;
26290
26291     readonly attribute DOMString[]? artists;
26292
26293     readonly attribute DOMString[]? composers;
26294
26295     readonly attribute <ref>AudioContentLyrics</ref>? lyrics;
26296
26297     readonly attribute DOMString? copyright;
26298
26299     readonly attribute unsigned long bitrate;
26300
26301     readonly attribute unsigned short? trackNumber;
26302
26303     readonly attribute unsigned long duration;
26304
26305   };</webidl>
26306       <descriptive>
26307           <brief>
26308  This interface extends a basic <em>Content </em>object with audio-specific attributes.
26309           </brief>
26310           <version>
26311  2.0
26312           </version>
26313       </descriptive>
26314       <ExtendedAttributeList>
26315         <ExtendedAttribute name="NoInterfaceObject">
26316           <webidl>NoInterfaceObject</webidl>
26317         </ExtendedAttribute>
26318       </ExtendedAttributeList>
26319       <InterfaceInheritance>
26320         <Name name="Content"/>
26321       </InterfaceInheritance>
26322       <Attribute readonly="readonly" name="album" id="::Content::AudioContent::album">
26323         <webidl>    readonly attribute DOMString? album;</webidl>
26324         <descriptive>
26325             <brief>
26326  The album name to which the audio belongs.
26327             </brief>
26328             <version>
26329  2.0
26330             </version>
26331         </descriptive>
26332         <Type type="DOMString" nullable="nullable"/>
26333       </Attribute>
26334       <Attribute readonly="readonly" name="genres" id="::Content::AudioContent::genres">
26335         <webidl>    readonly attribute DOMString[]? genres;</webidl>
26336         <descriptive>
26337             <brief>
26338  The list of genres to which the audio belongs.
26339             </brief>
26340             <version>
26341  2.0
26342             </version>
26343         </descriptive>
26344         <Type type="array" nullable="nullable">
26345           <Type type="DOMString"/>
26346         </Type>
26347       </Attribute>
26348       <Attribute readonly="readonly" name="artists" id="::Content::AudioContent::artists">
26349         <webidl>    readonly attribute DOMString[]? artists;</webidl>
26350         <descriptive>
26351             <brief>
26352  The list of artists who created the audio.
26353             </brief>
26354             <version>
26355  2.0
26356             </version>
26357         </descriptive>
26358         <Type type="array" nullable="nullable">
26359           <Type type="DOMString"/>
26360         </Type>
26361       </Attribute>
26362       <Attribute readonly="readonly" name="composers" id="::Content::AudioContent::composers">
26363         <webidl>    readonly attribute DOMString[]? composers;</webidl>
26364         <descriptive>
26365             <brief>
26366  The list of composers for the music.
26367             </brief>
26368             <version>
26369  2.0
26370             </version>
26371         </descriptive>
26372         <Type type="array" nullable="nullable">
26373           <Type type="DOMString"/>
26374         </Type>
26375       </Attribute>
26376       <Attribute readonly="readonly" name="lyrics" id="::Content::AudioContent::lyrics">
26377         <webidl>    readonly attribute <ref>AudioContentLyrics</ref>? lyrics;</webidl>
26378         <descriptive>
26379             <brief>
26380  The lyrics of a song in an audio file.
26381             </brief>
26382             <version>
26383  2.0
26384             </version>
26385         </descriptive>
26386         <Type name="AudioContentLyrics" nullable="nullable"/>
26387       </Attribute>
26388       <Attribute readonly="readonly" name="copyright" id="::Content::AudioContent::copyright">
26389         <webidl>    readonly attribute DOMString? copyright;</webidl>
26390         <descriptive>
26391             <brief>
26392  The copyright information.
26393             </brief>
26394             <version>
26395  2.0
26396             </version>
26397         </descriptive>
26398         <Type type="DOMString" nullable="nullable"/>
26399       </Attribute>
26400       <Attribute readonly="readonly" name="bitrate" id="::Content::AudioContent::bitrate">
26401         <webidl>    readonly attribute unsigned long bitrate;</webidl>
26402         <descriptive>
26403             <brief>
26404  The audio bitrate in bits per second. By default, this value is 0.
26405             </brief>
26406             <version>
26407  2.0
26408             </version>
26409         </descriptive>
26410         <Type type="unsigned long"/>
26411       </Attribute>
26412       <Attribute readonly="readonly" name="trackNumber" id="::Content::AudioContent::trackNumber">
26413         <webidl>    readonly attribute unsigned short? trackNumber;</webidl>
26414         <descriptive>
26415             <brief>
26416  The track number if the audio belongs to an album.
26417             </brief>
26418             <version>
26419  2.0
26420             </version>
26421         </descriptive>
26422         <Type type="unsigned short" nullable="nullable"/>
26423       </Attribute>
26424       <Attribute readonly="readonly" name="duration" id="::Content::AudioContent::duration">
26425         <webidl>    readonly attribute unsigned long duration;</webidl>
26426         <descriptive>
26427             <brief>
26428  The audio duration in milliseconds.
26429             </brief>
26430             <version>
26431  2.0
26432             </version>
26433         </descriptive>
26434         <Type type="unsigned long"/>
26435       </Attribute>
26436     </Interface>
26437     <Interface name="ImageContent" id="::Content::ImageContent">
26438       <webidl>  [NoInterfaceObject] interface ImageContent : <ref>Content</ref> {
26439
26440     attribute <ref>SimpleCoordinates</ref>? geolocation;
26441
26442     readonly attribute unsigned long width;
26443
26444     readonly attribute unsigned long height;
26445
26446     attribute <ref>ImageContentOrientation</ref> orientation;
26447
26448   };</webidl>
26449       <descriptive>
26450           <brief>
26451  This interface extends a basic <em>Content </em>object with image-specific attributes.
26452           </brief>
26453           <version>
26454  2.0
26455           </version>
26456       </descriptive>
26457       <ExtendedAttributeList>
26458         <ExtendedAttribute name="NoInterfaceObject">
26459           <webidl>NoInterfaceObject</webidl>
26460         </ExtendedAttribute>
26461       </ExtendedAttributeList>
26462       <InterfaceInheritance>
26463         <Name name="Content"/>
26464       </InterfaceInheritance>
26465       <Attribute name="geolocation" id="::Content::ImageContent::geolocation">
26466         <webidl>    attribute <ref>SimpleCoordinates</ref>? geolocation;</webidl>
26467         <descriptive>
26468             <brief>
26469  The geographical location where the image has been made.
26470             </brief>
26471             <version>
26472  2.0
26473             </version>
26474         </descriptive>
26475         <Type name="SimpleCoordinates" nullable="nullable"/>
26476       </Attribute>
26477       <Attribute readonly="readonly" name="width" id="::Content::ImageContent::width">
26478         <webidl>    readonly attribute unsigned long width;</webidl>
26479         <descriptive>
26480             <brief>
26481  The width of an image in pixels.
26482             </brief>
26483             <version>
26484  2.0
26485             </version>
26486         </descriptive>
26487         <Type type="unsigned long"/>
26488       </Attribute>
26489       <Attribute readonly="readonly" name="height" id="::Content::ImageContent::height">
26490         <webidl>    readonly attribute unsigned long height;</webidl>
26491         <descriptive>
26492             <brief>
26493  The height of an image in pixels.
26494             </brief>
26495             <version>
26496  2.0
26497             </version>
26498         </descriptive>
26499         <Type type="unsigned long"/>
26500       </Attribute>
26501       <Attribute name="orientation" id="::Content::ImageContent::orientation">
26502         <webidl>    attribute <ref>ImageContentOrientation</ref> orientation;</webidl>
26503         <descriptive>
26504             <brief>
26505  The image orientation.
26506             </brief>
26507             <version>
26508  2.0
26509             </version>
26510         </descriptive>
26511         <Type name="ImageContentOrientation"/>
26512       </Attribute>
26513     </Interface>
26514   </Module>
26515   <Module name="DataControl" id="::DataControl">
26516     <webidl>module DataControl {
26517     enum DataType { &quot;MAP&quot;, &quot;SQL&quot;};
26518  
26519     [NoInterfaceObject] interface DataControlManagerObject {
26520         readonly attribute <ref>DataControlManager</ref> datacontrol;
26521     };
26522     <ref>Tizen</ref> implements <ref>DataControlManagerObject</ref>;
26523
26524     
26525     [NoInterfaceObject] interface DataControlManager {
26526         <ref>DataControlConsumerObject</ref> getDataControlConsumer(DOMString providerId, DOMString dataId, <ref>DataType</ref> type) raises(<ref>WebAPIException</ref>);
26527     };
26528
26529      
26530     [NoInterfaceObject] interface DataControlConsumerObject {
26531         readonly attribute <ref>DataType</ref> type;
26532         readonly attribute DOMString providerId;
26533         readonly attribute DOMString dataId;
26534     };
26535
26536          
26537     [NoInterfaceObject] interface SQLDataControlConsumer : <ref>DataControlConsumerObject</ref> {
26538         void insert(unsigned long reqId, <ref>RowData</ref> insertionData, 
26539                     optional <ref>DataControlInsertSuccessCallback</ref>? successCallback, 
26540                     optional <ref>DataControlErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
26541
26542         void update(unsigned long reqId, <ref>RowData</ref> updateData, DOMString where, 
26543                     optional <ref>DataControlSuccessCallback</ref>? successCallback, 
26544                     optional <ref>DataControlErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);        
26545
26546         void remove(unsigned long reqId, DOMString where, 
26547                     optional <ref>DataControlSuccessCallback</ref>? successCallback, 
26548                     optional <ref>DataControlErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
26549
26550      
26551         void select(unsigned long reqId, DOMString[] columns, DOMString where,
26552                     <ref>DataControlSelectSuccessCallback</ref> successCallback, optional <ref>DataControlErrorCallback</ref>? errorCallback, 
26553                     optional unsigned long? page, optional unsigned long? maxNumberPerPage) raises(<ref>WebAPIException</ref>);
26554     };
26555
26556     [NoInterfaceObject] interface MappedDataControlConsumer : <ref>DataControlConsumerObject</ref> {
26557         void addValue(unsigned long reqId, DOMString key, DOMString value, 
26558                      optional <ref>DataControlSuccessCallback</ref>? successCallback, 
26559                      optional <ref>DataControlErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
26560
26561          void removeValue(unsigned long reqId, DOMString key, DOMString value, 
26562                           <ref>DataControlSuccessCallback</ref> successCallback, 
26563                           optional <ref>DataControlErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
26564
26565          void getValue(unsigned long reqId, DOMString key, 
26566                        <ref>DataControlGetValueSuccessCallback</ref> successCallback, 
26567                        optional <ref>DataControlErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
26568
26569          void updateValue(unsigned long reqId, DOMString key, DOMString oldValue, DOMString newValue, 
26570                           <ref>DataControlSuccessCallback</ref> successCallback, 
26571                           optional <ref>DataControlErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
26572     };
26573
26574          
26575     [Callback=FunctionOnly, NoInterfaceObject] interface DataControlSuccessCallback {
26576         void onsuccess(unsigned long reqId);
26577     };
26578
26579    
26580     [Callback=FunctionOnly, NoInterfaceObject] interface DataControlErrorCallback {
26581         void onerror(unsigned long reqId, <ref>WebAPIError</ref> error);
26582     };
26583
26584          
26585     [Callback=FunctionOnly, NoInterfaceObject] interface DataControlInsertSuccessCallback {
26586         void onsuccess(unsigned long reqId, long insertRowId);
26587     };
26588
26589
26590          
26591     [Callback=FunctionOnly, NoInterfaceObject] interface DataControlSelectSuccessCallback {
26592         void onsuccess(<ref>RowData</ref>[] rows, unsigned long reqId);
26593     };
26594
26595          
26596     [Callback=FunctionOnly, NoInterfaceObject] interface DataControlGetValueSuccessCallback {
26597         void onsuccess(DOMString[] values, unsigned long reqid);
26598     };
26599     
26600      
26601     dictionary RowData {
26602         DOMString[] columns;
26603         DOMString[] values;
26604     };
26605 };</webidl>
26606     <descriptive>
26607         <brief>
26608  This specification defines a DataControl API for applications.
26609         </brief>
26610        <description>
26611         <p>
26612 The DataControl functionality provides a way to access specific data that is exported by other applications.
26613         </p>
26614         <p>
26615 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.
26616         </p>
26617        </description>
26618         <version>
26619  2.1
26620         </version>
26621     </descriptive>
26622     <Enum name="DataType" id="::DataControl::DataType">
26623       <webidl>    enum DataType { &quot;MAP&quot;, &quot;SQL&quot;};</webidl>
26624       <descriptive>
26625           <brief>
26626  Data types.
26627           </brief>
26628           <version>
26629  2.1
26630           </version>
26631       </descriptive>
26632       <EnumValue stringvalue="MAP">
26633         <webidl> &quot;MAP</webidl>
26634       </EnumValue>
26635       <EnumValue stringvalue="SQL">
26636         <webidl> &quot;SQL</webidl>
26637       </EnumValue>
26638     </Enum>
26639     <Interface name="DataControlManagerObject" id="::DataControl::DataControlManagerObject">
26640       <webidl>    [NoInterfaceObject] interface DataControlManagerObject {
26641         readonly attribute <ref>DataControlManager</ref> datacontrol;
26642     };</webidl>
26643       <descriptive>
26644           <brief>
26645  Defines what is instantiated in the <em>Tizen</em> object.
26646           </brief>
26647          <description>
26648           <p>
26649 There is a <em>tizen.datacontrol</em> object that allows access to the
26650 DataControl API.
26651           </p>
26652          </description>
26653           <version>
26654  2.1
26655           </version>
26656       </descriptive>
26657       <ExtendedAttributeList>
26658         <ExtendedAttribute name="NoInterfaceObject">
26659           <webidl>NoInterfaceObject</webidl>
26660         </ExtendedAttribute>
26661       </ExtendedAttributeList>
26662       <Attribute readonly="readonly" name="datacontrol" id="::DataControl::DataControlManagerObject::datacontrol">
26663         <webidl>        readonly attribute <ref>DataControlManager</ref> datacontrol;</webidl>
26664         <Type name="DataControlManager"/>
26665       </Attribute>
26666     </Interface>
26667     <Implements name1="Tizen" name2="DataControlManagerObject">
26668       <webidl>    <ref>Tizen</ref> implements <ref>DataControlManagerObject</ref>;</webidl>
26669     </Implements>
26670     <Interface name="DataControlManager" id="::DataControl::DataControlManager">
26671       <webidl>    [NoInterfaceObject] interface DataControlManager {
26672         <ref>DataControlConsumerObject</ref> getDataControlConsumer(DOMString providerId, DOMString dataId, <ref>DataType</ref> type) raises(<ref>WebAPIException</ref>);
26673     };</webidl>
26674       <descriptive>
26675           <brief>
26676  This interface provides access to the <em>DataControlManager </em>object.
26677           </brief>
26678           <version>
26679  2.1
26680           </version>
26681       </descriptive>
26682       <ExtendedAttributeList>
26683         <ExtendedAttribute name="NoInterfaceObject">
26684           <webidl>NoInterfaceObject</webidl>
26685         </ExtendedAttribute>
26686       </ExtendedAttributeList>
26687       <Operation name="getDataControlConsumer" id="::DataControl::DataControlManager::getDataControlConsumer">
26688         <webidl>        <ref>DataControlConsumerObject</ref> getDataControlConsumer(DOMString providerId, DOMString dataId, <ref>DataType</ref> type) raises(<ref>WebAPIException</ref>);</webidl>
26689         <descriptive>
26690             <brief>
26691  Gets <em>DataControlConsumerObject</em> with a given DataType.
26692             </brief>
26693             <version>
26694  2.1
26695             </version>
26696             <privilegelevel>
26697  partner
26698             </privilegelevel>
26699             <privilege>
26700  http://tizen.org/privilege/datacontrol.consumer
26701             </privilege>
26702             <Code> //The data provider, a native application, should be pre-installed and launched.
26703  //The same provider id should be defined for the use of this API between a native application(provider) and a web application(consumer).
26704  //In this example, DictionaryDataControlProvider native sample application is used as a data control provider.
26705
26706  //Gets SQL type DataControlConsumerObject
26707  try {
26708      var globalSQLConsumer = tizen.datacontrol.getDataControlConsumer(
26709      &quot;http://tizen.org/datacontrol/provider/DictionaryDataControlProvider&quot;, &quot;Dictionary&quot;, &quot;SQL&quot;);
26710  } catch (err) {
26711      console.log (err.name +&quot;: &quot; + err.message);
26712  }
26713  // Gets MAP type DataControlConsumerObject
26714  try {
26715       globalMappedConsumer = tizen.datacontrol.getDataControlConsumer(
26716       &quot;http://tizen.org/datacontrol/provider/DictionaryDataControlProvider&quot;, &quot;Dictionary&quot;, &quot;MAP&quot;);
26717  } catch (err) {
26718       console.log (err.name +&quot;: &quot; + err.message);
26719  }
26720  </Code>
26721         </descriptive>
26722         <Type name="DataControlConsumerObject">
26723           <descriptive>
26724               <description><p>
26725  DataControlConsumerObject The local <em>DataControlConsumerObject</em>.
26726               </p></description>
26727           </descriptive>
26728         </Type>
26729         <ArgumentList>
26730           <Argument name="providerId">
26731             <descriptive>
26732                 <description><p>
26733  A provider ID to use and it should be shared between DataControl provider and DataControl consumer.
26734                 </p></description>
26735             </descriptive>
26736             <Type type="DOMString"/>
26737           </Argument>
26738           <Argument name="dataId">
26739             <descriptive>
26740                 <description><p>
26741  A string for identifying a specific data.
26742                 </p></description>
26743             </descriptive>
26744             <Type type="DOMString"/>
26745           </Argument>
26746           <Argument name="type">
26747             <descriptive>
26748                 <description><p>
26749  The DataType to use.
26750                 </p></description>
26751             </descriptive>
26752             <Type name="DataType"/>
26753           </Argument>
26754         </ArgumentList>
26755         <Raises>
26756           <RaiseException name="WebAPIException">
26757             <descriptive>
26758                 <description><p>
26759  with error type TypeMismatchError, if parameter type is mismatched.  
26760                 </p></description>
26761                 <description><p>
26762  with error type SecurityError, if the application does not have the privilege to call this method.
26763                 </p></description>
26764                 <description><p>
26765  with error type UnknownError, if any other error occurs. 
26766                 </p></description>
26767             </descriptive>
26768           </RaiseException>
26769         </Raises>
26770       </Operation>
26771     </Interface>
26772     <Interface name="DataControlConsumerObject" id="::DataControl::DataControlConsumerObject">
26773       <webidl>    [NoInterfaceObject] interface DataControlConsumerObject {
26774         readonly attribute <ref>DataType</ref> type;
26775         readonly attribute DOMString providerId;
26776         readonly attribute DOMString dataId;
26777     };</webidl>
26778       <descriptive>
26779           <brief>
26780  This interface provides common attributes for other derived DataControlCunsumerObject.
26781           </brief>
26782           <version>
26783  2.1
26784           </version>
26785       </descriptive>
26786       <ExtendedAttributeList>
26787         <ExtendedAttribute name="NoInterfaceObject">
26788           <webidl>NoInterfaceObject</webidl>
26789         </ExtendedAttribute>
26790       </ExtendedAttributeList>
26791       <Attribute readonly="readonly" name="type" id="::DataControl::DataControlConsumerObject::type">
26792         <webidl>        readonly attribute <ref>DataType</ref> type;</webidl>
26793         <descriptive>
26794             <brief>
26795  An attribute to store the DataType.
26796             </brief>
26797             <version>
26798  2.1
26799             </version>
26800         </descriptive>
26801         <Type name="DataType"/>
26802       </Attribute>
26803       <Attribute readonly="readonly" name="providerId" id="::DataControl::DataControlConsumerObject::providerId">
26804         <webidl>        readonly attribute DOMString providerId;</webidl>
26805         <descriptive>
26806             <brief>
26807  An attribute to hold a provider identifier of the application whom it shares the DataControl with.
26808 This attribute should be known to users who want to interact with application to provide.
26809             </brief>
26810             <version>
26811  2.1
26812             </version>
26813         </descriptive>
26814         <Type type="DOMString"/>
26815       </Attribute>
26816       <Attribute readonly="readonly" name="dataId" id="::DataControl::DataControlConsumerObject::dataId">
26817         <webidl>        readonly attribute DOMString dataId;</webidl>
26818         <descriptive>
26819             <brief>
26820  The dataId identifies specific data, usually a database table to process(insert, delete, update).
26821 The string consists of one or more components, separated by a slash('/').
26822             </brief>
26823             <version>
26824  2.1
26825             </version>
26826         </descriptive>
26827         <Type type="DOMString"/>
26828       </Attribute>
26829     </Interface>
26830     <Interface name="SQLDataControlConsumer" id="::DataControl::SQLDataControlConsumer">
26831       <webidl>    [NoInterfaceObject] interface SQLDataControlConsumer : <ref>DataControlConsumerObject</ref> {
26832         void insert(unsigned long reqId, <ref>RowData</ref> insertionData, 
26833                     optional <ref>DataControlInsertSuccessCallback</ref>? successCallback, 
26834                     optional <ref>DataControlErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
26835
26836         void update(unsigned long reqId, <ref>RowData</ref> updateData, DOMString where, 
26837                     optional <ref>DataControlSuccessCallback</ref>? successCallback, 
26838                     optional <ref>DataControlErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);        
26839
26840         void remove(unsigned long reqId, DOMString where, 
26841                     optional <ref>DataControlSuccessCallback</ref>? successCallback, 
26842                     optional <ref>DataControlErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
26843
26844      
26845         void select(unsigned long reqId, DOMString[] columns, DOMString where,
26846                     <ref>DataControlSelectSuccessCallback</ref> successCallback, optional <ref>DataControlErrorCallback</ref>? errorCallback, 
26847                     optional unsigned long? page, optional unsigned long? maxNumberPerPage) raises(<ref>WebAPIException</ref>);
26848     };</webidl>
26849       <descriptive>
26850           <brief>
26851  This interface defines SQL data type operatiors. 
26852           </brief>
26853           <version>
26854  2.1
26855           </version>
26856       </descriptive>
26857       <ExtendedAttributeList>
26858         <ExtendedAttribute name="NoInterfaceObject">
26859           <webidl>NoInterfaceObject</webidl>
26860         </ExtendedAttribute>
26861       </ExtendedAttributeList>
26862       <InterfaceInheritance>
26863         <Name name="DataControlConsumerObject"/>
26864       </InterfaceInheritance>
26865       <Operation name="insert" id="::DataControl::SQLDataControlConsumer::insert">
26866         <webidl>        void insert(unsigned long reqId, <ref>RowData</ref> insertionData, 
26867                     optional <ref>DataControlInsertSuccessCallback</ref>? successCallback, 
26868                     optional <ref>DataControlErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
26869         <descriptive>
26870             <brief>
26871  Inserts new rows into a table owned by an SQL-type data control provider.
26872             </brief>
26873             <version>
26874  2.1
26875             </version>
26876             <privilegelevel>
26877  partner
26878             </privilegelevel>
26879             <privilege>
26880  http://tizen.org/privilege/datacontrol.consumer
26881             </privilege>
26882             <Code> function successcb(id)
26883  {
26884      console.log(&quot;ok : reqid &quot;+ id);
26885  }
26886  
26887  function errorcb(id, error)
26888  {
26889      console.log(&quot;error id : &quot; + id + &quot;, error msg : &quot; + error.message);
26890  }
26891  
26892  try {
26893      var rowData = { 
26894          columns : [&quot;WORD&quot;, &quot;WORD_DESC&quot;] ,
26895          values  : [&quot;'tizen1'&quot;, &quot;'tizen2'&quot;]
26896      };
26897      // Defines globalReqId before
26898      // Increases globalReqId for uniqueness
26899      globalReqId++;
26900      globalSQLConsumer.insert(globalReqId, rowData, successcb, errorcb);
26901  } catch (err) {
26902      console.log (err.name +&quot;: &quot; + err.message);
26903  }
26904  </Code>
26905         </descriptive>
26906         <Type type="void"/>
26907         <ArgumentList>
26908           <Argument name="reqId">
26909             <descriptive>
26910                 <description><p>
26911  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.
26912                 </p></description>
26913             </descriptive>
26914             <Type type="unsigned long"/>
26915           </Argument>
26916           <Argument name="insertionData">
26917             <descriptive>
26918                 <description><p>
26919  The data on columns and values to insert.
26920                 </p></description>
26921             </descriptive>
26922             <Type name="RowData"/>
26923           </Argument>
26924           <Argument optional="optional" name="successCallback">
26925             <descriptive>
26926                 <description><p>
26927  The method to invoke when the asynchronous call completes successfully.
26928                 </p></description>
26929             </descriptive>
26930             <Type name="DataControlInsertSuccessCallback" nullable="nullable"/>
26931           </Argument>
26932           <Argument optional="optional" name="errorCallback">
26933             <descriptive>
26934                 <description><p>
26935  The method to invoke when an error occurs.
26936                 </p></description>
26937             </descriptive>
26938             <Type name="DataControlErrorCallback" nullable="nullable"/>
26939           </Argument>
26940         </ArgumentList>
26941         <Raises>
26942           <RaiseException name="WebAPIException">
26943             <descriptive>
26944                 <description><p>
26945  with error type TypeMismatchError, if parameter type is not compatible with the expected type for that parameter.
26946                 </p></description>
26947                 <description><p>
26948  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.
26949                 </p></description>
26950                 <description><p>
26951  with error type IOError, if a DB operation has failed.
26952                 </p></description>
26953                 <description><p>
26954  with error type SecurityError, if the application does not have the privilege to call this method.
26955                 </p></description>
26956                 <description><p>
26957  with error type UnknownError, if any other error occurs.
26958                 </p></description>
26959             </descriptive>
26960           </RaiseException>
26961         </Raises>
26962       </Operation>
26963       <Operation name="update" id="::DataControl::SQLDataControlConsumer::update">
26964         <webidl>        void update(unsigned long reqId, <ref>RowData</ref> updateData, DOMString where, 
26965                     optional <ref>DataControlSuccessCallback</ref>? successCallback, 
26966                     optional <ref>DataControlErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
26967         <descriptive>
26968             <brief>
26969  Updates values of a table owned by an SQL-type data control provider.
26970             </brief>
26971             <version>
26972  2.1
26973             </version>
26974             <privilegelevel>
26975  partner
26976             </privilegelevel>
26977             <privilege>
26978  http://tizen.org/privilege/datacontrol.consumer
26979             </privilege>
26980             <Code> function successcb(id)
26981  {
26982      console.log(&quot;ok : reqid &quot; + id);
26983  }
26984  
26985  function errorcb(id, error)
26986  {
26987      console.log(&quot;error id : &quot; + id + &quot;, error msg : &quot; + error.message);
26988  }
26989  
26990  try {
26991      var rowData = { 
26992          columns : [&quot;WORD&quot;, &quot;WORD_DESC&quot;] ,
26993          values  : [&quot;'tizen1'&quot;, &quot;'samsung platform!'&quot;]
26994      };
26995      // Defines globalReqId before
26996      // Increases globalReqId for uniqueness
26997      globalReqId++;
26998      globalSQLConsumer.update(globalReqId, rowData, &quot;WORD='tizen1'&quot;, successcb, errorcb);
26999  } catch (err) {
27000      console.log (err.name +&quot;: &quot; + err.message);
27001  }
27002  </Code>
27003         </descriptive>
27004         <Type type="void"/>
27005         <ArgumentList>
27006           <Argument name="reqId">
27007             <descriptive>
27008                 <description><p>
27009  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.
27010                 </p></description>
27011             </descriptive>
27012             <Type type="unsigned long"/>
27013           </Argument>
27014           <Argument name="updateData">
27015             <descriptive>
27016                 <description><p>
27017  The data on columns and values to update.
27018                 </p></description>
27019             </descriptive>
27020             <Type name="RowData"/>
27021           </Argument>
27022           <Argument name="where">
27023             <descriptive>
27024                 <description><p>
27025  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>.
27026                 </p></description>
27027             </descriptive>
27028             <Type type="DOMString"/>
27029           </Argument>
27030           <Argument optional="optional" name="successCallback">
27031             <descriptive>
27032                 <description><p>
27033  The method to invoke when the asynchronous call completes successfully.
27034                 </p></description>
27035             </descriptive>
27036             <Type name="DataControlSuccessCallback" nullable="nullable"/>
27037           </Argument>
27038           <Argument optional="optional" name="errorCallback">
27039             <descriptive>
27040                 <description><p>
27041  The method to invoke when an error occurs.
27042                 </p></description>
27043             </descriptive>
27044             <Type name="DataControlErrorCallback" nullable="nullable"/>
27045           </Argument>
27046         </ArgumentList>
27047         <Raises>
27048           <RaiseException name="WebAPIException">
27049             <descriptive>
27050                 <description><p>
27051  with error type TypeMismatchError, if parameter type is not compatible with the expected type for that parameter.
27052                 </p></description>
27053                 <description><p>
27054  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.
27055                 </p></description>
27056                 <description><p>
27057  with error type IOError, if a DB operation has failed.
27058                 </p></description>
27059                 <description><p>
27060  with error type SecurityError, if the application does not have the privilege to call this method.
27061                 </p></description>
27062                 <description><p>
27063  with error type UnknownError, if any other error occurs.
27064                 </p></description>
27065             </descriptive>
27066           </RaiseException>
27067         </Raises>
27068       </Operation>
27069       <Operation name="remove" id="::DataControl::SQLDataControlConsumer::remove">
27070         <webidl>        void remove(unsigned long reqId, DOMString where, 
27071                     optional <ref>DataControlSuccessCallback</ref>? successCallback, 
27072                     optional <ref>DataControlErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
27073         <descriptive>
27074             <brief>
27075  Delete rows from a table that is owned by an SQL-type data control provider. 
27076             </brief>
27077             <version>
27078  2.1
27079             </version>
27080             <privilegelevel>
27081  partner
27082             </privilegelevel>
27083             <privilege>
27084  http://tizen.org/privilege/datacontrol.consumer
27085             </privilege>
27086             <Code> function successcb(id)
27087  {
27088      console.log(&quot;ok : reqid &quot; + id);
27089  }
27090  
27091  function errorcb(id, error)
27092  {
27093      console.log(&quot;error id : &quot; + id + &quot;, error msg : &quot; + error.message);
27094  }
27095  
27096  try {
27097      // Defines globalReqId before
27098      // Increases globalReqId for uniqueness
27099      globalReqId++;
27100      globalSQLConsumer.remove(globalReqId, &quot;WORD='tizen1'&quot;, successcb, errorcb);
27101  } catch (err) {
27102      console.log (err.name +&quot;: &quot; + err.message);
27103  }
27104  </Code>
27105         </descriptive>
27106         <Type type="void"/>
27107         <ArgumentList>
27108           <Argument name="reqId">
27109             <descriptive>
27110                 <description><p>
27111  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.
27112                 </p></description>
27113             </descriptive>
27114             <Type type="unsigned long"/>
27115           </Argument>
27116           <Argument name="where">
27117             <descriptive>
27118                 <description><p>
27119  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>.
27120                 </p></description>
27121             </descriptive>
27122             <Type type="DOMString"/>
27123           </Argument>
27124           <Argument optional="optional" name="successCallback">
27125             <descriptive>
27126                 <description><p>
27127  The method to invoke when the asynchronous call completes successfully.
27128                 </p></description>
27129             </descriptive>
27130             <Type name="DataControlSuccessCallback" nullable="nullable"/>
27131           </Argument>
27132           <Argument optional="optional" name="errorCallback">
27133             <descriptive>
27134                 <description><p>
27135  The method to invoke when an error occurs.
27136                 </p></description>
27137             </descriptive>
27138             <Type name="DataControlErrorCallback" nullable="nullable"/>
27139           </Argument>
27140         </ArgumentList>
27141         <Raises>
27142           <RaiseException name="WebAPIException">
27143             <descriptive>
27144                 <description><p>
27145  with error type TypeMismatchError, if parameter type is not compatible with the expected type for that parameter.
27146                 </p></description>
27147                 <description><p>
27148  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.
27149                 </p></description>
27150                 <description><p>
27151  with error type IOError, if a DB operation has failed.
27152                 </p></description>
27153                 <description><p>
27154  with error type SecurityError, if the application does not have the privilege to call this method.
27155                 </p></description>
27156                 <description><p>
27157  with error type UnknownError, if any other error occurs.
27158                 </p></description>
27159             </descriptive>
27160           </RaiseException>
27161         </Raises>
27162       </Operation>
27163       <Operation name="select" id="::DataControl::SQLDataControlConsumer::select">
27164         <webidl>        void select(unsigned long reqId, DOMString[] columns, DOMString where,
27165                     <ref>DataControlSelectSuccessCallback</ref> successCallback, optional <ref>DataControlErrorCallback</ref>? errorCallback, 
27166                     optional unsigned long? page, optional unsigned long? maxNumberPerPage) raises(<ref>WebAPIException</ref>);</webidl>
27167         <descriptive>
27168             <brief>
27169  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. 
27170             </brief>
27171             <version>
27172  2.1
27173             </version>
27174             <privilegelevel>
27175  partner
27176             </privilegelevel>
27177             <privilege>
27178  http://tizen.org/privilege/datacontrol.consumer
27179             </privilege>
27180             <Code> function getValueSuccessCB(result, id)
27181  {
27182      var length = result.length;
27183      for (var i = 0; i &#60; length; i++)
27184      {
27185          var j = 0;
27186          for (j = 0; j &#60; result[i].columns.length; j++)
27187          {
27188              console.log(&quot;column: &quot; + result[i].columns[j] + &quot;, value: &quot; + result[i].values[j]);
27189          }
27190      }
27191  }
27192
27193  function errorcb(id, error)
27194  {
27195      console.log(&quot;error id : &quot; + id + &quot;, error msg : &quot; + error.message);
27196  }
27197
27198  try {
27199      // Defines globalReqId before
27200      // Increases globalReqId for uniqueness
27201      var array = [&quot;WORD&quot;, &quot;WORD_DESC&quot; ];
27202      globalReqId++;
27203      globalSQLConsumer.select(globalReqId, array, &quot;WORD='tizen1'&quot;, getValueSuccessCB, errorcb);
27204  }
27205  catch (err) {
27206      console.log (err.name +&quot;: &quot; + err.message);
27207  }
27208  
27209   
27210 </Code>
27211         </descriptive>
27212         <Type type="void"/>
27213         <ArgumentList>
27214           <Argument name="reqId">
27215             <descriptive>
27216                 <description><p>
27217  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.
27218                 </p></description>
27219             </descriptive>
27220             <Type type="unsigned long"/>
27221           </Argument>
27222           <Argument name="columns">
27223             <descriptive>
27224                 <description><p>
27225  The columns to select.
27226                 </p></description>
27227             </descriptive>
27228             <Type type="array">
27229               <Type type="DOMString"/>
27230             </Type>
27231           </Argument>
27232           <Argument name="where">
27233             <descriptive>
27234                 <description><p>
27235  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>.
27236                 </p></description>
27237             </descriptive>
27238             <Type type="DOMString"/>
27239           </Argument>
27240           <Argument name="successCallback">
27241             <descriptive>
27242                 <description><p>
27243  The method to invoke when the asynchronous call completes successfully.
27244                 </p></description>
27245             </descriptive>
27246             <Type name="DataControlSelectSuccessCallback"/>
27247           </Argument>
27248           <Argument optional="optional" name="errorCallback">
27249             <descriptive>
27250                 <description><p>
27251  The method to invoke when an error occurs.
27252                 </p></description>
27253             </descriptive>
27254             <Type name="DataControlErrorCallback" nullable="nullable"/>
27255           </Argument>
27256           <Argument optional="optional" name="page">
27257             <descriptive>
27258                 <description><p>
27259  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.
27260                 </p></description>
27261             </descriptive>
27262             <Type type="unsigned long" nullable="nullable"/>
27263           </Argument>
27264           <Argument optional="optional" name="maxNumberPerPage">
27265             <descriptive>
27266                 <description><p>
27267  The maximum number of rows on a page.
27268                 </p></description>
27269             </descriptive>
27270             <Type type="unsigned long" nullable="nullable"/>
27271           </Argument>
27272         </ArgumentList>
27273         <Raises>
27274           <RaiseException name="WebAPIException">
27275             <descriptive>
27276                 <description><p>
27277  with error type TypeMismatchError, if parameter type is not compatible with the expected type for that parameter.
27278                 </p></description>
27279                 <description><p>
27280  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.
27281                 </p></description>
27282                 <description><p>
27283  with error type IOError, if a DB operation has failed.
27284                 </p></description>
27285                 <description><p>
27286  with error type SecurityError, if the application does not have the privilege to call this method.
27287                 </p></description>
27288                 <description><p>
27289  with error type UnknownError, if any other error occurs.
27290                 </p></description>
27291             </descriptive>
27292           </RaiseException>
27293         </Raises>
27294       </Operation>
27295     </Interface>
27296     <Interface name="MappedDataControlConsumer" id="::DataControl::MappedDataControlConsumer">
27297       <webidl>    [NoInterfaceObject] interface MappedDataControlConsumer : <ref>DataControlConsumerObject</ref> {
27298         void addValue(unsigned long reqId, DOMString key, DOMString value, 
27299                      optional <ref>DataControlSuccessCallback</ref>? successCallback, 
27300                      optional <ref>DataControlErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
27301
27302          void removeValue(unsigned long reqId, DOMString key, DOMString value, 
27303                           <ref>DataControlSuccessCallback</ref> successCallback, 
27304                           optional <ref>DataControlErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
27305
27306          void getValue(unsigned long reqId, DOMString key, 
27307                        <ref>DataControlGetValueSuccessCallback</ref> successCallback, 
27308                        optional <ref>DataControlErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
27309
27310          void updateValue(unsigned long reqId, DOMString key, DOMString oldValue, DOMString newValue, 
27311                           <ref>DataControlSuccessCallback</ref> successCallback, 
27312                           optional <ref>DataControlErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
27313     };</webidl>
27314       <descriptive>
27315           <brief>
27316  This interface defines MAP data type operators.
27317           </brief>
27318           <version>
27319  2.1
27320           </version>
27321       </descriptive>
27322       <ExtendedAttributeList>
27323         <ExtendedAttribute name="NoInterfaceObject">
27324           <webidl>NoInterfaceObject</webidl>
27325         </ExtendedAttribute>
27326       </ExtendedAttributeList>
27327       <InterfaceInheritance>
27328         <Name name="DataControlConsumerObject"/>
27329       </InterfaceInheritance>
27330       <Operation name="addValue" id="::DataControl::MappedDataControlConsumer::addValue">
27331         <webidl>        void addValue(unsigned long reqId, DOMString key, DOMString value, 
27332                      optional <ref>DataControlSuccessCallback</ref>? successCallback, 
27333                      optional <ref>DataControlErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
27334         <descriptive>
27335             <brief>
27336  Adds the value associated with the specified key to a key-values map owned by MAP-type data control provider. 
27337             </brief>
27338             <version>
27339  2.1
27340             </version>
27341             <privilegelevel>
27342  partner
27343             </privilegelevel>
27344             <privilege>
27345  http://tizen.org/privilege/datacontrol.consumer
27346             </privilege>
27347             <Code>         
27348  function successcb(id)
27349  {
27350      console.log(&quot;ok : reqid &quot; + id);
27351  }
27352  
27353  function errorcb(id, error)
27354  {
27355      console.log(&quot;error id : &quot; + id + &quot;, error msg : &quot; + error.message);
27356  }
27357  
27358  try {
27359      // Defines globalReqId before
27360      // Increases globalReqId for uniqueness
27361      globalReqId++;
27362      globalMappedConsumer.addValue(globalReqId, &quot;tizen&quot;, &quot;samsung&quot;, successcb, errorcb);
27363  } catch (err) {
27364      console.log (err.name +&quot;: &quot; + err.message);
27365  }
27366  </Code>
27367         </descriptive>
27368         <Type type="void"/>
27369         <ArgumentList>
27370           <Argument name="reqId">
27371             <descriptive>
27372                 <description><p>
27373  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.
27374                 </p></description>
27375             </descriptive>
27376             <Type type="unsigned long"/>
27377           </Argument>
27378           <Argument name="key">
27379             <descriptive>
27380                 <description><p>
27381  The key to search a mapped data.
27382                 </p></description>
27383             </descriptive>
27384             <Type type="DOMString"/>
27385           </Argument>
27386           <Argument name="value">
27387             <descriptive>
27388                 <description><p>
27389  The value to add into values array mapped by the key.
27390                 </p></description>
27391             </descriptive>
27392             <Type type="DOMString"/>
27393           </Argument>
27394           <Argument optional="optional" name="successCallback">
27395             <descriptive>
27396                 <description><p>
27397  The method to invoke when the asynchronous call completes successfully.
27398                 </p></description>
27399             </descriptive>
27400             <Type name="DataControlSuccessCallback" nullable="nullable"/>
27401           </Argument>
27402           <Argument optional="optional" name="errorCallback">
27403             <descriptive>
27404                 <description><p>
27405  The method to invoke when an error occurs.
27406                 </p></description>
27407             </descriptive>
27408             <Type name="DataControlErrorCallback" nullable="nullable"/>
27409           </Argument>
27410         </ArgumentList>
27411         <Raises>
27412           <RaiseException name="WebAPIException">
27413             <descriptive>
27414                 <description><p>
27415  with error type TypeMismatchError, if parameter type is not compatible with the expected type for that parameter.
27416                 </p></description>
27417                 <description><p>
27418  with error type InvalidValuesError, if the passed parameter is not available on data provider side or platform.
27419                 </p></description>
27420                 <description><p>
27421  with error type IOError, if a DB operation has failed.
27422                 </p></description>
27423                 <description><p>
27424  with error type SecurityError, if the application does not have the privilege to call this method.
27425                 </p></description>
27426                 <description><p>
27427  with error type UnknownError, if any other error occurs.
27428                 </p></description>
27429             </descriptive>
27430           </RaiseException>
27431         </Raises>
27432       </Operation>
27433       <Operation name="removeValue" id="::DataControl::MappedDataControlConsumer::removeValue">
27434         <webidl>         void removeValue(unsigned long reqId, DOMString key, DOMString value, 
27435                           <ref>DataControlSuccessCallback</ref> successCallback, 
27436                           optional <ref>DataControlErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
27437         <descriptive>
27438             <brief>
27439  Removes the value associated with the specified key from a key-values map owned by MAP-type data control provider.
27440             </brief>
27441             <version>
27442  2.1
27443             </version>
27444             <privilegelevel>
27445  partner
27446             </privilegelevel>
27447             <privilege>
27448  http://tizen.org/privilege/datacontrol.consumer
27449             </privilege>
27450             <Code> function successcb(id)
27451  {
27452      console.log(&quot;ok : reqid &quot; + id);
27453  }
27454  
27455  function errorcb(id, error)
27456  {
27457      console.log(&quot;error id : &quot; + id + &quot;, error msg : &quot; + error.message);
27458  }
27459  
27460  
27461  try {
27462      // Defines globalReqId before
27463      // Increases globalReqId for uniqueness
27464      globalReqId++;
27465      globalMappedConsumer.removeValue(globalReqId, &quot;tizen&quot;, &quot;intel&quot;, successcb, errorcb);
27466  } catch (err) {
27467      console.log (err.name +&quot;: &quot; + err.message);
27468  }
27469  </Code>
27470         </descriptive>
27471         <Type type="void"/>
27472         <ArgumentList>
27473           <Argument name="reqId">
27474             <descriptive>
27475                 <description><p>
27476  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.
27477                 </p></description>
27478             </descriptive>
27479             <Type type="unsigned long"/>
27480           </Argument>
27481           <Argument name="key">
27482             <descriptive>
27483                 <description><p>
27484  The key to search a mapped data.
27485                 </p></description>
27486             </descriptive>
27487             <Type type="DOMString"/>
27488           </Argument>
27489           <Argument name="value">
27490             <descriptive>
27491                 <description><p>
27492  The value to remove from a values array mapped by the key.
27493                 </p></description>
27494             </descriptive>
27495             <Type type="DOMString"/>
27496           </Argument>
27497           <Argument name="successCallback">
27498             <descriptive>
27499                 <description><p>
27500  The method to invoke when the asynchronous call completes successfully.
27501                 </p></description>
27502             </descriptive>
27503             <Type name="DataControlSuccessCallback"/>
27504           </Argument>
27505           <Argument optional="optional" name="errorCallback">
27506             <descriptive>
27507                 <description><p>
27508  The method to invoke when an error occurs.
27509                 </p></description>
27510             </descriptive>
27511             <Type name="DataControlErrorCallback" nullable="nullable"/>
27512           </Argument>
27513         </ArgumentList>
27514         <Raises>
27515           <RaiseException name="WebAPIException">
27516             <descriptive>
27517                 <description><p>
27518  with error type TypeMismatchError, if parameter type is not compatible with the expected type for that parameter.
27519                 </p></description>
27520                 <description><p>
27521  with error type InvalidValuesError, if the passed parameter is not available in data provider side or platform. 
27522                 </p></description>
27523                 <description><p>
27524  with error type IOError, if a DB operation has failed.  
27525                 </p></description>
27526                 <description><p>
27527  with error type NotFoundError, if the key cannot be found.
27528                 </p></description>
27529                 <description><p>
27530  with error type SecurityError, if the application does not have the privilege to call this method.
27531                 </p></description>
27532                 <description><p>
27533  with error type UnknownError, if any other error occurs. 
27534                 </p></description>
27535             </descriptive>
27536           </RaiseException>
27537         </Raises>
27538       </Operation>
27539       <Operation name="getValue" id="::DataControl::MappedDataControlConsumer::getValue">
27540         <webidl>         void getValue(unsigned long reqId, DOMString key, 
27541                        <ref>DataControlGetValueSuccessCallback</ref> successCallback, 
27542                        optional <ref>DataControlErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
27543         <descriptive>
27544             <brief>
27545  Gets value associated with the specified key, from a key-values map owned by MAP-type data control provider. 
27546             </brief>
27547             <version>
27548  2.1
27549             </version>
27550             <privilegelevel>
27551  partner
27552             </privilegelevel>
27553             <privilege>
27554  http://tizen.org/privilege/datacontrol.consumer
27555             </privilege>
27556             <Code> function getValueSuccessCB(result, id)
27557  {
27558      console.log(result.length + &quot;:&quot; + result[0]);
27559  }
27560  
27561  function errorcb(id, error)
27562  {
27563      console.log(&quot;error id : &quot; + id + &quot;, error msg : &quot; + error.message);
27564  }
27565  
27566  try {
27567      // Defines globalReqId before
27568      // Increases globalReqId for uniqueness
27569      globalReqId++;
27570      globalMappedConsumer.getValue(globalReqId, &quot;tizen&quot;, getValueSuccessCB, errorcb);
27571  } catch (err) {
27572      console.log (err.name +&quot;: &quot; + err.message);
27573  }
27574  </Code>
27575         </descriptive>
27576         <Type type="void"/>
27577         <ArgumentList>
27578           <Argument name="reqId">
27579             <descriptive>
27580                 <description><p>
27581  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.
27582                 </p></description>
27583             </descriptive>
27584             <Type type="unsigned long"/>
27585           </Argument>
27586           <Argument name="key">
27587             <descriptive>
27588                 <description><p>
27589  The key to search a mapped data.
27590                 </p></description>
27591             </descriptive>
27592             <Type type="DOMString"/>
27593           </Argument>
27594           <Argument name="successCallback">
27595             <descriptive>
27596                 <description><p>
27597  The method to invoke when the asynchronous call completes successfully.
27598                 </p></description>
27599             </descriptive>
27600             <Type name="DataControlGetValueSuccessCallback"/>
27601           </Argument>
27602           <Argument optional="optional" name="errorCallback">
27603             <descriptive>
27604                 <description><p>
27605  The method to invoke when an error occurs.
27606                 </p></description>
27607             </descriptive>
27608             <Type name="DataControlErrorCallback" nullable="nullable"/>
27609           </Argument>
27610         </ArgumentList>
27611         <Raises>
27612           <RaiseException name="WebAPIException">
27613             <descriptive>
27614                 <description><p>
27615  with error type TypeMismatchError, if parameter type is not compatible with the expected type for that parameter.
27616                 </p></description>
27617                 <description><p>
27618  with error type InvalidValuesError, if the passed parameter is not available on data provider side or platform.
27619                 </p></description>
27620                 <description><p>
27621  with error type IOError, if a DB operation has failed.
27622                 </p></description>
27623                 <description><p>
27624  with error type NotFoundError, if the key cannot be found.
27625                 </p></description>
27626                 <description><p>
27627  with error type SecurityError, if the application does not have the privilege to call this method.
27628                 </p></description>
27629                 <description><p>
27630  with error type UnknownError, if any other error occurs.
27631                 </p></description>
27632             </descriptive>
27633           </RaiseException>
27634         </Raises>
27635       </Operation>
27636       <Operation name="updateValue" id="::DataControl::MappedDataControlConsumer::updateValue">
27637         <webidl>         void updateValue(unsigned long reqId, DOMString key, DOMString oldValue, DOMString newValue, 
27638                           <ref>DataControlSuccessCallback</ref> successCallback, 
27639                           optional <ref>DataControlErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
27640         <descriptive>
27641             <brief>
27642  Sets the value associated with the specified key with a new value.            
27643             </brief>
27644             <version>
27645  2.1
27646             </version>
27647             <privilegelevel>
27648  partner
27649             </privilegelevel>
27650             <privilege>
27651  http://tizen.org/privilege/datacontrol.consumer
27652             </privilege>
27653             <Code> 
27654  function successcb(id)
27655  {
27656      console.log(&quot;ok : reqid &quot; + id);
27657  }
27658  
27659  function errorcb(id, error)
27660  {
27661      console.log(&quot;error id : &quot; + id + &quot;, error msg : &quot; + error.message);
27662  }
27663  
27664  try {
27665      // Defines globalReqId before
27666      // Increases globalReqId for uniqueness
27667      globalReqId++;
27668      globalMappedConsumer.updateValue(globalReqId, &quot;tizen&quot;, &quot;samsung&quot;, &quot;intel&quot;, successcb, errorcb);
27669  } catch (err) {
27670      console.log (err.name +&quot;: &quot; + err.message);
27671  }
27672  </Code>
27673         </descriptive>
27674         <Type type="void"/>
27675         <ArgumentList>
27676           <Argument name="reqId">
27677             <descriptive>
27678                 <description><p>
27679  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.
27680                 </p></description>
27681             </descriptive>
27682             <Type type="unsigned long"/>
27683           </Argument>
27684           <Argument name="key">
27685             <descriptive>
27686                 <description><p>
27687  The key to search a mapped data.
27688                 </p></description>
27689             </descriptive>
27690             <Type type="DOMString"/>
27691           </Argument>
27692           <Argument name="oldValue">
27693             <descriptive>
27694                 <description><p>
27695  The value to update in values array mapped by the key.
27696                 </p></description>
27697             </descriptive>
27698             <Type type="DOMString"/>
27699           </Argument>
27700           <Argument name="newValue">
27701             <descriptive>
27702                 <description><p>
27703  The new value to replace in values array mapped by the key.
27704                 </p></description>
27705             </descriptive>
27706             <Type type="DOMString"/>
27707           </Argument>
27708           <Argument name="successCallback">
27709             <descriptive>
27710                 <description><p>
27711  The method to invoke when the asynchronous call completes successfully.
27712                 </p></description>
27713             </descriptive>
27714             <Type name="DataControlSuccessCallback"/>
27715           </Argument>
27716           <Argument optional="optional" name="errorCallback">
27717             <descriptive>
27718                 <description><p>
27719  The method to invoke when an error occurs.
27720                 </p></description>
27721             </descriptive>
27722             <Type name="DataControlErrorCallback" nullable="nullable"/>
27723           </Argument>
27724         </ArgumentList>
27725         <Raises>
27726           <RaiseException name="WebAPIException">
27727             <descriptive>
27728                 <description><p>
27729  with error type TypeMismatchError, if parameter type is not compatible with the expected type for that parameter.
27730                 </p></description>
27731                 <description><p>
27732  with error type InvalidValuesError, if the passed parameter is not available on data provider side or platform.
27733                 </p></description>
27734                 <description><p>
27735  with error type IOError, if a DB operation has failed.
27736                 </p></description>
27737                 <description><p>
27738  with error type NotFoundError, if the key cannot be found.
27739                 </p></description>
27740                 <description><p>
27741  with error type SecurityError, if the application does not have the privilege to call this method.
27742                 </p></description>
27743                 <description><p>
27744  with error type UnknownError, if any other error occurs.
27745                 </p></description>
27746             </descriptive>
27747           </RaiseException>
27748         </Raises>
27749       </Operation>
27750     </Interface>
27751     <Interface name="DataControlSuccessCallback" id="::DataControl::DataControlSuccessCallback">
27752       <webidl>    [Callback=FunctionOnly, NoInterfaceObject] interface DataControlSuccessCallback {
27753         void onsuccess(unsigned long reqId);
27754     };</webidl>
27755       <descriptive>
27756           <brief>
27757  This interface provides a SuccessCallback for DataControlConsumerObject.
27758           </brief>
27759           <version>
27760  2.1
27761           </version>
27762       </descriptive>
27763       <ExtendedAttributeList>
27764         <ExtendedAttribute name="Callback" value="FunctionOnly">
27765           <webidl>Callback</webidl>
27766         </ExtendedAttribute>
27767         <ExtendedAttribute name="NoInterfaceObject">
27768           <webidl> NoInterfaceObject</webidl>
27769         </ExtendedAttribute>
27770       </ExtendedAttributeList>
27771       <Operation name="onsuccess" id="::DataControl::DataControlSuccessCallback::onsuccess">
27772         <webidl>        void onsuccess(unsigned long reqId);</webidl>
27773         <Type type="void"/>
27774         <ArgumentList>
27775           <Argument name="reqId">
27776             <Type type="unsigned long"/>
27777           </Argument>
27778         </ArgumentList>
27779       </Operation>
27780     </Interface>
27781     <Interface name="DataControlErrorCallback" id="::DataControl::DataControlErrorCallback">
27782       <webidl>    [Callback=FunctionOnly, NoInterfaceObject] interface DataControlErrorCallback {
27783         void onerror(unsigned long reqId, <ref>WebAPIError</ref> error);
27784     };</webidl>
27785       <descriptive>
27786           <brief>
27787  This interface provides a ErrorCallback for DataControlConsumerObject.
27788           </brief>
27789           <version>
27790  2.1
27791           </version>
27792       </descriptive>
27793       <ExtendedAttributeList>
27794         <ExtendedAttribute name="Callback" value="FunctionOnly">
27795           <webidl>Callback</webidl>
27796         </ExtendedAttribute>
27797         <ExtendedAttribute name="NoInterfaceObject">
27798           <webidl> NoInterfaceObject</webidl>
27799         </ExtendedAttribute>
27800       </ExtendedAttributeList>
27801       <Operation name="onerror" id="::DataControl::DataControlErrorCallback::onerror">
27802         <webidl>        void onerror(unsigned long reqId, <ref>WebAPIError</ref> error);</webidl>
27803         <Type type="void"/>
27804         <ArgumentList>
27805           <Argument name="reqId">
27806             <Type type="unsigned long"/>
27807           </Argument>
27808           <Argument name="error">
27809             <Type name="WebAPIError"/>
27810           </Argument>
27811         </ArgumentList>
27812       </Operation>
27813     </Interface>
27814     <Interface name="DataControlInsertSuccessCallback" id="::DataControl::DataControlInsertSuccessCallback">
27815       <webidl>    [Callback=FunctionOnly, NoInterfaceObject] interface DataControlInsertSuccessCallback {
27816         void onsuccess(unsigned long reqId, long insertRowId);
27817     };</webidl>
27818       <descriptive>
27819           <brief>
27820  This interface provides a SuccessCallback for SQLDataControlConsumer.insert().
27821           </brief>
27822           <version>
27823  2.1
27824           </version>
27825       </descriptive>
27826       <ExtendedAttributeList>
27827         <ExtendedAttribute name="Callback" value="FunctionOnly">
27828           <webidl>Callback</webidl>
27829         </ExtendedAttribute>
27830         <ExtendedAttribute name="NoInterfaceObject">
27831           <webidl> NoInterfaceObject</webidl>
27832         </ExtendedAttribute>
27833       </ExtendedAttributeList>
27834       <Operation name="onsuccess" id="::DataControl::DataControlInsertSuccessCallback::onsuccess">
27835         <webidl>        void onsuccess(unsigned long reqId, long insertRowId);</webidl>
27836         <descriptive>
27837             <brief>
27838  Called on success.
27839             </brief>
27840             <version>
27841  2.1
27842             </version>
27843         </descriptive>
27844         <Type type="void"/>
27845         <ArgumentList>
27846           <Argument name="reqId">
27847             <descriptive>
27848                 <description><p>
27849  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.
27850                 </p></description>
27851             </descriptive>
27852             <Type type="unsigned long"/>
27853           </Argument>
27854           <Argument name="insertRowId">
27855             <descriptive>
27856                 <description><p>
27857  The inserted row ID set by the data control provider if the specified providerResult is <var>true</var>, else <var>-1</var>.
27858                 </p></description>
27859             </descriptive>
27860             <Type type="long"/>
27861           </Argument>
27862         </ArgumentList>
27863       </Operation>
27864     </Interface>
27865     <Interface name="DataControlSelectSuccessCallback" id="::DataControl::DataControlSelectSuccessCallback">
27866       <webidl>    [Callback=FunctionOnly, NoInterfaceObject] interface DataControlSelectSuccessCallback {
27867         void onsuccess(<ref>RowData</ref>[] rows, unsigned long reqId);
27868     };</webidl>
27869       <descriptive>
27870           <brief>
27871  This interface provides a SuccessCallback for SQLDataControlConsumer.select().
27872           </brief>
27873           <version>
27874  2.1
27875           </version>
27876       </descriptive>
27877       <ExtendedAttributeList>
27878         <ExtendedAttribute name="Callback" value="FunctionOnly">
27879           <webidl>Callback</webidl>
27880         </ExtendedAttribute>
27881         <ExtendedAttribute name="NoInterfaceObject">
27882           <webidl> NoInterfaceObject</webidl>
27883         </ExtendedAttribute>
27884       </ExtendedAttributeList>
27885       <Operation name="onsuccess" id="::DataControl::DataControlSelectSuccessCallback::onsuccess">
27886         <webidl>        void onsuccess(<ref>RowData</ref>[] rows, unsigned long reqId);</webidl>
27887         <descriptive>
27888             <brief>
27889  Called on success.
27890             </brief>
27891             <version>
27892  2.1
27893             </version>
27894         </descriptive>
27895         <Type type="void"/>
27896         <ArgumentList>
27897           <Argument name="rows">
27898             <descriptive>
27899                 <description><p>
27900  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>.
27901                 </p></description>
27902             </descriptive>
27903             <Type type="array">
27904               <Type name="RowData"/>
27905             </Type>
27906           </Argument>
27907           <Argument name="reqId">
27908             <descriptive>
27909                 <description><p>
27910  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.
27911                 </p></description>
27912             </descriptive>
27913             <Type type="unsigned long"/>
27914           </Argument>
27915         </ArgumentList>
27916       </Operation>
27917     </Interface>
27918     <Interface name="DataControlGetValueSuccessCallback" id="::DataControl::DataControlGetValueSuccessCallback">
27919       <webidl>    [Callback=FunctionOnly, NoInterfaceObject] interface DataControlGetValueSuccessCallback {
27920         void onsuccess(DOMString[] values, unsigned long reqid);
27921     };</webidl>
27922       <descriptive>
27923           <brief>
27924  This interface provides a SuccessCallback for MapDataControlConsumer.getValue().
27925           </brief>
27926           <version>
27927  2.1
27928           </version>
27929       </descriptive>
27930       <ExtendedAttributeList>
27931         <ExtendedAttribute name="Callback" value="FunctionOnly">
27932           <webidl>Callback</webidl>
27933         </ExtendedAttribute>
27934         <ExtendedAttribute name="NoInterfaceObject">
27935           <webidl> NoInterfaceObject</webidl>
27936         </ExtendedAttribute>
27937       </ExtendedAttributeList>
27938       <Operation name="onsuccess" id="::DataControl::DataControlGetValueSuccessCallback::onsuccess">
27939         <webidl>        void onsuccess(DOMString[] values, unsigned long reqid);</webidl>
27940         <Type type="void"/>
27941         <ArgumentList>
27942           <Argument name="values">
27943             <Type type="array">
27944               <Type type="DOMString"/>
27945             </Type>
27946           </Argument>
27947           <Argument name="reqid">
27948             <Type type="unsigned long"/>
27949           </Argument>
27950         </ArgumentList>
27951       </Operation>
27952     </Interface>
27953     <Dictionary name="RowData" id="::DataControl::RowData">
27954       <webidl>    dictionary RowData {
27955         DOMString[] columns;
27956         DOMString[] values;
27957     };</webidl>
27958       <descriptive>
27959           <brief>
27960  The dictionary represents RowData holding 1 row of SQL selection results from another application.
27961           </brief>
27962           <version>
27963  2.1
27964           </version>
27965       </descriptive>
27966       <DictionaryMember name="columns" id="::DataControl::RowData::columns">
27967         <webidl>        DOMString[] columns;</webidl>
27968         <descriptive>
27969             <brief>
27970  An attribute to hold column names to select, update, and insert.
27971             </brief>
27972             <version>
27973  2.1
27974             </version>
27975         </descriptive>
27976         <Type type="array">
27977           <Type type="DOMString"/>
27978         </Type>
27979       </DictionaryMember>
27980       <DictionaryMember name="values" id="::DataControl::RowData::values">
27981         <webidl>        DOMString[] values;</webidl>
27982         <descriptive>
27983             <brief>
27984  An attribute to hold values of columns to select, update, and insert.
27985             </brief>
27986             <version>
27987  2.1
27988             </version>
27989         </descriptive>
27990         <Type type="array">
27991           <Type type="DOMString"/>
27992         </Type>
27993       </DictionaryMember>
27994     </Dictionary>
27995   </Module>
27996   <Module name="DataSynchronization" id="::DataSynchronization">
27997     <webidl>module DataSynchronization {
27998
27999   typedef DOMString SyncProfileId;
28000
28001   enum SyncMode { &quot;MANUAL&quot;, &quot;PERIODIC&quot;, &quot;PUSH&quot; };
28002
28003   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; };
28004
28005   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; };
28006
28007   enum SyncServiceType { &quot;CONTACT&quot;, &quot;EVENT&quot; };
28008
28009   enum SyncStatus { &quot;SUCCESS&quot;, &quot;FAIL&quot;, &quot;STOP&quot;, &quot;NONE&quot; };
28010
28011   [NoInterfaceObject] interface DataSynchronizationManagerObject {
28012     readonly attribute <ref>DataSynchronizationManager</ref> datasync;
28013   };
28014
28015   <ref>Tizen</ref> implements <ref>DataSynchronizationManagerObject</ref>;
28016
28017   [Constructor(DOMString url, DOMString id, DOMString password, <ref>SyncMode</ref> mode),
28018   Constructor(DOMString url, DOMString id, DOMString password, <ref>SyncMode</ref> mode, <ref>SyncType</ref> type),
28019   Constructor(DOMString url, DOMString id, DOMString password, <ref>SyncMode</ref> mode, <ref>SyncInterval</ref> interval)]
28020   interface SyncInfo {
28021     attribute DOMString url;
28022
28023     attribute DOMString id;
28024
28025     attribute DOMString password;
28026
28027     attribute <ref>SyncMode</ref> mode;
28028
28029     attribute <ref>SyncType</ref>? type;
28030
28031     attribute <ref>SyncInterval</ref>? interval;
28032   };
28033
28034   [Constructor(boolean enable, <ref>SyncServiceType</ref> serviceType, DOMString serverDatabaseUri, optional DOMString? id, optional DOMString? password)]
28035   interface SyncServiceInfo {
28036     attribute boolean enable;
28037
28038     attribute <ref>SyncServiceType</ref> serviceType;
28039
28040     attribute DOMString serverDatabaseUri;
28041
28042     attribute DOMString? id;
28043
28044     attribute DOMString? password;
28045   };
28046
28047   [Constructor(DOMString profileName, <ref>SyncInfo</ref> syncInfo, optional <ref>SyncServiceInfo</ref>[]? serviceInfo)]
28048   interface SyncProfileInfo {
28049     readonly attribute <ref>SyncProfileId</ref> profileId;
28050
28051     attribute DOMString profileName;
28052
28053     attribute <ref>SyncInfo</ref> syncInfo;
28054
28055     attribute <ref>SyncServiceInfo</ref>[]? serviceInfo;
28056   };
28057
28058   [NoInterfaceObject] interface SyncStatistics {
28059     readonly attribute <ref>SyncStatus</ref> syncStatus;
28060
28061     readonly attribute <ref>SyncServiceType</ref> serviceType;
28062
28063     readonly attribute Date lastSyncTime;
28064
28065     readonly attribute unsigned long serverToClientTotal;
28066
28067     readonly attribute unsigned long serverToClientAdded;
28068
28069     readonly attribute unsigned long serverToClientUpdated;
28070
28071     readonly attribute unsigned long serverToClientRemoved;
28072
28073     readonly attribute unsigned long clientToServerTotal;
28074
28075     readonly attribute unsigned long clientToServerAdded;
28076
28077     readonly attribute unsigned long clientToServerUpdated;
28078
28079     readonly attribute unsigned long clientToServerRemoved;
28080   };
28081
28082   [NoInterfaceObject] interface DataSynchronizationManager {
28083     void add(<ref>SyncProfileInfo</ref> profile) raises(<ref>WebAPIException</ref>);
28084
28085     void update(<ref>SyncProfileInfo</ref> profile) raises(<ref>WebAPIException</ref>);
28086
28087     void remove(<ref>SyncProfileId</ref> profileId) raises(<ref>WebAPIException</ref>);
28088
28089     long getMaxProfilesNum() raises(<ref>WebAPIException</ref>);
28090
28091     unsigned long getProfilesNum() raises(<ref>WebAPIException</ref>);
28092
28093     <ref>SyncProfileInfo</ref> get(<ref>SyncProfileId</ref> profileId) raises(<ref>WebAPIException</ref>);
28094
28095     <ref>SyncProfileInfo</ref>[] getAll() raises(<ref>WebAPIException</ref>);
28096
28097     void startSync(<ref>SyncProfileId</ref> profileId, optional <ref>SyncProgressCallback</ref>? progressCallback) raises(<ref>WebAPIException</ref>);
28098
28099     void stopSync(<ref>SyncProfileId</ref> profileId) raises(<ref>WebAPIException</ref>);
28100
28101     <ref>SyncStatistics</ref>[] getLastSyncStatistics(<ref>SyncProfileId</ref> profileId) raises(<ref>WebAPIException</ref>);
28102   };
28103
28104   [Callback, NoInterfaceObject] interface SyncProgressCallback {
28105     void onprogress(<ref>SyncProfileId</ref> profileId, <ref>SyncServiceType</ref> serviceType, boolean isFromServer, unsigned long totalPerService, unsigned long syncedPerService);
28106
28107     void oncompleted(<ref>SyncProfileId</ref> profileId);
28108
28109     void onstopped(<ref>SyncProfileId</ref> profileId);
28110
28111     void onfailed(<ref>SyncProfileId</ref> profileId, <ref>WebAPIError</ref> error);
28112   };
28113 };</webidl>
28114     <descriptive>
28115         <brief>
28116  This API provides methods to synchronize contact and event data to the server using the OMA DS 1.2 protocol.
28117 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>.
28118         </brief>
28119         <version>
28120  2.1
28121         </version>
28122     </descriptive>
28123     <Typedef name="SyncProfileId" id="::DataSynchronization::SyncProfileId">
28124       <webidl>  typedef DOMString SyncProfileId;</webidl>
28125       <descriptive>
28126           <brief>
28127  An attribute to uniquely identify a sync profile.
28128           </brief>
28129           <version>
28130  2.1
28131           </version>
28132       </descriptive>
28133       <Type type="DOMString"/>
28134     </Typedef>
28135     <Enum name="SyncMode" id="::DataSynchronization::SyncMode">
28136       <webidl>  enum SyncMode { &quot;MANUAL&quot;, &quot;PERIODIC&quot;, &quot;PUSH&quot; };</webidl>
28137       <descriptive>
28138           <brief>
28139  An enumerator that indicates the supported synchronization modes.
28140           </brief>
28141          <description>
28142           <p>
28143 The following values are supported:
28144           </p>
28145           <ul>
28146             <li>
28147 MANUAL - Indicates that the synchronization starts by manual trigger. The sync type should be specified. The default value is <em>TWO_WAY</em>.            </li>
28148             <li>
28149 PERIODIC - Indicates that the synchronization starts automatically by a preset period. The sync interval should be provided.            </li>
28150             <li>
28151 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>
28152           </ul>
28153          </description>
28154           <version>
28155  2.1
28156           </version>
28157       </descriptive>
28158       <EnumValue stringvalue="MANUAL">
28159         <webidl> &quot;MANUAL</webidl>
28160       </EnumValue>
28161       <EnumValue stringvalue="PERIODIC">
28162         <webidl> &quot;PERIODIC</webidl>
28163       </EnumValue>
28164       <EnumValue stringvalue="PUSH">
28165         <webidl> &quot;PUSH</webidl>
28166       </EnumValue>
28167     </Enum>
28168     <Enum name="SyncType" id="::DataSynchronization::SyncType">
28169       <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>
28170       <descriptive>
28171           <brief>
28172  An enumerator that indicates the supported synchronization types.
28173           </brief>
28174          <description>
28175           <p>
28176 The following values are supported:
28177           </p>
28178           <ul>
28179             <li>
28180 TWO_WAY - Indicates a normal sync type in which the client and the server exchange information about modified data in these devices.            </li>
28181             <li>
28182 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>
28183             <li>
28184 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>
28185             <li>
28186 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>
28187             <li>
28188 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>
28189             <li>
28190 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>
28191           </ul>
28192          </description>
28193           <version>
28194  2.1
28195           </version>
28196       </descriptive>
28197       <EnumValue stringvalue="TWO_WAY">
28198         <webidl> &quot;TWO_WAY</webidl>
28199       </EnumValue>
28200       <EnumValue stringvalue="SLOW">
28201         <webidl> &quot;SLOW</webidl>
28202       </EnumValue>
28203       <EnumValue stringvalue="ONE_WAY_FROM_CLIENT">
28204         <webidl> &quot;ONE_WAY_FROM_CLIENT</webidl>
28205       </EnumValue>
28206       <EnumValue stringvalue="REFRESH_FROM_CLIENT">
28207         <webidl> &quot;REFRESH_FROM_CLIENT</webidl>
28208       </EnumValue>
28209       <EnumValue stringvalue="ONE_WAY_FROM_SERVER">
28210         <webidl> &quot;ONE_WAY_FROM_SERVER</webidl>
28211       </EnumValue>
28212       <EnumValue stringvalue="REFRESH_FROM_SERVER">
28213         <webidl> &quot;REFRESH_FROM_SERVER</webidl>
28214       </EnumValue>
28215     </Enum>
28216     <Enum name="SyncInterval" id="::DataSynchronization::SyncInterval">
28217       <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>
28218       <descriptive>
28219           <brief>
28220  An enumerator that indicates the supported synchronization intervals.
28221           </brief>
28222          <description>
28223           <p>
28224 The following values are supported:
28225           </p>
28226           <ul>
28227             <li>
28228 5_MINUTES - Indicates a time period of 5 minutes.            </li>
28229             <li>
28230 15_MINUTES - Indicates a time period of 15 minutes.            </li>
28231             <li>
28232 1_HOUR - Indicates a time period of 1 hour.            </li>
28233             <li>
28234 4_HOURS - Indicates a time period of 4 hours.            </li>
28235             <li>
28236 12_HOURS - Indicates a time period of 12 hours.            </li>
28237             <li>
28238 1_DAY - Indicates a time period of 1 day.            </li>
28239             <li>
28240 1_WEEK - Indicates a time period of 1 week.            </li>
28241             <li>
28242 1_MONTH - Indicates a time period of 1 month.            </li>
28243           </ul>
28244          </description>
28245           <version>
28246  2.1
28247           </version>
28248       </descriptive>
28249       <EnumValue stringvalue="5_MINUTES">
28250         <webidl> &quot;5_MINUTES</webidl>
28251       </EnumValue>
28252       <EnumValue stringvalue="15_MINUTES">
28253         <webidl> &quot;15_MINUTES</webidl>
28254       </EnumValue>
28255       <EnumValue stringvalue="1_HOUR">
28256         <webidl> &quot;1_HOUR</webidl>
28257       </EnumValue>
28258       <EnumValue stringvalue="4_HOURS">
28259         <webidl> &quot;4_HOURS</webidl>
28260       </EnumValue>
28261       <EnumValue stringvalue="12_HOURS">
28262         <webidl> &quot;12_HOURS</webidl>
28263       </EnumValue>
28264       <EnumValue stringvalue="1_DAY">
28265         <webidl> &quot;1_DAY</webidl>
28266       </EnumValue>
28267       <EnumValue stringvalue="1_WEEK">
28268         <webidl> &quot;1_WEEK</webidl>
28269       </EnumValue>
28270       <EnumValue stringvalue="1_MONTH">
28271         <webidl> &quot;1_MONTH</webidl>
28272       </EnumValue>
28273     </Enum>
28274     <Enum name="SyncServiceType" id="::DataSynchronization::SyncServiceType">
28275       <webidl>  enum SyncServiceType { &quot;CONTACT&quot;, &quot;EVENT&quot; };</webidl>
28276       <descriptive>
28277           <brief>
28278  An enumerator that indicates the supported synchronization service type of the device.
28279           </brief>
28280          <description>
28281           <p>
28282 The following values are supported:
28283           </p>
28284           <ul>
28285             <li>
28286 CONTACT - Indicates the device contact records.            </li>
28287             <li>
28288 EVENT - Indicates the device calendar event records.            </li>
28289           </ul>
28290          </description>
28291           <version>
28292  2.1
28293           </version>
28294       </descriptive>
28295       <EnumValue stringvalue="CONTACT">
28296         <webidl> &quot;CONTACT</webidl>
28297       </EnumValue>
28298       <EnumValue stringvalue="EVENT">
28299         <webidl> &quot;EVENT</webidl>
28300       </EnumValue>
28301     </Enum>
28302     <Enum name="SyncStatus" id="::DataSynchronization::SyncStatus">
28303       <webidl>  enum SyncStatus { &quot;SUCCESS&quot;, &quot;FAIL&quot;, &quot;STOP&quot;, &quot;NONE&quot; };</webidl>
28304       <descriptive>
28305           <brief>
28306  An enumerator that indicates the last sync statuses.
28307           </brief>
28308          <description>
28309           <p>
28310 The following values are supported:
28311           </p>
28312           <ul>
28313             <li>
28314 SUCCESS - Indicates the sync is successful.            </li>
28315             <li>
28316 FAIL - Indicates the sync has failed.            </li>
28317             <li>
28318 STOP - Indicates the sync has been stopped by user's action.            </li>
28319             <li>
28320 NONE - Indicates the sync was never performed.            </li>
28321           </ul>
28322          </description>
28323           <version>
28324  2.1
28325           </version>
28326       </descriptive>
28327       <EnumValue stringvalue="SUCCESS">
28328         <webidl> &quot;SUCCESS</webidl>
28329       </EnumValue>
28330       <EnumValue stringvalue="FAIL">
28331         <webidl> &quot;FAIL</webidl>
28332       </EnumValue>
28333       <EnumValue stringvalue="STOP">
28334         <webidl> &quot;STOP</webidl>
28335       </EnumValue>
28336       <EnumValue stringvalue="NONE">
28337         <webidl> &quot;NONE</webidl>
28338       </EnumValue>
28339     </Enum>
28340     <Interface name="DataSynchronizationManagerObject" id="::DataSynchronization::DataSynchronizationManagerObject">
28341       <webidl>  [NoInterfaceObject] interface DataSynchronizationManagerObject {
28342     readonly attribute <ref>DataSynchronizationManager</ref> datasync;
28343   };</webidl>
28344       <descriptive>
28345           <brief>
28346  This interface defines the default data synchronization manager that is instantiated by the <em>Tizen </em>object.
28347 There will be a <em>tizen.datasync</em> object that allows access to the functionality of the DataSynchronization API.
28348           </brief>
28349           <version>
28350  2.1
28351           </version>
28352       </descriptive>
28353       <ExtendedAttributeList>
28354         <ExtendedAttribute name="NoInterfaceObject">
28355           <webidl>NoInterfaceObject</webidl>
28356         </ExtendedAttribute>
28357       </ExtendedAttributeList>
28358       <Attribute readonly="readonly" name="datasync" id="::DataSynchronization::DataSynchronizationManagerObject::datasync">
28359         <webidl>    readonly attribute <ref>DataSynchronizationManager</ref> datasync;</webidl>
28360         <Type name="DataSynchronizationManager"/>
28361       </Attribute>
28362     </Interface>
28363     <Implements name1="Tizen" name2="DataSynchronizationManagerObject">
28364       <webidl>  <ref>Tizen</ref> implements <ref>DataSynchronizationManagerObject</ref>;</webidl>
28365     </Implements>
28366     <Interface name="SyncInfo" id="::DataSynchronization::SyncInfo">
28367       <webidl>  [Constructor(DOMString url, DOMString id, DOMString password, <ref>SyncMode</ref> mode),
28368   Constructor(DOMString url, DOMString id, DOMString password, <ref>SyncMode</ref> mode, <ref>SyncType</ref> type),
28369   Constructor(DOMString url, DOMString id, DOMString password, <ref>SyncMode</ref> mode, <ref>SyncInterval</ref> interval)]
28370   interface SyncInfo {
28371     attribute DOMString url;
28372
28373     attribute DOMString id;
28374
28375     attribute DOMString password;
28376
28377     attribute <ref>SyncMode</ref> mode;
28378
28379     attribute <ref>SyncType</ref>? type;
28380
28381     attribute <ref>SyncInterval</ref>? interval;
28382   };</webidl>
28383       <descriptive>
28384           <brief>
28385  This interface defines the sync information.
28386           </brief>
28387           <version>
28388  2.1
28389           </version>
28390           <remark>
28391  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.
28392           </remark>
28393       </descriptive>
28394       <ExtendedAttributeList>
28395         <ExtendedAttribute name="Constructor">
28396           <webidl>Constructor(DOMString url, DOMString id, DOMString password, <ref>SyncMode</ref> mode)</webidl>
28397           <ArgumentList>
28398             <Argument name="url">
28399               <Type type="DOMString"/>
28400             </Argument>
28401             <Argument name="id">
28402               <Type type="DOMString"/>
28403             </Argument>
28404             <Argument name="password">
28405               <Type type="DOMString"/>
28406             </Argument>
28407             <Argument name="mode">
28408               <Type name="SyncMode"/>
28409             </Argument>
28410           </ArgumentList>
28411         </ExtendedAttribute>
28412         <ExtendedAttribute name="Constructor">
28413           <webidl>  Constructor(DOMString url, DOMString id, DOMString password, <ref>SyncMode</ref> mode, <ref>SyncType</ref> type)</webidl>
28414           <ArgumentList>
28415             <Argument name="url">
28416               <Type type="DOMString"/>
28417             </Argument>
28418             <Argument name="id">
28419               <Type type="DOMString"/>
28420             </Argument>
28421             <Argument name="password">
28422               <Type type="DOMString"/>
28423             </Argument>
28424             <Argument name="mode">
28425               <Type name="SyncMode"/>
28426             </Argument>
28427             <Argument name="type">
28428               <Type name="SyncType"/>
28429             </Argument>
28430           </ArgumentList>
28431         </ExtendedAttribute>
28432         <ExtendedAttribute name="Constructor">
28433           <webidl>  Constructor(DOMString url, DOMString id, DOMString password, <ref>SyncMode</ref> mode, <ref>SyncInterval</ref> interval)</webidl>
28434           <ArgumentList>
28435             <Argument name="url">
28436               <Type type="DOMString"/>
28437             </Argument>
28438             <Argument name="id">
28439               <Type type="DOMString"/>
28440             </Argument>
28441             <Argument name="password">
28442               <Type type="DOMString"/>
28443             </Argument>
28444             <Argument name="mode">
28445               <Type name="SyncMode"/>
28446             </Argument>
28447             <Argument name="interval">
28448               <Type name="SyncInterval"/>
28449             </Argument>
28450           </ArgumentList>
28451         </ExtendedAttribute>
28452       </ExtendedAttributeList>
28453       <Attribute name="url" id="::DataSynchronization::SyncInfo::url">
28454         <webidl>    attribute DOMString url;</webidl>
28455         <descriptive>
28456             <brief>
28457  An attribute to store the URL of the sync server.
28458             </brief>
28459             <version>
28460  2.1
28461             </version>
28462         </descriptive>
28463         <Type type="DOMString"/>
28464       </Attribute>
28465       <Attribute name="id" id="::DataSynchronization::SyncInfo::id">
28466         <webidl>    attribute DOMString id;</webidl>
28467         <descriptive>
28468             <brief>
28469  An attribute to store the login ID for the sync server.
28470             </brief>
28471            <description>
28472             <p>
28473 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.
28474             </p>
28475            </description>
28476             <version>
28477  2.1
28478             </version>
28479         </descriptive>
28480         <Type type="DOMString"/>
28481       </Attribute>
28482       <Attribute name="password" id="::DataSynchronization::SyncInfo::password">
28483         <webidl>    attribute DOMString password;</webidl>
28484         <descriptive>
28485             <brief>
28486  An attribute to store the login password to the sync server.
28487             </brief>
28488            <description>
28489             <p>
28490 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.
28491             </p>
28492            </description>
28493             <version>
28494  2.1
28495             </version>
28496         </descriptive>
28497         <Type type="DOMString"/>
28498       </Attribute>
28499       <Attribute name="mode" id="::DataSynchronization::SyncInfo::mode">
28500         <webidl>    attribute <ref>SyncMode</ref> mode;</webidl>
28501         <descriptive>
28502             <brief>
28503  An attribute to store the sync mode.
28504             </brief>
28505             <version>
28506  2.1
28507             </version>
28508         </descriptive>
28509         <Type name="SyncMode"/>
28510       </Attribute>
28511       <Attribute name="type" id="::DataSynchronization::SyncInfo::type">
28512         <webidl>    attribute <ref>SyncType</ref>? type;</webidl>
28513         <descriptive>
28514             <brief>
28515  An attribute to store the sync type.
28516             </brief>
28517            <description>
28518             <p>
28519 This attribute is used when the sync mode is set to <em>MANUAL</em> option.
28520             </p>
28521            </description>
28522             <version>
28523  2.1
28524             </version>
28525         </descriptive>
28526         <Type name="SyncType" nullable="nullable"/>
28527       </Attribute>
28528       <Attribute name="interval" id="::DataSynchronization::SyncInfo::interval">
28529         <webidl>    attribute <ref>SyncInterval</ref>? interval;</webidl>
28530         <descriptive>
28531             <brief>
28532  An attribute to store the sync interval.
28533             </brief>
28534            <description>
28535             <p>
28536 This attribute is used when the sync mode is set to <em>PERIODIC</em> option.
28537             </p>
28538            </description>
28539             <version>
28540  2.1
28541             </version>
28542         </descriptive>
28543         <Type name="SyncInterval" nullable="nullable"/>
28544       </Attribute>
28545     </Interface>
28546     <Interface name="SyncServiceInfo" id="::DataSynchronization::SyncServiceInfo">
28547       <webidl>  [Constructor(boolean enable, <ref>SyncServiceType</ref> serviceType, DOMString serverDatabaseUri, optional DOMString? id, optional DOMString? password)]
28548   interface SyncServiceInfo {
28549     attribute boolean enable;
28550
28551     attribute <ref>SyncServiceType</ref> serviceType;
28552
28553     attribute DOMString serverDatabaseUri;
28554
28555     attribute DOMString? id;
28556
28557     attribute DOMString? password;
28558   };</webidl>
28559       <descriptive>
28560           <brief>
28561  This interface defines the sync service information.
28562           </brief>
28563           <version>
28564  2.1
28565           </version>
28566       </descriptive>
28567       <ExtendedAttributeList>
28568         <ExtendedAttribute name="Constructor">
28569           <webidl>Constructor(boolean enable, <ref>SyncServiceType</ref> serviceType, DOMString serverDatabaseUri, optional DOMString? id, optional DOMString? password)</webidl>
28570           <ArgumentList>
28571             <Argument name="enable">
28572               <Type type="boolean"/>
28573             </Argument>
28574             <Argument name="serviceType">
28575               <Type name="SyncServiceType"/>
28576             </Argument>
28577             <Argument name="serverDatabaseUri">
28578               <Type type="DOMString"/>
28579             </Argument>
28580             <Argument optional="optional" name="id">
28581               <Type type="DOMString" nullable="nullable"/>
28582             </Argument>
28583             <Argument optional="optional" name="password">
28584               <Type type="DOMString" nullable="nullable"/>
28585             </Argument>
28586           </ArgumentList>
28587         </ExtendedAttribute>
28588       </ExtendedAttributeList>
28589       <Attribute name="enable" id="::DataSynchronization::SyncServiceInfo::enable">
28590         <webidl>    attribute boolean enable;</webidl>
28591         <descriptive>
28592             <brief>
28593  An attribute to enable or disable a service category for sync.
28594             </brief>
28595             <version>
28596  2.1
28597             </version>
28598         </descriptive>
28599         <Type type="boolean"/>
28600       </Attribute>
28601       <Attribute name="serviceType" id="::DataSynchronization::SyncServiceInfo::serviceType">
28602         <webidl>    attribute <ref>SyncServiceType</ref> serviceType;</webidl>
28603         <descriptive>
28604             <brief>
28605  An attribute to indicate the sync service type.
28606             </brief>
28607             <version>
28608  2.1
28609             </version>
28610         </descriptive>
28611         <Type name="SyncServiceType"/>
28612       </Attribute>
28613       <Attribute name="serverDatabaseUri" id="::DataSynchronization::SyncServiceInfo::serverDatabaseUri">
28614         <webidl>    attribute DOMString serverDatabaseUri;</webidl>
28615         <descriptive>
28616             <brief>
28617  An attribute to store the sync service DB URI of the server.
28618             </brief>
28619             <version>
28620  2.1
28621             </version>
28622         </descriptive>
28623         <Type type="DOMString"/>
28624       </Attribute>
28625       <Attribute name="id" id="::DataSynchronization::SyncServiceInfo::id">
28626         <webidl>    attribute DOMString? id;</webidl>
28627         <descriptive>
28628             <brief>
28629  An attribute to store the sync service DB access ID to the server.
28630             </brief>
28631            <description>
28632             <p>
28633 This is used only when the server requires a separate access right to each DB.
28634 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.
28635             </p>
28636            </description>
28637             <version>
28638  2.1
28639             </version>
28640         </descriptive>
28641         <Type type="DOMString" nullable="nullable"/>
28642       </Attribute>
28643       <Attribute name="password" id="::DataSynchronization::SyncServiceInfo::password">
28644         <webidl>    attribute DOMString? password;</webidl>
28645         <descriptive>
28646             <brief>
28647  An attribute to store the sync service DB access password to the server.
28648             </brief>
28649            <description>
28650             <p>
28651 This is used only when the server requires a separate access right to each DB.
28652 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.
28653             </p>
28654            </description>
28655             <version>
28656  2.1
28657             </version>
28658         </descriptive>
28659         <Type type="DOMString" nullable="nullable"/>
28660       </Attribute>
28661     </Interface>
28662     <Interface name="SyncProfileInfo" id="::DataSynchronization::SyncProfileInfo">
28663       <webidl>  [Constructor(DOMString profileName, <ref>SyncInfo</ref> syncInfo, optional <ref>SyncServiceInfo</ref>[]? serviceInfo)]
28664   interface SyncProfileInfo {
28665     readonly attribute <ref>SyncProfileId</ref> profileId;
28666
28667     attribute DOMString profileName;
28668
28669     attribute <ref>SyncInfo</ref> syncInfo;
28670
28671     attribute <ref>SyncServiceInfo</ref>[]? serviceInfo;
28672   };</webidl>
28673       <descriptive>
28674           <brief>
28675  This interface defines the sync profile information, based on which the synchronization is performed.
28676           </brief>
28677           <version>
28678  2.1
28679           </version>
28680       </descriptive>
28681       <ExtendedAttributeList>
28682         <ExtendedAttribute name="Constructor">
28683           <webidl>Constructor(DOMString profileName, <ref>SyncInfo</ref> syncInfo, optional <ref>SyncServiceInfo</ref>[]? serviceInfo)</webidl>
28684           <ArgumentList>
28685             <Argument name="profileName">
28686               <Type type="DOMString"/>
28687             </Argument>
28688             <Argument name="syncInfo">
28689               <Type name="SyncInfo"/>
28690             </Argument>
28691             <Argument optional="optional" name="serviceInfo">
28692               <Type type="array" nullable="nullable">
28693                 <Type name="SyncServiceInfo"/>
28694               </Type>
28695             </Argument>
28696           </ArgumentList>
28697         </ExtendedAttribute>
28698       </ExtendedAttributeList>
28699       <Attribute readonly="readonly" name="profileId" id="::DataSynchronization::SyncProfileInfo::profileId">
28700         <webidl>    readonly attribute <ref>SyncProfileId</ref> profileId;</webidl>
28701         <descriptive>
28702             <brief>
28703  An attribute to store the unique identifier provided by the platform for a profile that has been successfully added.
28704             </brief>
28705             <version>
28706  2.1
28707             </version>
28708         </descriptive>
28709         <Type name="SyncProfileId"/>
28710       </Attribute>
28711       <Attribute name="profileName" id="::DataSynchronization::SyncProfileInfo::profileName">
28712         <webidl>    attribute DOMString profileName;</webidl>
28713         <descriptive>
28714             <brief>
28715  An attribute to store the profile name.
28716             </brief>
28717             <version>
28718  2.1
28719             </version>
28720         </descriptive>
28721         <Type type="DOMString"/>
28722       </Attribute>
28723       <Attribute name="syncInfo" id="::DataSynchronization::SyncProfileInfo::syncInfo">
28724         <webidl>    attribute <ref>SyncInfo</ref> syncInfo;</webidl>
28725         <descriptive>
28726             <brief>
28727  An attribute to store the sync info.
28728             </brief>
28729             <version>
28730  2.1
28731             </version>
28732         </descriptive>
28733         <Type name="SyncInfo"/>
28734       </Attribute>
28735       <Attribute name="serviceInfo" id="::DataSynchronization::SyncProfileInfo::serviceInfo">
28736         <webidl>    attribute <ref>SyncServiceInfo</ref>[]? serviceInfo;</webidl>
28737         <descriptive>
28738             <brief>
28739  An attribute to indicate the service info.
28740             </brief>
28741             <version>
28742  2.1
28743             </version>
28744         </descriptive>
28745         <Type type="array" nullable="nullable">
28746           <Type name="SyncServiceInfo"/>
28747         </Type>
28748       </Attribute>
28749     </Interface>
28750     <Interface name="SyncStatistics" id="::DataSynchronization::SyncStatistics">
28751       <webidl>  [NoInterfaceObject] interface SyncStatistics {
28752     readonly attribute <ref>SyncStatus</ref> syncStatus;
28753
28754     readonly attribute <ref>SyncServiceType</ref> serviceType;
28755
28756     readonly attribute Date lastSyncTime;
28757
28758     readonly attribute unsigned long serverToClientTotal;
28759
28760     readonly attribute unsigned long serverToClientAdded;
28761
28762     readonly attribute unsigned long serverToClientUpdated;
28763
28764     readonly attribute unsigned long serverToClientRemoved;
28765
28766     readonly attribute unsigned long clientToServerTotal;
28767
28768     readonly attribute unsigned long clientToServerAdded;
28769
28770     readonly attribute unsigned long clientToServerUpdated;
28771
28772     readonly attribute unsigned long clientToServerRemoved;
28773   };</webidl>
28774       <descriptive>
28775           <brief>
28776  This interface defines the sync statistics for a profile service.
28777           </brief>
28778           <version>
28779  2.1
28780           </version>
28781       </descriptive>
28782       <ExtendedAttributeList>
28783         <ExtendedAttribute name="NoInterfaceObject">
28784           <webidl>NoInterfaceObject</webidl>
28785         </ExtendedAttribute>
28786       </ExtendedAttributeList>
28787       <Attribute readonly="readonly" name="syncStatus" id="::DataSynchronization::SyncStatistics::syncStatus">
28788         <webidl>    readonly attribute <ref>SyncStatus</ref> syncStatus;</webidl>
28789         <descriptive>
28790             <brief>
28791  An attribute to store the last sync status for a corresponding service category.
28792             </brief>
28793             <version>
28794  2.1
28795             </version>
28796         </descriptive>
28797         <Type name="SyncStatus"/>
28798       </Attribute>
28799       <Attribute readonly="readonly" name="serviceType" id="::DataSynchronization::SyncStatistics::serviceType">
28800         <webidl>    readonly attribute <ref>SyncServiceType</ref> serviceType;</webidl>
28801         <descriptive>
28802             <brief>
28803  An attribute to indicate the sync service type.
28804             </brief>
28805             <version>
28806  2.1
28807             </version>
28808         </descriptive>
28809         <Type name="SyncServiceType"/>
28810       </Attribute>
28811       <Attribute readonly="readonly" name="lastSyncTime" id="::DataSynchronization::SyncStatistics::lastSyncTime">
28812         <webidl>    readonly attribute Date lastSyncTime;</webidl>
28813         <descriptive>
28814             <brief>
28815  An attribute to store the last sync time.
28816             </brief>
28817             <version>
28818  2.1
28819             </version>
28820         </descriptive>
28821         <Type type="Date"/>
28822       </Attribute>
28823       <Attribute readonly="readonly" name="serverToClientTotal" id="::DataSynchronization::SyncStatistics::serverToClientTotal">
28824         <webidl>    readonly attribute unsigned long serverToClientTotal;</webidl>
28825         <descriptive>
28826             <brief>
28827  An attribute to indicate the total number of items sent from the server to the client direction.
28828             </brief>
28829             <version>
28830  2.1
28831             </version>
28832         </descriptive>
28833         <Type type="unsigned long"/>
28834       </Attribute>
28835       <Attribute readonly="readonly" name="serverToClientAdded" id="::DataSynchronization::SyncStatistics::serverToClientAdded">
28836         <webidl>    readonly attribute unsigned long serverToClientAdded;</webidl>
28837         <descriptive>
28838             <brief>
28839  An attribute to indicate the number of added items from the server to the client direction.
28840             </brief>
28841             <version>
28842  2.1
28843             </version>
28844         </descriptive>
28845         <Type type="unsigned long"/>
28846       </Attribute>
28847       <Attribute readonly="readonly" name="serverToClientUpdated" id="::DataSynchronization::SyncStatistics::serverToClientUpdated">
28848         <webidl>    readonly attribute unsigned long serverToClientUpdated;</webidl>
28849         <descriptive>
28850             <brief>
28851  An attribute to indicate the number of updated items from the server to the client direction.
28852             </brief>
28853             <version>
28854  2.1
28855             </version>
28856         </descriptive>
28857         <Type type="unsigned long"/>
28858       </Attribute>
28859       <Attribute readonly="readonly" name="serverToClientRemoved" id="::DataSynchronization::SyncStatistics::serverToClientRemoved">
28860         <webidl>    readonly attribute unsigned long serverToClientRemoved;</webidl>
28861         <descriptive>
28862             <brief>
28863  An attribute to indicate the number of removed items from the server to the client direction.
28864             </brief>
28865             <version>
28866  2.1
28867             </version>
28868         </descriptive>
28869         <Type type="unsigned long"/>
28870       </Attribute>
28871       <Attribute readonly="readonly" name="clientToServerTotal" id="::DataSynchronization::SyncStatistics::clientToServerTotal">
28872         <webidl>    readonly attribute unsigned long clientToServerTotal;</webidl>
28873         <descriptive>
28874             <brief>
28875  An attribute to indicate the total number of items from the client to the server direction.
28876             </brief>
28877             <version>
28878  2.1
28879             </version>
28880         </descriptive>
28881         <Type type="unsigned long"/>
28882       </Attribute>
28883       <Attribute readonly="readonly" name="clientToServerAdded" id="::DataSynchronization::SyncStatistics::clientToServerAdded">
28884         <webidl>    readonly attribute unsigned long clientToServerAdded;</webidl>
28885         <descriptive>
28886             <brief>
28887  An attribute to indicate the number of added items from the client to the server direction.
28888             </brief>
28889             <version>
28890  2.1
28891             </version>
28892         </descriptive>
28893         <Type type="unsigned long"/>
28894       </Attribute>
28895       <Attribute readonly="readonly" name="clientToServerUpdated" id="::DataSynchronization::SyncStatistics::clientToServerUpdated">
28896         <webidl>    readonly attribute unsigned long clientToServerUpdated;</webidl>
28897         <descriptive>
28898             <brief>
28899  An attribute to indicate the number of updated items from the client to the server direction.
28900             </brief>
28901             <version>
28902  2.1
28903             </version>
28904         </descriptive>
28905         <Type type="unsigned long"/>
28906       </Attribute>
28907       <Attribute readonly="readonly" name="clientToServerRemoved" id="::DataSynchronization::SyncStatistics::clientToServerRemoved">
28908         <webidl>    readonly attribute unsigned long clientToServerRemoved;</webidl>
28909         <descriptive>
28910             <brief>
28911  An attribute to indicate the number of removed items from the client to the server direction.
28912             </brief>
28913             <version>
28914  2.1
28915             </version>
28916         </descriptive>
28917         <Type type="unsigned long"/>
28918       </Attribute>
28919     </Interface>
28920     <Interface name="DataSynchronizationManager" id="::DataSynchronization::DataSynchronizationManager">
28921       <webidl>  [NoInterfaceObject] interface DataSynchronizationManager {
28922     void add(<ref>SyncProfileInfo</ref> profile) raises(<ref>WebAPIException</ref>);
28923
28924     void update(<ref>SyncProfileInfo</ref> profile) raises(<ref>WebAPIException</ref>);
28925
28926     void remove(<ref>SyncProfileId</ref> profileId) raises(<ref>WebAPIException</ref>);
28927
28928     long getMaxProfilesNum() raises(<ref>WebAPIException</ref>);
28929
28930     unsigned long getProfilesNum() raises(<ref>WebAPIException</ref>);
28931
28932     <ref>SyncProfileInfo</ref> get(<ref>SyncProfileId</ref> profileId) raises(<ref>WebAPIException</ref>);
28933
28934     <ref>SyncProfileInfo</ref>[] getAll() raises(<ref>WebAPIException</ref>);
28935
28936     void startSync(<ref>SyncProfileId</ref> profileId, optional <ref>SyncProgressCallback</ref>? progressCallback) raises(<ref>WebAPIException</ref>);
28937
28938     void stopSync(<ref>SyncProfileId</ref> profileId) raises(<ref>WebAPIException</ref>);
28939
28940     <ref>SyncStatistics</ref>[] getLastSyncStatistics(<ref>SyncProfileId</ref> profileId) raises(<ref>WebAPIException</ref>);
28941   };</webidl>
28942       <descriptive>
28943           <brief>
28944  This interface allows managing profiles and synchronizing data between the server and the client device based on the stored profile information.
28945           </brief>
28946           <version>
28947  2.1
28948           </version>
28949       </descriptive>
28950       <ExtendedAttributeList>
28951         <ExtendedAttribute name="NoInterfaceObject">
28952           <webidl>NoInterfaceObject</webidl>
28953         </ExtendedAttribute>
28954       </ExtendedAttributeList>
28955       <Operation name="add" id="::DataSynchronization::DataSynchronizationManager::add">
28956         <webidl>    void add(<ref>SyncProfileInfo</ref> profile) raises(<ref>WebAPIException</ref>);</webidl>
28957         <descriptive>
28958             <brief>
28959  Adds a sync profile.
28960             </brief>
28961            <description>
28962             <p>
28963 The profile ID is provided when the profile is successfully added.
28964             </p>
28965            </description>
28966             <version>
28967  2.1
28968             </version>
28969             <privilegelevel>
28970  public
28971             </privilegelevel>
28972             <privilege>
28973  http://tizen.org/privilege/datasync
28974             </privilege>
28975             <Code> // Creates a sync info
28976  var syncInfo = new tizen.SyncInfo(&quot;http://example.com/sync&quot;, &quot;myId&quot;, &quot;myPassword&quot;, &quot;MANUAL&quot;, &quot;TWO_WAY&quot;);
28977
28978  // Syncs both contacts and events
28979  var contactInfo = new tizen.SyncServiceInfo(true, &quot;CONTACT&quot;, &quot;serverContact&quot;);
28980  var eventInfo = new tizen.SyncServiceInfo(true, &quot;EVENT&quot;, &quot;serverEvent&quot;);
28981  var serviceInfo = [contactInfo, eventInfo];
28982
28983  // Adds a profile to sync
28984  var profile = new tizen.SyncProfileInfo(&quot;MyProfile&quot;, syncInfo, serviceInfo);
28985  tizen.datasync.add(profile);
28986  </Code>
28987         </descriptive>
28988         <Type type="void"/>
28989         <ArgumentList>
28990           <Argument name="profile">
28991             <descriptive>
28992                 <description><p>
28993  The sync profile information to add.
28994                 </p></description>
28995             </descriptive>
28996             <Type name="SyncProfileInfo"/>
28997           </Argument>
28998         </ArgumentList>
28999         <Raises>
29000           <RaiseException name="WebAPIException">
29001             <descriptive>
29002                 <description><p>
29003  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
29004                 </p></description>
29005                 <description><p>
29006  with error type QuotaExceededError, if the platform has already reached the maximum number of profiles.
29007                 </p></description>
29008                 <description><p>
29009  with error type NotSupportedError, if this feature is not supported.
29010                 </p></description>
29011                 <description><p>
29012  with error type InvalidValuesError, if any of the input parameters contain an invalid value.
29013                 </p></description>
29014                 <description><p>
29015  with error type SecurityError, if the application does not have the privilege to call this method.
29016                 </p></description>
29017                 <description><p>
29018  with error type UnknownError, if any other error occurs.
29019                 </p></description>
29020             </descriptive>
29021           </RaiseException>
29022         </Raises>
29023       </Operation>
29024       <Operation name="update" id="::DataSynchronization::DataSynchronizationManager::update">
29025         <webidl>    void update(<ref>SyncProfileInfo</ref> profile) raises(<ref>WebAPIException</ref>);</webidl>
29026         <descriptive>
29027             <brief>
29028  Updates an existing sync profile.
29029             </brief>
29030             <version>
29031  2.1
29032             </version>
29033             <privilegelevel>
29034  public
29035             </privilegelevel>
29036             <privilege>
29037  http://tizen.org/privilege/datasync
29038             </privilege>
29039             <Code> // Retrieves and updates a profile
29040  var profile = tizen.datasync.get(profileId);
29041
29042  profile.profileName = &quot;newProfileName&quot;;
29043
29044  tizen.datasync.update(profile);
29045  </Code>
29046         </descriptive>
29047         <Type type="void"/>
29048         <ArgumentList>
29049           <Argument name="profile">
29050             <descriptive>
29051                 <description><p>
29052  The sync profile information to update.
29053                 </p></description>
29054             </descriptive>
29055             <Type name="SyncProfileInfo"/>
29056           </Argument>
29057         </ArgumentList>
29058         <Raises>
29059           <RaiseException name="WebAPIException">
29060             <descriptive>
29061                 <description><p>
29062  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
29063                 </p></description>
29064                 <description><p>
29065  with error type NotSupportedError, if this feature is not supported.
29066                 </p></description>
29067                 <description><p>
29068  with error type InvalidValuesError, if any of the input parameters contain an invalid value.
29069                 </p></description>
29070                 <description><p>
29071  with error type SecurityError, if the application does not have the privilege to call this method.
29072                 </p></description>
29073                 <description><p>
29074  with error type UnknownError, if any other error occurs.
29075                 </p></description>
29076             </descriptive>
29077           </RaiseException>
29078         </Raises>
29079       </Operation>
29080       <Operation name="remove" id="::DataSynchronization::DataSynchronizationManager::remove">
29081         <webidl>    void remove(<ref>SyncProfileId</ref> profileId) raises(<ref>WebAPIException</ref>);</webidl>
29082         <descriptive>
29083             <brief>
29084  Removes an existing sync profile.
29085             </brief>
29086             <version>
29087  2.1
29088             </version>
29089             <privilegelevel>
29090  public
29091             </privilegelevel>
29092             <privilege>
29093  http://tizen.org/privilege/datasync
29094             </privilege>
29095             <Code> // Removes a profile
29096  tizen.datasync.remove(profileId);
29097  </Code>
29098         </descriptive>
29099         <Type type="void"/>
29100         <ArgumentList>
29101           <Argument name="profileId">
29102             <descriptive>
29103                 <description><p>
29104  The sync profile ID to remove.
29105                 </p></description>
29106             </descriptive>
29107             <Type name="SyncProfileId"/>
29108           </Argument>
29109         </ArgumentList>
29110         <Raises>
29111           <RaiseException name="WebAPIException">
29112             <descriptive>
29113                 <description><p>
29114  with error type NotFoundError, if the identifier does not match any saved profile.
29115                 </p></description>
29116                 <description><p>
29117  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
29118                 </p></description>
29119                 <description><p>
29120  with error type NotSupportedError, if this feature is not supported.
29121                 </p></description>
29122                 <description><p>
29123  with error type SecurityError, if the application does not have the privilege to call this method.
29124                 </p></description>
29125                 <description><p>
29126  with error type UnknownError, if any other error occurs.
29127                 </p></description>
29128             </descriptive>
29129           </RaiseException>
29130         </Raises>
29131       </Operation>
29132       <Operation name="getMaxProfilesNum" id="::DataSynchronization::DataSynchronizationManager::getMaxProfilesNum">
29133         <webidl>    long getMaxProfilesNum() raises(<ref>WebAPIException</ref>);</webidl>
29134         <descriptive>
29135             <brief>
29136  Gets the maximum number of supported sync profiles on a platform.
29137 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.
29138             </brief>
29139             <version>
29140  2.1
29141             </version>
29142             <privilegelevel>
29143  public
29144             </privilegelevel>
29145             <privilege>
29146  http://tizen.org/privilege/datasync
29147             </privilege>
29148             <Code> // Gets the maximum number of supported profiles on the platform
29149  var numMaxProfiles = tizen.datasync.getMaxProfilesNum();
29150  </Code>
29151         </descriptive>
29152         <Type type="long">
29153           <descriptive>
29154               <description><p>
29155  long The number of supported profiles on a platform.
29156               </p></description>
29157           </descriptive>
29158         </Type>
29159         <ArgumentList/>
29160         <Raises>
29161           <RaiseException name="WebAPIException">
29162             <descriptive>
29163                 <description><p>
29164  with error type NotSupportedError, if this feature is not supported.
29165                 </p></description>
29166                 <description><p>
29167  with error type SecurityError, if the application does not have the privilege to call this method.
29168                 </p></description>
29169                 <description><p>
29170  with error type UnknownError, if any other error occurs.
29171                 </p></description>
29172             </descriptive>
29173           </RaiseException>
29174         </Raises>
29175       </Operation>
29176       <Operation name="getProfilesNum" id="::DataSynchronization::DataSynchronizationManager::getProfilesNum">
29177         <webidl>    unsigned long getProfilesNum() raises(<ref>WebAPIException</ref>);</webidl>
29178         <descriptive>
29179             <brief>
29180  Gets the current number of sync profiles on a device.
29181             </brief>
29182             <version>
29183  2.1
29184             </version>
29185             <privilegelevel>
29186  public
29187             </privilegelevel>
29188             <privilege>
29189  http://tizen.org/privilege/datasync
29190             </privilege>
29191             <Code> // Gets the present number of profiles on the device
29192  var numProfiles = tizen.datasync.getProfilesNum();
29193  </Code>
29194         </descriptive>
29195         <Type type="unsigned long">
29196           <descriptive>
29197               <description><p>
29198  unsigned long The current number of profiles on a device.
29199               </p></description>
29200           </descriptive>
29201         </Type>
29202         <ArgumentList/>
29203         <Raises>
29204           <RaiseException name="WebAPIException">
29205             <descriptive>
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="get" id="::DataSynchronization::DataSynchronizationManager::get">
29220         <webidl>    <ref>SyncProfileInfo</ref> get(<ref>SyncProfileId</ref> profileId) raises(<ref>WebAPIException</ref>);</webidl>
29221         <descriptive>
29222             <brief>
29223  Gets the <em>SyncProfileInfo</em> object from a given profile ID.
29224             </brief>
29225            <description>
29226             <p>
29227 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>.
29228             </p>
29229            </description>
29230             <version>
29231  2.1
29232             </version>
29233             <privilegelevel>
29234  public
29235             </privilegelevel>
29236             <privilege>
29237  http://tizen.org/privilege/datasync
29238             </privilege>
29239             <Code> // Gets the profile information with the given ID
29240  var profile = tizen.datasync.get(profileId);
29241  </Code>
29242         </descriptive>
29243         <Type name="SyncProfileInfo">
29244           <descriptive>
29245               <description><p>
29246  SyncProfileInfo The profile information of the given ID.
29247               </p></description>
29248           </descriptive>
29249         </Type>
29250         <ArgumentList>
29251           <Argument name="profileId">
29252             <descriptive>
29253                 <description><p>
29254  The ID to use to get the profile information.
29255                 </p></description>
29256             </descriptive>
29257             <Type name="SyncProfileId"/>
29258           </Argument>
29259         </ArgumentList>
29260         <Raises>
29261           <RaiseException name="WebAPIException">
29262             <descriptive>
29263                 <description><p>
29264  with error type NotFoundError, if the identifier does not match any profile saved.
29265                 </p></description>
29266                 <description><p>
29267  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
29268                 </p></description>
29269                 <description><p>
29270  with error type NotSupportedError, if this feature is not supported.
29271                 </p></description>
29272                 <description><p>
29273  with error type SecurityError, if the application does not have the privilege to call this method.
29274                 </p></description>
29275                 <description><p>
29276  with error type UnknownError, if any other error occurs.
29277                 </p></description>
29278             </descriptive>
29279           </RaiseException>
29280         </Raises>
29281       </Operation>
29282       <Operation name="getAll" id="::DataSynchronization::DataSynchronizationManager::getAll">
29283         <webidl>    <ref>SyncProfileInfo</ref>[] getAll() raises(<ref>WebAPIException</ref>);</webidl>
29284         <descriptive>
29285             <brief>
29286  Gets the information of all sync profiles saved in a device.
29287             </brief>
29288            <description>
29289             <p>
29290 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>.
29291             </p>
29292            </description>
29293             <version>
29294  2.1
29295             </version>
29296             <privilegelevel>
29297  public
29298             </privilegelevel>
29299             <privilege>
29300  http://tizen.org/privilege/datasync
29301             </privilege>
29302             <Code> // Gets the all profile information
29303  var profiles = tizen.datasync.getAll();
29304  </Code>
29305         </descriptive>
29306         <Type type="array">
29307           <descriptive>
29308               <description><p>
29309  SyncProfileInfo[] The profile information array.
29310               </p></description>
29311           </descriptive>
29312           <Type name="SyncProfileInfo"/>
29313         </Type>
29314         <ArgumentList/>
29315         <Raises>
29316           <RaiseException name="WebAPIException">
29317             <descriptive>
29318                 <description><p>
29319  with error type NotSupportedError, if this feature is not supported.
29320                 </p></description>
29321                 <description><p>
29322  with error type SecurityError, if the application does not have the privilege to call this method.
29323                 </p></description>
29324                 <description><p>
29325  with error type UnknownError, if any other error occurs.
29326                 </p></description>
29327             </descriptive>
29328           </RaiseException>
29329         </Raises>
29330       </Operation>
29331       <Operation name="startSync" id="::DataSynchronization::DataSynchronizationManager::startSync">
29332         <webidl>    void startSync(<ref>SyncProfileId</ref> profileId, optional <ref>SyncProgressCallback</ref>? progressCallback) raises(<ref>WebAPIException</ref>);</webidl>
29333         <descriptive>
29334             <brief>
29335  Starts a sync operation with a given profile ID.
29336             </brief>
29337            <description>
29338             <p>
29339 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.
29340             </p>
29341            </description>
29342             <version>
29343  2.1
29344             </version>
29345             <privilegelevel>
29346  public
29347             </privilegelevel>
29348             <privilege>
29349  http://tizen.org/privilege/datasync
29350             </privilege>
29351             <Code> var profileId; //profileId obtained from SyncProfileInfo
29352  var syncCallback = {
29353    onprogress: function(profileId, serviceType, isFromServer, totalPerType, syncedPerType) {
29354      console.log('Total: ' + totalPerType + ', synced: ' + syncedPerType + ' for the sync type: ' + serviceType);
29355    },
29356    onfailed: function(profileId, error) {
29357       console.log('Failed with id: ' + profileId + ', error name: ' + error.name);
29358    }
29359  };
29360
29361  // Starts the sync operation with the corresponding callbacks
29362  tizen.datasync.startSync(profileId, syncCallback);
29363  </Code>
29364         </descriptive>
29365         <Type type="void"/>
29366         <ArgumentList>
29367           <Argument name="profileId">
29368             <descriptive>
29369                 <description><p>
29370  The profile ID with which to initiate the sync operation.
29371                 </p></description>
29372             </descriptive>
29373             <Type name="SyncProfileId"/>
29374           </Argument>
29375           <Argument optional="optional" name="progressCallback">
29376             <descriptive>
29377                 <description><p>
29378  The method to invoke when the sync operation progresses or an error occurs.
29379                 </p></description>
29380             </descriptive>
29381             <Type name="SyncProgressCallback" nullable="nullable"/>
29382           </Argument>
29383         </ArgumentList>
29384         <Raises>
29385           <RaiseException name="WebAPIException">
29386             <descriptive>
29387                 <description><p>
29388  with error type NotFoundError, if the identifier does not match any profile saved.
29389                 </p></description>
29390                 <description><p>
29391  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
29392                 </p></description>
29393                 <description><p>
29394  with error type NotSupportedError, if this feature is not supported.
29395                 </p></description>
29396                 <description><p>
29397  with error type InvalidValuesError, if any of the input parameters contain an invalid value.
29398                 </p></description>
29399                 <description><p>
29400  with error type SecurityError, if the application does not have the privilege to call this method.
29401                 </p></description>
29402                 <description><p>
29403  with error type UnknownError, if any other error occurs.
29404                 </p></description>
29405             </descriptive>
29406           </RaiseException>
29407         </Raises>
29408       </Operation>
29409       <Operation name="stopSync" id="::DataSynchronization::DataSynchronizationManager::stopSync">
29410         <webidl>    void stopSync(<ref>SyncProfileId</ref> profileId) raises(<ref>WebAPIException</ref>);</webidl>
29411         <descriptive>
29412             <brief>
29413  Stops an ongoing sync operation that is specified by the <em>profileId</em> parameter.
29414             </brief>
29415             <version>
29416  2.1
29417             </version>
29418             <privilegelevel>
29419  public
29420             </privilegelevel>
29421             <privilege>
29422  http://tizen.org/privilege/datasync
29423             </privilege>
29424             <Code> var profileId; //profileId obtained from SyncProfileInfo
29425  // Stops the ongoing sync operation
29426  tizen.datasync.stopSync(profileId);
29427  </Code>
29428         </descriptive>
29429         <Type type="void"/>
29430         <ArgumentList>
29431           <Argument name="profileId">
29432             <descriptive>
29433                 <description><p>
29434  The ID of the ongoing sync operation to stop.
29435                 </p></description>
29436             </descriptive>
29437             <Type name="SyncProfileId"/>
29438           </Argument>
29439         </ArgumentList>
29440         <Raises>
29441           <RaiseException name="WebAPIException">
29442             <descriptive>
29443                 <description><p>
29444  with error type NotFoundError, if the identifier does not match any profile saved.
29445                 </p></description>
29446                 <description><p>
29447  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
29448                 </p></description>
29449                 <description><p>
29450  with error type NotSupportedError, if this feature is not supported.
29451                 </p></description>
29452                 <description><p>
29453  with error type SecurityError, if the application does not have the privilege to call this method.
29454                 </p></description>
29455                 <description><p>
29456  with error type UnknownError, if any other error occurs.
29457                 </p></description>
29458             </descriptive>
29459           </RaiseException>
29460         </Raises>
29461       </Operation>
29462       <Operation name="getLastSyncStatistics" id="::DataSynchronization::DataSynchronizationManager::getLastSyncStatistics">
29463         <webidl>    <ref>SyncStatistics</ref>[] getLastSyncStatistics(<ref>SyncProfileId</ref> profileId) raises(<ref>WebAPIException</ref>);</webidl>
29464         <descriptive>
29465             <brief>
29466  Gets the sync statistics of a given profile ID.
29467             </brief>
29468             <version>
29469  2.1
29470             </version>
29471             <privilegelevel>
29472  public
29473             </privilegelevel>
29474             <privilege>
29475  http://tizen.org/privilege/datasync
29476             </privilege>
29477             <Code> var profileId; //profileId obtained from SyncProfileInfo
29478  // Gets the sync statistics information with the given ID
29479  var statistics = tizen.datasync.getLastSyncStatistics(profileId);
29480  </Code>
29481         </descriptive>
29482         <Type type="array">
29483           <descriptive>
29484               <description><p>
29485  SyncStatictics[] The sync statistics information of a given ID.
29486               </p></description>
29487           </descriptive>
29488           <Type name="SyncStatistics"/>
29489         </Type>
29490         <ArgumentList>
29491           <Argument name="profileId">
29492             <descriptive>
29493                 <description><p>
29494  The ID to use to get the sync statistics.
29495                 </p></description>
29496             </descriptive>
29497             <Type name="SyncProfileId"/>
29498           </Argument>
29499         </ArgumentList>
29500         <Raises>
29501           <RaiseException name="WebAPIException">
29502             <descriptive>
29503                 <description><p>
29504  with error type NotFoundError, if the identifier does not match any profile saved.
29505                 </p></description>
29506                 <description><p>
29507  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
29508                 </p></description>
29509                 <description><p>
29510  with error type NotSupportedError, if this feature is not supported.
29511                 </p></description>
29512                 <description><p>
29513  with error type SecurityError, if the application does not have the privilege to call this method.
29514                 </p></description>
29515                 <description><p>
29516  with error type UnknownError, if any other error occurs.
29517                 </p></description>
29518             </descriptive>
29519           </RaiseException>
29520         </Raises>
29521       </Operation>
29522     </Interface>
29523     <Interface name="SyncProgressCallback" id="::DataSynchronization::SyncProgressCallback">
29524       <webidl>  [Callback, NoInterfaceObject] interface SyncProgressCallback {
29525     void onprogress(<ref>SyncProfileId</ref> profileId, <ref>SyncServiceType</ref> serviceType, boolean isFromServer, unsigned long totalPerService, unsigned long syncedPerService);
29526
29527     void oncompleted(<ref>SyncProfileId</ref> profileId);
29528
29529     void onstopped(<ref>SyncProfileId</ref> profileId);
29530
29531     void onfailed(<ref>SyncProfileId</ref> profileId, <ref>WebAPIError</ref> error);
29532   };</webidl>
29533       <descriptive>
29534           <brief>
29535  This interface defines progress notification callbacks for the ongoing sync operation.
29536           </brief>
29537           <version>
29538  2.1
29539           </version>
29540       </descriptive>
29541       <ExtendedAttributeList>
29542         <ExtendedAttribute name="Callback">
29543           <webidl>Callback</webidl>
29544         </ExtendedAttribute>
29545         <ExtendedAttribute name="NoInterfaceObject">
29546           <webidl> NoInterfaceObject</webidl>
29547         </ExtendedAttribute>
29548       </ExtendedAttributeList>
29549       <Operation name="onprogress" id="::DataSynchronization::SyncProgressCallback::onprogress">
29550         <webidl>    void onprogress(<ref>SyncProfileId</ref> profileId, <ref>SyncServiceType</ref> serviceType, boolean isFromServer, unsigned long totalPerService, unsigned long syncedPerService);</webidl>
29551         <descriptive>
29552             <brief>
29553  Called when a synchronization operation is started and progress is made.
29554             </brief>
29555            <description>
29556             <p>
29557 The frequency of this callback invocation is dependent on the platform implementation.
29558 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.
29559             </p>
29560            </description>
29561             <version>
29562  2.1
29563             </version>
29564         </descriptive>
29565         <Type type="void"/>
29566         <ArgumentList>
29567           <Argument name="profileId">
29568             <descriptive>
29569                 <description><p>
29570  The ID of the corresponding sync operation.
29571                 </p></description>
29572             </descriptive>
29573             <Type name="SyncProfileId"/>
29574           </Argument>
29575           <Argument name="serviceType">
29576             <descriptive>
29577                 <description><p>
29578  The sync service category type.
29579                 </p></description>
29580             </descriptive>
29581             <Type name="SyncServiceType"/>
29582           </Argument>
29583           <Argument name="isFromServer">
29584             <descriptive>
29585                 <description><p>
29586  The direction of the operation.<br/> If the direction of operation is from the server to the client, then value is<var> true</var>.
29587                 </p></description>
29588             </descriptive>
29589             <Type type="boolean"/>
29590           </Argument>
29591           <Argument name="totalPerService">
29592             <descriptive>
29593                 <description><p>
29594  The total number of records to synchronize for the current sync service type aggregating all operations.
29595                 </p></description>
29596             </descriptive>
29597             <Type type="unsigned long"/>
29598           </Argument>
29599           <Argument name="syncedPerService">
29600             <descriptive>
29601                 <description><p>
29602  The number of synchronized records for the current sync service type aggregating all operations.
29603                 </p></description>
29604             </descriptive>
29605             <Type type="unsigned long"/>
29606           </Argument>
29607         </ArgumentList>
29608       </Operation>
29609       <Operation name="oncompleted" id="::DataSynchronization::SyncProgressCallback::oncompleted">
29610         <webidl>    void oncompleted(<ref>SyncProfileId</ref> profileId);</webidl>
29611         <descriptive>
29612             <brief>
29613  Called when the sync operation has completed.
29614             </brief>
29615             <version>
29616  2.1
29617             </version>
29618         </descriptive>
29619         <Type type="void"/>
29620         <ArgumentList>
29621           <Argument name="profileId">
29622             <descriptive>
29623                 <description><p>
29624  The ID of the corresponding sync operation.
29625                 </p></description>
29626             </descriptive>
29627             <Type name="SyncProfileId"/>
29628           </Argument>
29629         </ArgumentList>
29630       </Operation>
29631       <Operation name="onstopped" id="::DataSynchronization::SyncProgressCallback::onstopped">
29632         <webidl>    void onstopped(<ref>SyncProfileId</ref> profileId);</webidl>
29633         <descriptive>
29634             <brief>
29635  Called when the sync operation is stopped by user.
29636             </brief>
29637             <version>
29638  2.1
29639             </version>
29640         </descriptive>
29641         <Type type="void"/>
29642         <ArgumentList>
29643           <Argument name="profileId">
29644             <descriptive>
29645                 <description><p>
29646  The ID of the corresponding sync operation.
29647                 </p></description>
29648             </descriptive>
29649             <Type name="SyncProfileId"/>
29650           </Argument>
29651         </ArgumentList>
29652       </Operation>
29653       <Operation name="onfailed" id="::DataSynchronization::SyncProgressCallback::onfailed">
29654         <webidl>    void onfailed(<ref>SyncProfileId</ref> profileId, <ref>WebAPIError</ref> error);</webidl>
29655         <descriptive>
29656             <brief>
29657  Called when the sync operation fails.
29658             </brief>
29659             <version>
29660  2.1
29661             </version>
29662         </descriptive>
29663         <Type type="void"/>
29664         <ArgumentList>
29665           <Argument name="profileId">
29666             <descriptive>
29667                 <description><p>
29668  The ID of the corresponding sync operation.
29669                 </p></description>
29670             </descriptive>
29671             <Type name="SyncProfileId"/>
29672           </Argument>
29673           <Argument name="error">
29674             <descriptive>
29675                 <description><p>
29676  The reason for the sync failure.
29677                 </p></description>
29678             </descriptive>
29679             <Type name="WebAPIError"/>
29680           </Argument>
29681         </ArgumentList>
29682       </Operation>
29683     </Interface>
29684   </Module>
29685   <Module name="Download" id="::Download">
29686     <webidl>module Download {
29687     typedef object DownloadHTTPHeaderFields;
29688
29689     enum DownloadState { &quot;QUEUED&quot;, &quot;DOWNLOADING&quot;, &quot;PAUSED&quot;, &quot;CANCELED&quot;, &quot;COMPLETED&quot;, &quot;FAILED&quot; };
29690
29691     enum DownloadNetworkType { &quot;CELLULAR&quot;, &quot;WIFI&quot;, &quot;ALL&quot; };
29692
29693     [NoInterfaceObject] interface DownloadManagerObject {
29694         readonly attribute <ref>DownloadManager</ref> download;
29695     };
29696     <ref>Tizen</ref> implements <ref>DownloadManagerObject</ref>;
29697
29698     [Constructor(DOMString url, optional DOMString? destination, optional DOMString? fileName, optional <ref>DownloadNetworkType</ref>? networkType, optional <ref>DownloadHTTPHeaderFields</ref>? httpHeader)]
29699     interface DownloadRequest {
29700         attribute DOMString url;
29701
29702         attribute DOMString? destination;
29703
29704         attribute DOMString? fileName;
29705
29706         attribute <ref>DownloadNetworkType</ref>? networkType;
29707
29708         attribute <ref>DownloadHTTPHeaderFields</ref>? httpHeader;
29709     };
29710
29711    [NoInterfaceObject] interface DownloadManager {
29712        long start(<ref>DownloadRequest</ref> downloadRequest,
29713                     optional <ref>DownloadCallback</ref>? downloadCallback) raises(<ref>WebAPIException</ref>);
29714
29715        void cancel(long downloadId) raises(<ref>WebAPIException</ref>);
29716
29717        void pause(long downloadId) raises(<ref>WebAPIException</ref>);
29718
29719        void resume(long downloadId) raises(<ref>WebAPIException</ref>);
29720
29721        <ref>DownloadState</ref> getState(long downloadId) raises(<ref>WebAPIException</ref>);
29722
29723        <ref>DownloadRequest</ref> getDownloadRequest(long downloadId) raises(<ref>WebAPIException</ref>);
29724
29725        DOMString getMIMEType(long downloadId) raises(<ref>WebAPIException</ref>);
29726
29727        void setListener(long downloadId, <ref>DownloadCallback</ref> downloadCallback) raises(<ref>WebAPIException</ref>);
29728    };
29729
29730    [Callback, NoInterfaceObject] interface DownloadCallback {
29731        void onprogress(long downloadId, unsigned long long receivedSize, unsigned long long totalSize);
29732
29733        void onpaused(long downloadId);
29734
29735        void oncanceled(long downloadId);
29736
29737        void oncompleted(long downloadId, DOMString fullPath);
29738
29739        void onfailed(long downloadId, <ref>WebAPIError</ref> error);
29740    };
29741 };</webidl>
29742     <descriptive>
29743         <brief>
29744  This API provides methods to asynchronously download the contents of a URL to a storage.
29745         </brief>
29746        <description>
29747         <p>
29748 For more information on the Download features, see <a href="../../org.tizen.web.appprogramming/html/guide/content_guide/download.htm">Download Guide</a>.
29749         </p>
29750        </description>
29751         <version>
29752  2.0
29753         </version>
29754         <def-api-feature identifier="http://tizen.org/feature/network.wifi">
29755           <descriptive>
29756            <description>
29757             <p>
29758 To guarantee this application running on a device with Wi-Fi feature, define below in the config file: 
29759             </p>
29760            </description>
29761           </descriptive>
29762         </def-api-feature>
29763         <def-api-feature identifier="http://tizen.org/feature/network.telephony">
29764           <descriptive>
29765            <description>
29766             <p>
29767 To guarantee this application running on a device with Cellular feature, define below in the config file: 
29768             </p>
29769            </description>
29770           </descriptive>
29771         </def-api-feature>
29772     </descriptive>
29773     <Typedef name="DownloadHTTPHeaderFields" id="::Download::DownloadHTTPHeaderFields">
29774       <webidl>    typedef object DownloadHTTPHeaderFields;</webidl>
29775       <descriptive>
29776           <brief>
29777  A set of HTTP header fields.
29778           </brief>
29779          <description>
29780           <p>
29781 The key / value type of each HTTP header field should be DOMString.
29782           </p>
29783          </description>
29784           <version>
29785  2.1
29786           </version>
29787       </descriptive>
29788       <Type type="object"/>
29789     </Typedef>
29790     <Enum name="DownloadState" id="::Download::DownloadState">
29791       <webidl>    enum DownloadState { &quot;QUEUED&quot;, &quot;DOWNLOADING&quot;, &quot;PAUSED&quot;, &quot;CANCELED&quot;, &quot;COMPLETED&quot;, &quot;FAILED&quot; };</webidl>
29792       <descriptive>
29793           <brief>
29794  An enumerator to indicate the state of a download operation.
29795           </brief>
29796          <description>
29797           <p>
29798 The following values are supported:
29799           </p>
29800           <ul>
29801             <li>
29802 QUEUED - Indicates that the download operation is listed in a queue.            </li>
29803             <li>
29804 DOWNLOADING - Indicates that the download operation is in progress.            </li>
29805             <li>
29806 PAUSED - Indicates that the download operation is in a paused state by user request.            </li>
29807             <li>
29808 CANCELED - Indicates that the download operation is canceled by user request.            </li>
29809             <li>
29810 COMPLETED - Indicates that the download operation is in a completed state.            </li>
29811             <li>
29812 FAILED - Indicates that the download operation has failed due to some reasons.            </li>
29813           </ul>
29814          </description>
29815           <version>
29816  2.0
29817           </version>
29818       </descriptive>
29819       <EnumValue stringvalue="QUEUED">
29820         <webidl> &quot;QUEUED</webidl>
29821       </EnumValue>
29822       <EnumValue stringvalue="DOWNLOADING">
29823         <webidl> &quot;DOWNLOADING</webidl>
29824       </EnumValue>
29825       <EnumValue stringvalue="PAUSED">
29826         <webidl> &quot;PAUSED</webidl>
29827       </EnumValue>
29828       <EnumValue stringvalue="CANCELED">
29829         <webidl> &quot;CANCELED</webidl>
29830       </EnumValue>
29831       <EnumValue stringvalue="COMPLETED">
29832         <webidl> &quot;COMPLETED</webidl>
29833       </EnumValue>
29834       <EnumValue stringvalue="FAILED">
29835         <webidl> &quot;FAILED</webidl>
29836       </EnumValue>
29837     </Enum>
29838     <Enum name="DownloadNetworkType" id="::Download::DownloadNetworkType">
29839       <webidl>    enum DownloadNetworkType { &quot;CELLULAR&quot;, &quot;WIFI&quot;, &quot;ALL&quot; };</webidl>
29840       <descriptive>
29841           <brief>
29842  An enumerator to indicate the network type.
29843           </brief>
29844          <description>
29845           <p>
29846 The following values are supported:
29847           </p>
29848           <ul>
29849             <li>
29850 CELLULAR - Indicates that the download operation is allowed in the cellular network only.            </li>
29851             <li>
29852 WIFI - Indicates that the download operation is allowed in the Wi-Fi network only.            </li>
29853             <li>
29854 ALL - Indicates that the download operation is allowed in all network types.            </li>
29855           </ul>
29856          </description>
29857           <version>
29858  2.1
29859           </version>
29860       </descriptive>
29861       <EnumValue stringvalue="CELLULAR">
29862         <webidl> &quot;CELLULAR</webidl>
29863       </EnumValue>
29864       <EnumValue stringvalue="WIFI">
29865         <webidl> &quot;WIFI</webidl>
29866       </EnumValue>
29867       <EnumValue stringvalue="ALL">
29868         <webidl> &quot;ALL</webidl>
29869       </EnumValue>
29870     </Enum>
29871     <Interface name="DownloadManagerObject" id="::Download::DownloadManagerObject">
29872       <webidl>    [NoInterfaceObject] interface DownloadManagerObject {
29873         readonly attribute <ref>DownloadManager</ref> download;
29874     };</webidl>
29875       <descriptive>
29876           <brief>
29877  This interface defines the default download manager that is instantiated by the <em>Tizen </em>object.
29878 There will be a <em>tizen.download </em>object that allows access to the functionality of the Download API.
29879           </brief>
29880           <version>
29881  2.0
29882           </version>
29883       </descriptive>
29884       <ExtendedAttributeList>
29885         <ExtendedAttribute name="NoInterfaceObject">
29886           <webidl>NoInterfaceObject</webidl>
29887         </ExtendedAttribute>
29888       </ExtendedAttributeList>
29889       <Attribute readonly="readonly" name="download" id="::Download::DownloadManagerObject::download">
29890         <webidl>        readonly attribute <ref>DownloadManager</ref> download;</webidl>
29891         <Type name="DownloadManager"/>
29892       </Attribute>
29893     </Interface>
29894     <Implements name1="Tizen" name2="DownloadManagerObject">
29895       <webidl>    <ref>Tizen</ref> implements <ref>DownloadManagerObject</ref>;</webidl>
29896     </Implements>
29897     <Interface name="DownloadRequest" id="::Download::DownloadRequest">
29898       <webidl>    [Constructor(DOMString url, optional DOMString? destination, optional DOMString? fileName, optional <ref>DownloadNetworkType</ref>? networkType, optional <ref>DownloadHTTPHeaderFields</ref>? httpHeader)]
29899     interface DownloadRequest {
29900         attribute DOMString url;
29901
29902         attribute DOMString? destination;
29903
29904         attribute DOMString? fileName;
29905
29906         attribute <ref>DownloadNetworkType</ref>? networkType;
29907
29908         attribute <ref>DownloadHTTPHeaderFields</ref>? httpHeader;
29909     };</webidl>
29910       <descriptive>
29911           <brief>
29912  This interface defines the download request object.
29913           </brief>
29914           <version>
29915  2.0
29916           </version>
29917       </descriptive>
29918       <ExtendedAttributeList>
29919         <ExtendedAttribute name="Constructor">
29920           <webidl>Constructor(DOMString url, optional DOMString? destination, optional DOMString? fileName, optional <ref>DownloadNetworkType</ref>? networkType, optional <ref>DownloadHTTPHeaderFields</ref>? httpHeader)</webidl>
29921           <ArgumentList>
29922             <Argument name="url">
29923               <Type type="DOMString"/>
29924             </Argument>
29925             <Argument optional="optional" name="destination">
29926               <Type type="DOMString" nullable="nullable"/>
29927             </Argument>
29928             <Argument optional="optional" name="fileName">
29929               <Type type="DOMString" nullable="nullable"/>
29930             </Argument>
29931             <Argument optional="optional" name="networkType">
29932               <Type name="DownloadNetworkType" nullable="nullable"/>
29933             </Argument>
29934             <Argument optional="optional" name="httpHeader">
29935               <Type name="DownloadHTTPHeaderFields" nullable="nullable"/>
29936             </Argument>
29937           </ArgumentList>
29938         </ExtendedAttribute>
29939       </ExtendedAttributeList>
29940       <Attribute name="url" id="::Download::DownloadRequest::url">
29941         <webidl>        attribute DOMString url;</webidl>
29942         <descriptive>
29943             <brief>
29944  An attribute to store the URL of the object to download.
29945             </brief>
29946             <version>
29947  2.0
29948             </version>
29949         </descriptive>
29950         <Type type="DOMString"/>
29951       </Attribute>
29952       <Attribute name="destination" id="::Download::DownloadRequest::destination">
29953         <webidl>        attribute DOMString? destination;</webidl>
29954         <descriptive>
29955             <brief>
29956  An attribute to store the folder path of the destination folder to which a requested file object will be downloaded.
29957             </brief>
29958            <description>
29959             <p>
29960 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>.
29961             </p>
29962             <p>
29963 The default value is an empty string.
29964             </p>
29965            </description>
29966             <version>
29967  2.0
29968             </version>
29969         </descriptive>
29970         <Type type="DOMString" nullable="nullable"/>
29971       </Attribute>
29972       <Attribute name="fileName" id="::Download::DownloadRequest::fileName">
29973         <webidl>        attribute DOMString? fileName;</webidl>
29974         <descriptive>
29975             <brief>
29976  An attribute to store the file name for the specified URL.
29977             </brief>
29978            <description>
29979             <p>
29980 If the file name is not given or an empty string, the original file name from URL is used.
29981             </p>
29982             <p>
29983 The default value is an empty string.
29984             </p>
29985            </description>
29986             <version>
29987  2.0
29988             </version>
29989         </descriptive>
29990         <Type type="DOMString" nullable="nullable"/>
29991       </Attribute>
29992       <Attribute name="networkType" id="::Download::DownloadRequest::networkType">
29993         <webidl>        attribute <ref>DownloadNetworkType</ref>? networkType;</webidl>
29994         <descriptive>
29995             <brief>
29996  An attribute to store the allowed network type.
29997             </brief>
29998            <description>
29999             <p>
30000 If the network type is not given, all network type are allowed.
30001             </p>
30002             <p>
30003 The default value is &quot;ALL&quot;.
30004             </p>
30005            </description>
30006             <version>
30007  2.1
30008             </version>
30009         </descriptive>
30010         <Type name="DownloadNetworkType" nullable="nullable"/>
30011       </Attribute>
30012       <Attribute name="httpHeader" id="::Download::DownloadRequest::httpHeader">
30013         <webidl>        attribute <ref>DownloadHTTPHeaderFields</ref>? httpHeader;</webidl>
30014         <descriptive>
30015             <brief>
30016  An attribute to store extra HTTP header fields.
30017             </brief>
30018            <description>
30019             <p>
30020 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>
30021             <p>
30022 The default value is an empty object.
30023             </p>
30024            </description>
30025             <Code> var req = new tizen.DownloadRequest(&quot;http://download.tizen.org/tools/README.txt&quot;);
30026  req.httpHeader[&quot;Pragma&quot;] = &quot;no-cache&quot;;
30027  req.httpHeader[&quot;Cookie&quot;] = &quot;version=1; Skin=new&quot;;
30028  req.httpHeader[&quot;X-Agent&quot;] = &quot;Tizen Sample App&quot;;
30029  </Code>
30030             <version>
30031  2.1
30032             </version>
30033         </descriptive>
30034         <Type name="DownloadHTTPHeaderFields" nullable="nullable"/>
30035       </Attribute>
30036     </Interface>
30037     <Interface name="DownloadManager" id="::Download::DownloadManager">
30038       <webidl>   [NoInterfaceObject] interface DownloadManager {
30039        long start(<ref>DownloadRequest</ref> downloadRequest,
30040                     optional <ref>DownloadCallback</ref>? downloadCallback) raises(<ref>WebAPIException</ref>);
30041
30042        void cancel(long downloadId) raises(<ref>WebAPIException</ref>);
30043
30044        void pause(long downloadId) raises(<ref>WebAPIException</ref>);
30045
30046        void resume(long downloadId) raises(<ref>WebAPIException</ref>);
30047
30048        <ref>DownloadState</ref> getState(long downloadId) raises(<ref>WebAPIException</ref>);
30049
30050        <ref>DownloadRequest</ref> getDownloadRequest(long downloadId) raises(<ref>WebAPIException</ref>);
30051
30052        DOMString getMIMEType(long downloadId) raises(<ref>WebAPIException</ref>);
30053
30054        void setListener(long downloadId, <ref>DownloadCallback</ref> downloadCallback) raises(<ref>WebAPIException</ref>);
30055    };</webidl>
30056       <descriptive>
30057           <brief>
30058  This interface handles requests for downloading. Each step of download operation will be informed through callbacks.
30059           </brief>
30060           <version>
30061  2.0
30062           </version>
30063       </descriptive>
30064       <ExtendedAttributeList>
30065         <ExtendedAttribute name="NoInterfaceObject">
30066           <webidl>NoInterfaceObject</webidl>
30067         </ExtendedAttribute>
30068       </ExtendedAttributeList>
30069       <Operation name="start" id="::Download::DownloadManager::start">
30070         <webidl>       long start(<ref>DownloadRequest</ref> downloadRequest,
30071                     optional <ref>DownloadCallback</ref>? downloadCallback) raises(<ref>WebAPIException</ref>);</webidl>
30072         <descriptive>
30073             <brief>
30074  Starts a download operation with the specified URL information.
30075             </brief>
30076             <version>
30077  2.0
30078             </version>
30079             <privilegelevel>
30080  public
30081             </privilegelevel>
30082             <privilege>
30083  http://tizen.org/privilege/download
30084             </privilege>
30085             <Code> var listener = {
30086    onprogress: function(id, receivedSize, totalSize) {
30087      console.log('Received with id: ' + id + ', ' + receivedSize + '/' + totalSize);
30088    },
30089    onpaused: function(id) {
30090      console.log('Paused with id: ' + id);
30091    },
30092    oncanceled: function(id) {
30093      console.log('Canceled with id: ' + id);
30094    },
30095    oncompleted: function(id, fullPath) {
30096      console.log('Completed with id: ' + id + ', full path: ' + fullPath);
30097    },
30098    onfailed: function(id, error) {
30099      console.log('Failed with id: ' + id + ', error name: ' + error.name);
30100    }
30101  };
30102
30103  // Starts downloading of the file from the Web with the corresponding callbacks.
30104  var downloadRequest = new tizen.DownloadRequest(&quot;http://download.tizen.org/tools/README.txt&quot;, &quot;documents&quot;);
30105  downloadId = tizen.download.start(downloadRequest, listener);
30106  </Code>
30107         </descriptive>
30108         <Type type="long">
30109           <descriptive>
30110               <description><p>
30111  long An identifier for each download operation.
30112               </p></description>
30113           </descriptive>
30114         </Type>
30115         <ArgumentList>
30116           <Argument name="downloadRequest">
30117             <descriptive>
30118                 <description><p>
30119  The URL and destination information of the object to download.
30120                 </p></description>
30121             </descriptive>
30122             <Type name="DownloadRequest"/>
30123           </Argument>
30124           <Argument optional="optional" name="downloadCallback">
30125             <descriptive>
30126                 <description><p>
30127  The method to invoke when the download state changes or an error occurs.
30128                 </p></description>
30129             </descriptive>
30130             <Type name="DownloadCallback" nullable="nullable"/>
30131           </Argument>
30132         </ArgumentList>
30133         <Raises>
30134           <RaiseException name="WebAPIException">
30135             <descriptive>
30136                 <description><p>
30137  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
30138                 </p></description>
30139                 <description><p>
30140  with error type NotSupportedError, if this feature is not supported.
30141                 </p></description>
30142                 <description><p>
30143  with error type InvalidValuesError, if any of the input parameters contain an invalid value.
30144                 </p></description>
30145                 <description><p>
30146  with error type SecurityError, if the application does not have the privilege to call this method.
30147                 </p></description>
30148                 <description><p>
30149  with error type UnknownError if any other error occurs.
30150                 </p></description>
30151             </descriptive>
30152           </RaiseException>
30153         </Raises>
30154       </Operation>
30155       <Operation name="cancel" id="::Download::DownloadManager::cancel">
30156         <webidl>       void cancel(long downloadId) raises(<ref>WebAPIException</ref>);</webidl>
30157         <descriptive>
30158             <brief>
30159  Cancels an ongoing download operation that is specified by the <em>downloadId</em> parameter.
30160             </brief>
30161             <version>
30162  2.0
30163             </version>
30164             <Code> // Cancels the ongoing download operation with the specified id.
30165  tizen.download.cancel(downloadId);
30166  </Code>
30167         </descriptive>
30168         <Type type="void"/>
30169         <ArgumentList>
30170           <Argument name="downloadId">
30171             <descriptive>
30172                 <description><p>
30173  The ID of the ongoing download operation to stop.
30174                 </p></description>
30175             </descriptive>
30176             <Type type="long"/>
30177           </Argument>
30178         </ArgumentList>
30179         <Raises>
30180           <RaiseException name="WebAPIException">
30181             <descriptive>
30182                 <description><p>
30183  with error type NotFoundError, if the identifier does not match any download operation in progress.
30184                 </p></description>
30185                 <description><p>
30186  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
30187                 </p></description>
30188                 <description><p>
30189  with error type NotSupportedError, if this feature is not supported.
30190                 </p></description>
30191                 <description><p>
30192  with error type InvalidValuesError, if any of the input parameters contain an invalid value.
30193                 </p></description>
30194                 <description><p>
30195  with error type UnknownError, if any other error occurs.
30196                 </p></description>
30197             </descriptive>
30198           </RaiseException>
30199         </Raises>
30200       </Operation>
30201       <Operation name="pause" id="::Download::DownloadManager::pause">
30202         <webidl>       void pause(long downloadId) raises(<ref>WebAPIException</ref>);</webidl>
30203         <descriptive>
30204             <brief>
30205  Pauses an ongoing download operation that is specified by the <em>downloadId</em> parameter.
30206 The paused download operation can be resumed later by the <em>resume()</em> method.
30207             </brief>
30208             <version>
30209  2.0
30210             </version>
30211             <Code> // Pauses the ongoing download operation with the specified id.
30212  tizen.download.pause(downloadId);
30213  </Code>
30214         </descriptive>
30215         <Type type="void"/>
30216         <ArgumentList>
30217           <Argument name="downloadId">
30218             <descriptive>
30219                 <description><p>
30220  The ID of the ongoing download operation to pause.
30221                 </p></description>
30222             </descriptive>
30223             <Type type="long"/>
30224           </Argument>
30225         </ArgumentList>
30226         <Raises>
30227           <RaiseException name="WebAPIException">
30228             <descriptive>
30229                 <description><p>
30230  with error type NotFoundError, if the identifier does not match any download operation in progress.
30231                 </p></description>
30232                 <description><p>
30233  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
30234                 </p></description>
30235                 <description><p>
30236  with error type NotSupportedError, if this feature is not supported.
30237                 </p></description>
30238                 <description><p>
30239  with error type InvalidValuesError, if any of the input parameters contain an invalid value.
30240                 </p></description>
30241                 <description><p>
30242  with error type UnknownError, if any other error occurs.
30243                 </p></description>
30244             </descriptive>
30245           </RaiseException>
30246         </Raises>
30247       </Operation>
30248       <Operation name="resume" id="::Download::DownloadManager::resume">
30249         <webidl>       void resume(long downloadId) raises(<ref>WebAPIException</ref>);</webidl>
30250         <descriptive>
30251             <brief>
30252  Resumes a paused download operation that is specified by the <em>downloadId</em> parameter.
30253             </brief>
30254             <version>
30255  2.0
30256             </version>
30257             <Code> // Resumes the paused download operation with the specified id.
30258  tizen.download.resume(downloadId);
30259  </Code>
30260         </descriptive>
30261         <Type type="void"/>
30262         <ArgumentList>
30263           <Argument name="downloadId">
30264             <descriptive>
30265                 <description><p>
30266  The ID of the paused download operation to be resume.
30267                 </p></description>
30268             </descriptive>
30269             <Type type="long"/>
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 any download operation in progress.
30277                 </p></description>
30278                 <description><p>
30279  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
30280                 </p></description>
30281                 <description><p>
30282  with error type NotSupportedError, if this feature is not supported.
30283                 </p></description>
30284                 <description><p>
30285  with error type InvalidValuesError, if any of the input parameters contain an invalid value.
30286                 </p></description>
30287                 <description><p>
30288  with error type UnknownError, if any other error occurs.
30289                 </p></description>
30290             </descriptive>
30291           </RaiseException>
30292         </Raises>
30293       </Operation>
30294       <Operation name="getState" id="::Download::DownloadManager::getState">
30295         <webidl>       <ref>DownloadState</ref> getState(long downloadId) raises(<ref>WebAPIException</ref>);</webidl>
30296         <descriptive>
30297             <brief>
30298  Gets the download state of an operation synchronously with the specified ID.
30299             </brief>
30300             <version>
30301  2.0
30302             </version>
30303             <Code> // Gets the state of the download operation with the given id.
30304  var state = tizen.download.getState(downloadId);
30305  </Code>
30306         </descriptive>
30307         <Type name="DownloadState">
30308           <descriptive>
30309               <description><p>
30310  DownloadState The current download state of the specified ID.
30311               </p></description>
30312           </descriptive>
30313         </Type>
30314         <ArgumentList>
30315           <Argument name="downloadId">
30316             <descriptive>
30317                 <description><p>
30318  The ID to get the current state of download operation.
30319                 </p></description>
30320             </descriptive>
30321             <Type type="long"/>
30322           </Argument>
30323         </ArgumentList>
30324         <Raises>
30325           <RaiseException name="WebAPIException">
30326             <descriptive>
30327                 <description><p>
30328  with error type NotFoundError, if the identifier does not match any download operation in progress.
30329                 </p></description>
30330                 <description><p>
30331  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
30332                 </p></description>
30333                 <description><p>
30334  with error type NotSupportedError, if this feature is not supported.
30335                 </p></description>
30336                 <description><p>
30337  with error type InvalidValuesError, if any of the input parameters contain an invalid value.
30338                 </p></description>
30339                 <description><p>
30340  with error type UnknownError, if any other error occurs.
30341                 </p></description>
30342             </descriptive>
30343           </RaiseException>
30344         </Raises>
30345       </Operation>
30346       <Operation name="getDownloadRequest" id="::Download::DownloadManager::getDownloadRequest">
30347         <webidl>       <ref>DownloadRequest</ref> getDownloadRequest(long downloadId) raises(<ref>WebAPIException</ref>);</webidl>
30348         <descriptive>
30349             <brief>
30350  Gets the DownloadRequest object from a given id.
30351             </brief>
30352             <version>
30353  2.0
30354             </version>
30355             <Code> // Gets the download request information with the given id.
30356  var downloadRequest = tizen.download.getDownloadRequest(downloadId);
30357  </Code>
30358         </descriptive>
30359         <Type name="DownloadRequest">
30360           <descriptive>
30361               <description><p>
30362  DownloadRequest The download request information of the given id.
30363               </p></description>
30364           </descriptive>
30365         </Type>
30366         <ArgumentList>
30367           <Argument name="downloadId">
30368             <descriptive>
30369                 <description><p>
30370  The ID to get the download request information.
30371                 </p></description>
30372             </descriptive>
30373             <Type type="long"/>
30374           </Argument>
30375         </ArgumentList>
30376         <Raises>
30377           <RaiseException name="WebAPIException">
30378             <descriptive>
30379                 <description><p>
30380  with error type NotFoundError, if the identifier does not match
30381 any download operation in progress.
30382                 </p></description>
30383                 <description><p>
30384  with error type TypeMismatchError, if the input parameter is not
30385 compatible with the expected type.
30386                 </p></description>
30387                 <description><p>
30388  with error type NotSupportedError, if this feature is not supported.
30389                 </p></description>
30390                 <description><p>
30391  with error type InvalidValuesError, if any of the input
30392 parameters contain an invalid value.
30393                 </p></description>
30394                 <description><p>
30395  with error type UnknownError in any other error case.
30396                 </p></description>
30397             </descriptive>
30398           </RaiseException>
30399         </Raises>
30400       </Operation>
30401       <Operation name="getMIMEType" id="::Download::DownloadManager::getMIMEType">
30402         <webidl>       DOMString getMIMEType(long downloadId) raises(<ref>WebAPIException</ref>);</webidl>
30403         <descriptive>
30404             <brief>
30405  Gets the MIME type of the downloaded file.
30406             </brief>
30407             <remark>
30408  This function will return a valid MIME type when the download operation has been started
30409 and successfully retrieved the file header.
30410             </remark>
30411             <version>
30412  2.0
30413             </version>
30414             <Code> // Get the MIME type of the download operation with the given id.
30415  var MIMEtype = tizen.download.getMIMEType(downloadId);
30416  </Code>
30417         </descriptive>
30418         <Type type="DOMString">
30419           <descriptive>
30420               <description><p>
30421  DOMString The MIME type of the downloaded file.
30422               </p></description>
30423           </descriptive>
30424         </Type>
30425         <ArgumentList>
30426           <Argument name="downloadId">
30427             <descriptive>
30428                 <description><p>
30429  The ID to get the MIME type information.
30430                 </p></description>
30431             </descriptive>
30432             <Type type="long"/>
30433           </Argument>
30434         </ArgumentList>
30435         <Raises>
30436           <RaiseException name="WebAPIException">
30437             <descriptive>
30438                 <description><p>
30439  with error type NotFoundError, if the identifier does not match
30440 any download operation in progress.
30441                 </p></description>
30442                 <description><p>
30443  with error type TypeMismatchError, if the input parameter is not
30444 compatible with the expected type.
30445                 </p></description>
30446                 <description><p>
30447  with error type NotSupportedError, if this feature is not supported.
30448                 </p></description>
30449                 <description><p>
30450  with error type InvalidValuesError, if any of the input
30451 parameters contain an invalid value.
30452                 </p></description>
30453                 <description><p>
30454  with error type UnknownError in any other error case.
30455                 </p></description>
30456             </descriptive>
30457           </RaiseException>
30458         </Raises>
30459       </Operation>
30460       <Operation name="setListener" id="::Download::DownloadManager::setListener">
30461         <webidl>       void setListener(long downloadId, <ref>DownloadCallback</ref> downloadCallback) raises(<ref>WebAPIException</ref>);</webidl>
30462         <descriptive>
30463             <brief>
30464  Sets the download callback to the download operation of given id.
30465 It's possible to change or register the listener of download operation using the saved id.
30466             </brief>
30467             <version>
30468  2.0
30469             </version>
30470             <Code> var listener = {
30471    onprogress: function(id, receivedSize, totalSize) {
30472      console.log('Received with id: ' + id + ', ' + receivedSize + '/' + totalSize);
30473    },
30474    onpaused: function(id) {
30475      console.log('Paused with id: ' + id);
30476    },
30477    oncanceled: function(id) {
30478      console.log('Canceled with id: ' + id);
30479    },
30480    oncompleted: function(id, fileName) {
30481      console.log('Completed with id: ' + id + ', file name: ' + fileName);
30482    },
30483    onfailed: function(id, error) {
30484      console.log('Failed with id: ' + id + ', error name: ' + error.name);
30485    }
30486  };
30487
30488  // Start downloading the html file on the web with the corresponding callbacks.
30489  var downloadRequest = new tizen.DownloadRequest(&quot;http://download.tizen.org/tools/README.txt&quot;, &quot;documents&quot;);
30490  downloadId = tizen.download.start(downloadRequest);
30491
30492  // Add the listener.
30493  tizen.download.setListener(downloadId, listener);
30494  </Code>
30495         </descriptive>
30496         <Type type="void"/>
30497         <ArgumentList>
30498           <Argument name="downloadId">
30499             <descriptive>
30500                 <description><p>
30501  The ID to set the download callback.
30502                 </p></description>
30503             </descriptive>
30504             <Type type="long"/>
30505           </Argument>
30506           <Argument name="downloadCallback">
30507             <descriptive>
30508                 <description><p>
30509  The method to invoke when the download state changes or an error occurs.
30510                 </p></description>
30511             </descriptive>
30512             <Type name="DownloadCallback"/>
30513           </Argument>
30514         </ArgumentList>
30515         <Raises>
30516           <RaiseException name="WebAPIException">
30517             <descriptive>
30518                 <description><p>
30519  with error type NotFoundError, if the identifier does not match
30520 any download operation in progress.
30521                 </p></description>
30522                 <description><p>
30523  with error type TypeMismatchError, if the input parameter is not
30524 compatible with the expected type.
30525                 </p></description>
30526                 <description><p>
30527  with error type NotSupportedError, if this feature is not supported.
30528                 </p></description>
30529                 <description><p>
30530  with error type InvalidValuesError, if any of the input
30531 parameters contain an invalid value.
30532                 </p></description>
30533                 <description><p>
30534  with error type UnknownError in any other error case.
30535                 </p></description>
30536             </descriptive>
30537           </RaiseException>
30538         </Raises>
30539       </Operation>
30540     </Interface>
30541     <Interface name="DownloadCallback" id="::Download::DownloadCallback">
30542       <webidl>   [Callback, NoInterfaceObject] interface DownloadCallback {
30543        void onprogress(long downloadId, unsigned long long receivedSize, unsigned long long totalSize);
30544
30545        void onpaused(long downloadId);
30546
30547        void oncanceled(long downloadId);
30548
30549        void oncompleted(long downloadId, DOMString fullPath);
30550
30551        void onfailed(long downloadId, <ref>WebAPIError</ref> error);
30552    };</webidl>
30553       <descriptive>
30554           <brief>
30555  This interface defines notification callbacks for the download state change or progress.
30556           </brief>
30557           <version>
30558  2.0
30559           </version>
30560       </descriptive>
30561       <ExtendedAttributeList>
30562         <ExtendedAttribute name="Callback">
30563           <webidl>Callback</webidl>
30564         </ExtendedAttribute>
30565         <ExtendedAttribute name="NoInterfaceObject">
30566           <webidl> NoInterfaceObject</webidl>
30567         </ExtendedAttribute>
30568       </ExtendedAttributeList>
30569       <Operation name="onprogress" id="::Download::DownloadCallback::onprogress">
30570         <webidl>       void onprogress(long downloadId, unsigned long long receivedSize, unsigned long long totalSize);</webidl>
30571         <descriptive>
30572             <brief>
30573  Called when a download is successful and it called multiple times as the download progresses.
30574 The interval between <em>onprogress()</em> callback is platform-dependent. When the download is started, the <em>receivedSize </em>can be <var>0</var>.
30575             </brief>
30576             <version>
30577  2.0
30578             </version>
30579         </descriptive>
30580         <Type type="void"/>
30581         <ArgumentList>
30582           <Argument name="downloadId">
30583             <descriptive>
30584                 <description><p>
30585  The ID of the corresponding download operation.
30586                 </p></description>
30587             </descriptive>
30588             <Type type="long"/>
30589           </Argument>
30590           <Argument name="receivedSize">
30591             <descriptive>
30592                 <description><p>
30593  The size of data received in bytes.
30594                 </p></description>
30595             </descriptive>
30596             <Type type="unsigned long long"/>
30597           </Argument>
30598           <Argument name="totalSize">
30599             <descriptive>
30600                 <description><p>
30601  The total size of data to receive in bytes.
30602                 </p></description>
30603             </descriptive>
30604             <Type type="unsigned long long"/>
30605           </Argument>
30606         </ArgumentList>
30607       </Operation>
30608       <Operation name="onpaused" id="::Download::DownloadCallback::onpaused">
30609         <webidl>       void onpaused(long downloadId);</webidl>
30610         <descriptive>
30611             <brief>
30612  Called when the download operation is paused by the <em>pause() </em>method.
30613             </brief>
30614             <version>
30615  2.0
30616             </version>
30617         </descriptive>
30618         <Type type="void"/>
30619         <ArgumentList>
30620           <Argument name="downloadId">
30621             <descriptive>
30622                 <description><p>
30623  The ID of the corresponding download operation.
30624                 </p></description>
30625             </descriptive>
30626             <Type type="long"/>
30627           </Argument>
30628         </ArgumentList>
30629       </Operation>
30630       <Operation name="oncanceled" id="::Download::DownloadCallback::oncanceled">
30631         <webidl>       void oncanceled(long downloadId);</webidl>
30632         <descriptive>
30633             <brief>
30634  Called when download is canceled by the <em>cancel() </em>method.
30635             </brief>
30636             <version>
30637  2.0
30638             </version>
30639         </descriptive>
30640         <Type type="void"/>
30641         <ArgumentList>
30642           <Argument name="downloadId">
30643             <descriptive>
30644                 <description><p>
30645  The ID of the corresponding download operation.
30646                 </p></description>
30647             </descriptive>
30648             <Type type="long"/>
30649           </Argument>
30650         </ArgumentList>
30651       </Operation>
30652       <Operation name="oncompleted" id="::Download::DownloadCallback::oncompleted">
30653         <webidl>       void oncompleted(long downloadId, DOMString fullPath);</webidl>
30654         <descriptive>
30655             <brief>
30656  Called when the download operation is completed with the final full path.
30657 If the same file name already exists in the destination, it is changed according to the platform policy and delivered in this callback.
30658             </brief>
30659             <version>
30660  2.0
30661             </version>
30662         </descriptive>
30663         <Type type="void"/>
30664         <ArgumentList>
30665           <Argument name="downloadId">
30666             <descriptive>
30667                 <description><p>
30668  The ID of the corresponding download operation.
30669                 </p></description>
30670             </descriptive>
30671             <Type type="long"/>
30672           </Argument>
30673           <Argument name="fullPath">
30674             <descriptive>
30675                 <description><p>
30676  The final full path for the downloaded file.
30677                 </p></description>
30678             </descriptive>
30679             <Type type="DOMString"/>
30680           </Argument>
30681         </ArgumentList>
30682       </Operation>
30683       <Operation name="onfailed" id="::Download::DownloadCallback::onfailed">
30684         <webidl>       void onfailed(long downloadId, <ref>WebAPIError</ref> error);</webidl>
30685         <descriptive>
30686             <brief>
30687  Called when the download operation fails.
30688             </brief>
30689             <version>
30690  2.0
30691             </version>
30692         </descriptive>
30693         <Type type="void"/>
30694         <ArgumentList>
30695           <Argument name="downloadId">
30696             <descriptive>
30697                 <description><p>
30698  The ID of the corresponding download operation.
30699                 </p></description>
30700             </descriptive>
30701             <Type type="long"/>
30702           </Argument>
30703           <Argument name="error">
30704             <descriptive>
30705                 <description><p>
30706  The reason for the download failure.
30707                 </p></description>
30708             </descriptive>
30709             <Type name="WebAPIError"/>
30710           </Argument>
30711         </ArgumentList>
30712       </Operation>
30713     </Interface>
30714   </Module>
30715   <Module name="Filesystem" id="::Filesystem">
30716     <webidl>module Filesystem {
30717   enum FileMode { &quot;r&quot;, &quot;rw&quot;, &quot;w&quot;, &quot;a&quot; };
30718   
30719   enum FileSystemStorageType { &quot;INTERNAL&quot;, &quot;EXTERNAL&quot; };
30720   
30721   enum FileSystemStorageState { &quot;MOUNTED&quot;, &quot;REMOVED&quot;, &quot;UNMOUNTABLE&quot; };
30722   
30723   [NoInterfaceObject] interface FileSystemManagerObject {
30724     readonly attribute <ref>FileSystemManager</ref> filesystem;
30725   };
30726   <ref>Tizen</ref> implements <ref>FileSystemManagerObject</ref>;
30727
30728   [NoInterfaceObject] interface FileSystemManager {
30729     readonly attribute long maxPathLength;
30730
30731     void resolve(DOMString location,
30732                  <ref>FileSuccessCallback</ref> onsuccess,
30733                  optional <ref>ErrorCallback</ref>? onerror,
30734                  optional <ref>FileMode</ref>? mode) raises(<ref>WebAPIException</ref>);
30735
30736     void getStorage(DOMString label,
30737                     <ref>FileSystemStorageSuccessCallback</ref> onsuccess,
30738                     optional <ref>ErrorCallback</ref>? onerror) raises(<ref>WebAPIException</ref>);
30739
30740     void listStorages(<ref>FileSystemStorageArraySuccessCallback</ref> onsuccess,
30741                       optional <ref>ErrorCallback</ref>? onerror) raises(<ref>WebAPIException</ref>);
30742
30743     long addStorageStateChangeListener(<ref>FileSystemStorageSuccessCallback</ref> onsuccess,
30744                                        optional <ref>ErrorCallback</ref>? onerror) raises(<ref>WebAPIException</ref>);
30745
30746     void removeStorageStateChangeListener(long watchId) raises(<ref>WebAPIException</ref>);
30747   };
30748
30749   [NoInterfaceObject] interface FileSystemStorage {
30750     readonly attribute DOMString label;
30751
30752     readonly attribute <ref>FileSystemStorageType</ref> type;
30753
30754     readonly attribute <ref>FileSystemStorageState</ref> state;
30755   };
30756
30757   [NoInterfaceObject] interface File {
30758     readonly attribute <ref>File</ref>? parent;
30759
30760     readonly attribute boolean readOnly;
30761
30762     readonly attribute boolean isFile;
30763
30764     readonly attribute boolean isDirectory;
30765
30766     readonly attribute Date? created;
30767
30768     readonly attribute Date? modified;
30769
30770     readonly attribute DOMString path;
30771
30772     readonly attribute DOMString name;
30773
30774     readonly attribute DOMString fullPath;
30775
30776     readonly attribute unsigned long long fileSize;
30777
30778     readonly attribute long length;
30779
30780     DOMString toURI() raises(<ref>WebAPIException</ref>);
30781
30782     void listFiles(<ref>FileArraySuccessCallback</ref> onsuccess,
30783                    optional <ref>ErrorCallback</ref>? onerror,
30784                    optional <ref>FileFilter</ref>? filter) raises(<ref>WebAPIException</ref>);
30785
30786     void openStream(<ref>FileMode</ref> mode,
30787                     <ref>FileStreamSuccessCallback</ref> onsuccess,
30788                     optional <ref>ErrorCallback</ref>? onerror,
30789                     optional DOMString? encoding) raises(<ref>WebAPIException</ref>);
30790
30791     void readAsText(<ref>FileStringSuccessCallback</ref> onsuccess,
30792                     optional <ref>ErrorCallback</ref>? onerror,
30793                     optional DOMString? encoding) raises(<ref>WebAPIException</ref>);
30794
30795     void copyTo(DOMString originFilePath,
30796                 DOMString destinationFilePath,
30797                 boolean overwrite,
30798                 optional <ref>SuccessCallback</ref>? onsuccess,
30799                 optional <ref>ErrorCallback</ref>? onerror) raises(<ref>WebAPIException</ref>);
30800
30801     void moveTo(DOMString originFilePath,
30802                 DOMString destinationFilePath,
30803                 boolean overwrite,
30804                 optional <ref>SuccessCallback</ref>? onsuccess,
30805                 optional <ref>ErrorCallback</ref>? onerror) raises(<ref>WebAPIException</ref>);
30806
30807     <ref>File</ref> createDirectory(DOMString dirPath) raises(<ref>WebAPIException</ref>);
30808
30809     <ref>File</ref> createFile(DOMString relativeFilePath) raises(<ref>WebAPIException</ref>);
30810
30811     <ref>File</ref> resolve(DOMString filePath) raises(<ref>WebAPIException</ref>);
30812
30813     void deleteDirectory(DOMString directoryPath,
30814                          boolean recursive,
30815                          optional <ref>SuccessCallback</ref>? onsuccess,
30816                          optional <ref>ErrorCallback</ref>? onerror) raises(<ref>WebAPIException</ref>);
30817
30818     void deleteFile(DOMString filePath,
30819                     optional <ref>SuccessCallback</ref>? onsuccess,
30820                     optional <ref>ErrorCallback</ref>? onerror) raises(<ref>WebAPIException</ref>);
30821   };
30822
30823
30824   dictionary FileFilter {
30825     DOMString name;
30826
30827     Date startModified;
30828
30829     Date endModified;
30830
30831     Date startCreated;
30832
30833     Date endCreated;
30834   };
30835
30836   [NoInterfaceObject] interface FileStream {
30837     readonly attribute boolean eof;
30838
30839     attribute long position setraises(<ref>WebAPIException</ref>);
30840
30841     readonly attribute long bytesAvailable;
30842
30843     void close();
30844
30845     DOMString read(long charCount) raises(<ref>WebAPIException</ref>);
30846
30847     octet[] readBytes(long byteCount) raises(<ref>WebAPIException</ref>);
30848
30849     DOMString readBase64(long byteCount) raises(<ref>WebAPIException</ref>);
30850
30851     void write(DOMString stringData) raises(<ref>WebAPIException</ref>);
30852
30853     void writeBytes(octet[] byteData) raises(<ref>WebAPIException</ref>);
30854
30855     void writeBase64(DOMString base64Data) raises(<ref>WebAPIException</ref>);
30856   };
30857
30858   [Callback=FunctionOnly, NoInterfaceObject] interface FileSuccessCallback {
30859     void onsuccess(<ref>File</ref> file);
30860   };
30861
30862   [Callback=FunctionOnly, NoInterfaceObject] interface FileSystemStorageArraySuccessCallback {
30863     void onsuccess(<ref>FileSystemStorage</ref>[] storages);
30864   };
30865
30866   [Callback=FunctionOnly, NoInterfaceObject] interface FileSystemStorageSuccessCallback {
30867     void onsuccess(<ref>FileSystemStorage</ref> storage);
30868   };
30869
30870   [Callback=FunctionOnly, NoInterfaceObject] interface FileStringSuccessCallback {
30871     void onsuccess(DOMString fileStr);
30872   };
30873
30874   [Callback=FunctionOnly, NoInterfaceObject] interface FileStreamSuccessCallback {
30875     void onsuccess(<ref>FileStream</ref> filestream);
30876   };
30877
30878   [Callback=FunctionOnly, NoInterfaceObject] interface FileArraySuccessCallback {
30879     void onsuccess(<ref>File</ref>[] files);
30880   };
30881 };</webidl>
30882     <descriptive>
30883         <brief>
30884  This API provides access to a device's filesystem.
30885         </brief>
30886        <description>
30887         <p>
30888 The filesystem is represented as an abstract collection of disjointed filesystem virtual
30889 root locations, each corresponding to a specific location in the device
30890 filesystem. The filesystem API exposes the hierarchies below these root
30891 locations as a single virtual filesystem, but provides no access to other
30892 parts of the device filesystem.
30893         </p>
30894         <p>
30895 Each virtual root has a string name. Each file or directory within the virtual
30896 filesystem is addressed using a fully-qualified path of the form:
30897 <em>&#60;root name&#62;/&#60;path&#62;</em> where <em>&#60;rootname&#62;</em> is
30898 the name of the virtual root and <em>&#60;path&#62;</em> is the path to the file or
30899 directory relative to that root.
30900         </p>
30901         <p>
30902 The following virtual roots MUST be supported:
30903         </p>
30904         <ul>
30905           <li>
30906 images: the images location           </li>
30907           <li>
30908 videos: the videos location           </li>
30909           <li>
30910 music: the sounds location           </li>
30911           <li>
30912 documents: the documents location           </li>
30913           <li>
30914 downloads: the location for downloaded items           </li>
30915           <li>
30916 ringtones: the location for ringtones (read-only location)           </li>
30917           <li>
30918 wgt-package: the widget package location (read-only location)           </li>
30919           <li>
30920 wgt-private: the widget private storage           </li>
30921           <li>
30922 wgt-private-tmp: the widget private volatile storage area          </li>
30923         </ul>
30924         <p>
30925 The file URI path is also supported. if you want to access other paths out of virtual root, 
30926 for example '/tmp/', 'file:///tmp' could be used as location parameter.
30927         </p>
30928         <p>
30929 To access specific locations from those specified above, a file handle
30930 must be retrieved using the filesystem.resolve call.
30931         </p>
30932         <p>
30933 A file handle represents either a file or a directory. For a file, the
30934 isFile attribute is <em>true</em>. For a directory, the isDirectory attribute
30935 is <em>true</em>. A file can be opened for read and write operations, using a
30936 FileStream handle. A list of files and sub-directories can be obtained from a
30937 directory and a resolve method exists to resolve files or sub-directories
30938 more conveniently than processing directory listings.
30939         </p>
30940         <p>
30941 The implementation MUST support the use of the following
30942 characters in file names:
30943         </p>
30944         <ul>
30945           <li>
30946 Letters (azAZ)          </li>
30947           <li>
30948 Numbers (0-9)          </li>
30949           <li>
30950 Blank spaces          </li>
30951           <li>
30952 Underscores (&quot;_&quot;)          </li>
30953           <li>
30954 Hyphens (&quot;-&quot;)          </li>
30955           <li>
30956 Periods (&quot;.&quot;)          </li>
30957         </ul>
30958         <p>
30959 The implementation MAY support additional characters in file names,
30960 depending on platform support.
30961         </p>
30962         <p>
30963 The implementation MAY forbid the use of additional characters in file
30964 names, depending on the platform. The use of the path separator &quot;/&quot;
30965 in file names MUST NOT be allowed. The &quot;/&quot; character is used as the (path)
30966 component separator.
30967         </p>
30968         <p>
30969 Some other file name and path characteristics are platform-dependent,
30970 for example, maximum path length, file name length, case sensitivity, additional
30971 character support, etc. Therefore, it is recommended that you avoid any dependency
30972 on aspects that cannot be supported across many platforms.
30973         </p>
30974         <p>
30975 When a path is used to interact with the underlying filesystem,
30976 the encoding used for the file path SHOULD be the platform default.
30977         </p>
30978         <p>
30979 For more information on the Filesystem features, see <a href="../../org.tizen.web.appprogramming/html/guide/io_guide/filesystem.htm">File System Guide</a>.
30980         </p>
30981        </description>
30982         <version>
30983  1.0
30984         </version>
30985     </descriptive>
30986     <Enum name="FileMode" id="::Filesystem::FileMode">
30987       <webidl>  enum FileMode { &quot;r&quot;, &quot;rw&quot;, &quot;w&quot;, &quot;a&quot; };</webidl>
30988       <descriptive>
30989           <brief>
30990  The file mode provided when opening.
30991           </brief>
30992          <description>
30993           <p>
30994 Value &quot;r&quot; to obtain read-only access, &quot;rw&quot; to obtain read and write
30995 access, &quot;w&quot; to obtain write access and &quot;a&quot; for appending.
30996           </p>
30997          </description>
30998           <version>
30999  1.0
31000           </version>
31001       </descriptive>
31002       <EnumValue stringvalue="r">
31003         <webidl> &quot;r</webidl>
31004       </EnumValue>
31005       <EnumValue stringvalue="rw">
31006         <webidl> &quot;rw</webidl>
31007       </EnumValue>
31008       <EnumValue stringvalue="w">
31009         <webidl> &quot;w</webidl>
31010       </EnumValue>
31011       <EnumValue stringvalue="a">
31012         <webidl> &quot;a</webidl>
31013       </EnumValue>
31014     </Enum>
31015     <Enum name="FileSystemStorageType" id="::Filesystem::FileSystemStorageType">
31016       <webidl>  enum FileSystemStorageType { &quot;INTERNAL&quot;, &quot;EXTERNAL&quot; };</webidl>
31017       <descriptive>
31018           <brief>
31019  The type of storage.
31020           </brief>
31021          <description>
31022           <ul>
31023             <li>
31024 INTERNAL: Internal storage is storage that cannot be removed, such as a
31025 flash memory.            </li>
31026             <li>
31027 EXTERNAL: External storage is removable storage, such as a USB drive or
31028 memory cards.            </li>
31029           </ul>
31030          </description>
31031           <version>
31032  1.0
31033           </version>
31034       </descriptive>
31035       <EnumValue stringvalue="INTERNAL">
31036         <webidl> &quot;INTERNAL</webidl>
31037       </EnumValue>
31038       <EnumValue stringvalue="EXTERNAL">
31039         <webidl> &quot;EXTERNAL</webidl>
31040       </EnumValue>
31041     </Enum>
31042     <Enum name="FileSystemStorageState" id="::Filesystem::FileSystemStorageState">
31043       <webidl>  enum FileSystemStorageState { &quot;MOUNTED&quot;, &quot;REMOVED&quot;, &quot;UNMOUNTABLE&quot; };</webidl>
31044       <descriptive>
31045           <brief>
31046  The state of the storage.
31047           </brief>
31048          <description>
31049           <ul>
31050             <li>
31051 MOUNTED: The device is mounted and can be browsed.            </li>
31052             <li>
31053 REMOVED: The device was removed. This states only applies to external drives.            </li>
31054             <li>
31055 UNMOUNTABLE: The device cannot be mounted due to an error.            </li>
31056           </ul>
31057          </description>
31058           <version>
31059  1.0
31060           </version>
31061       </descriptive>
31062       <EnumValue stringvalue="MOUNTED">
31063         <webidl> &quot;MOUNTED</webidl>
31064       </EnumValue>
31065       <EnumValue stringvalue="REMOVED">
31066         <webidl> &quot;REMOVED</webidl>
31067       </EnumValue>
31068       <EnumValue stringvalue="UNMOUNTABLE">
31069         <webidl> &quot;UNMOUNTABLE</webidl>
31070       </EnumValue>
31071     </Enum>
31072     <Interface name="FileSystemManagerObject" id="::Filesystem::FileSystemManagerObject">
31073       <webidl>  [NoInterfaceObject] interface FileSystemManagerObject {
31074     readonly attribute <ref>FileSystemManager</ref> filesystem;
31075   };</webidl>
31076       <descriptive>
31077           <brief>
31078  Defines what is instantiated in the tizen object.
31079           </brief>
31080          <description>
31081           <p>
31082 There will be a tizen.filesystem object that allows accessing the
31083 functionality of the filesystem API.
31084           </p>
31085          </description>
31086           <version>
31087  1.0
31088           </version>
31089       </descriptive>
31090       <ExtendedAttributeList>
31091         <ExtendedAttribute name="NoInterfaceObject">
31092           <webidl>NoInterfaceObject</webidl>
31093         </ExtendedAttribute>
31094       </ExtendedAttributeList>
31095       <Attribute readonly="readonly" name="filesystem" id="::Filesystem::FileSystemManagerObject::filesystem">
31096         <webidl>    readonly attribute <ref>FileSystemManager</ref> filesystem;</webidl>
31097         <Type name="FileSystemManager"/>
31098       </Attribute>
31099     </Interface>
31100     <Implements name1="Tizen" name2="FileSystemManagerObject">
31101       <webidl>  <ref>Tizen</ref> implements <ref>FileSystemManagerObject</ref>;</webidl>
31102     </Implements>
31103     <Interface name="FileSystemManager" id="::Filesystem::FileSystemManager">
31104       <webidl>  [NoInterfaceObject] interface FileSystemManager {
31105     readonly attribute long maxPathLength;
31106
31107     void resolve(DOMString location,
31108                  <ref>FileSuccessCallback</ref> onsuccess,
31109                  optional <ref>ErrorCallback</ref>? onerror,
31110                  optional <ref>FileMode</ref>? mode) raises(<ref>WebAPIException</ref>);
31111
31112     void getStorage(DOMString label,
31113                     <ref>FileSystemStorageSuccessCallback</ref> onsuccess,
31114                     optional <ref>ErrorCallback</ref>? onerror) raises(<ref>WebAPIException</ref>);
31115
31116     void listStorages(<ref>FileSystemStorageArraySuccessCallback</ref> onsuccess,
31117                       optional <ref>ErrorCallback</ref>? onerror) raises(<ref>WebAPIException</ref>);
31118
31119     long addStorageStateChangeListener(<ref>FileSystemStorageSuccessCallback</ref> onsuccess,
31120                                        optional <ref>ErrorCallback</ref>? onerror) raises(<ref>WebAPIException</ref>);
31121
31122     void removeStorageStateChangeListener(long watchId) raises(<ref>WebAPIException</ref>);
31123   };</webidl>
31124       <descriptive>
31125           <brief>
31126  The file system manager interface that provides access to the filesystem API.
31127           </brief>
31128          <description>
31129           <p>
31130 This manager exposes the filesystem base API, and provides functionality, such as
31131 determining root and default locations, resolving a given location
31132 into a file handle, and registering filesystem listeners for
31133 filesystem events.
31134           </p>
31135          </description>
31136           <version>
31137  1.0
31138           </version>
31139           <Code> var documentsDir;
31140  function onsuccess(files) {
31141    for(var i = 0; i &#60; files.length; i++) {
31142      console.log(&quot;File Name is &quot; + files[i].name); // displays file name
31143    }
31144
31145    var testFile = documentsDir.createFile(&quot;test.txt&quot;);
31146
31147    if (testFile != null) {
31148      testFile.openStream(
31149        &quot;w&quot;,
31150        function(fs){
31151          fs.write(&quot;HelloWorld&quot;);
31152          fs.close();
31153        }, function(e){
31154          console.log(&quot;Error &quot; + e.message);
31155        }, &quot;UTF-8&quot;
31156      );
31157    }
31158  }
31159
31160  function onerror(error) {
31161    console.log(&quot;The error &quot; + error.message + &quot; occurred when listing the files in the selected folder&quot;);
31162  }
31163
31164  tizen.filesystem.resolve(
31165    'documents', 
31166    function(dir){
31167      documentsDir = dir;
31168      dir.listFiles(onsuccess, onerror);
31169    }, function(e){
31170      console.log(&quot;Error&quot; + e.message);
31171    }, &quot;rw&quot;
31172  );
31173  </Code>
31174       </descriptive>
31175       <ExtendedAttributeList>
31176         <ExtendedAttribute name="NoInterfaceObject">
31177           <webidl>NoInterfaceObject</webidl>
31178         </ExtendedAttribute>
31179       </ExtendedAttributeList>
31180       <Attribute readonly="readonly" name="maxPathLength" id="::Filesystem::FileSystemManager::maxPathLength">
31181         <webidl>    readonly attribute long maxPathLength;</webidl>
31182         <descriptive>
31183             <brief>
31184  Contains the platform-dependent maximum path length.
31185             </brief>
31186             <version>
31187  1.0
31188             </version>
31189             <Code> console.log(&quot;The maximum path length is &quot; + tizen.filesystem.maxPathLength);
31190  </Code>
31191         </descriptive>
31192         <Type type="long"/>
31193       </Attribute>
31194       <Operation name="resolve" id="::Filesystem::FileSystemManager::resolve">
31195         <webidl>    void resolve(DOMString location,
31196                  <ref>FileSuccessCallback</ref> onsuccess,
31197                  optional <ref>ErrorCallback</ref>? onerror,
31198                  optional <ref>FileMode</ref>? mode) raises(<ref>WebAPIException</ref>);</webidl>
31199         <descriptive>
31200             <brief>
31201  Resolves a location to a file handle.
31202             </brief>
31203            <description>
31204             <p>
31205 It validates and resolves the given location to a file handle.
31206 If the operation completes successfully, the handle is returned
31207 in the FileSuccessCallback.
31208 A valid location is prefixed with a valid root or
31209 default location and must address an existing,
31210 accessible file or directory.
31211             </p>
31212             <p>
31213 A location can contain virtual path like (<var>documents/some_file.txt</var>)
31214 or it can be a file's URI (<var>file:///my_strange_path/some_file.png</var>).
31215             </p>
31216             <p>
31217 The list of root locations that MUST be supported by a compliant
31218 implementation are:
31219             </p>
31220             <ul>
31221               <li>
31222 documents: Describes the default folder in which text documents
31223 (such as pdf, doc...) are stored by default in the device. For example, in some
31224 platforms it corresponds to the &quot;My Documents&quot; folder.              </li>
31225               <li>
31226 images: Describes the default folder in which still images, like
31227 pictures (such as jpg, gif, png, etc.), are stored in the
31228 device by default. For example, in some platforms it corresponds to the &quot;My Images&quot;
31229 folder.              </li>
31230               <li>
31231 music: Describes the default folder in which sound clips (such as mp3,
31232 aac, etc.) are stored in the device by default. For example, in some platforms it
31233 corresponds to the &quot;My Music&quot; folder.              </li>
31234               <li>
31235 videos: Describes the default folder in which video clips (such as
31236 avi, mp4, etc.) are stored in the device by default. For example, in some platforms
31237 it corresponds to the &quot;My Videos&quot; folder.              </li>
31238               <li>
31239 downloads: Describes the default folder in which files downloaded
31240 (such as by a browser, e-mail client, etc.) are stored by default in the
31241 device. For example, in some platforms it corresponds to the &quot;Downloads&quot; folder.
31242               </li>
31243               <li>
31244 ringtones: Describes the default folder in which ringtones (such as mp3, etc)
31245 are stored by default in the device.               </li>
31246               <li>
31247 wgt-package: Describes the read-only folder in which the content of
31248 the widget file was extracted to.              </li>
31249               <li>
31250 wgt-private: Describes a private folder in which a widget can
31251 store information. This folder MUST be accessible only to the
31252 widget. Other widgets or applications MUST NOT access the
31253 information stored there.              </li>
31254               <li>
31255 wgt-private-tmp: Describes a temporary, private folder in which a widget
31256 can store data that is available during one widget execution
31257 cycle. Content of this folder MAY be removed from this directory
31258 when the widget is closed or the Web Runtime is restarted.
31259 This folder MUST be accessible only to the widget. Other
31260 widgets or applications MUST NOT have access to it.              </li>
31261             </ul>
31262             <p>
31263 The mode parameter specifies whether the resulting File object
31264 has read-only access (&quot;r&quot; access), read and write access (&quot;rw&quot; access),
31265 append access (&quot;a&quot; access), or write access (&quot;w&quot; access) 
31266 to the root location containing directory tree. 
31267 Permission for the requested access is obtained from the security framework. 
31268 Once the resulting File object has access, access is inherited by
31269 any other File objects derived from this instance without any
31270 further reference to the security framework, as noted in
31271 descriptions of certain methods of File.
31272             </p>
31273             <p>
31274 The ErrorCallback is launched with these error types:
31275             </p>
31276             <ul>
31277               <li>
31278 InvalidValuesError: If any of the input parameters contain an invalid value.
31279 For example, the mode is not valid (that is not &quot;r&quot;, &quot;rw&quot;, &quot;a&quot;, or &quot;w&quot;).              </li>
31280               <li>
31281 NotFoundError: The location input argument does not correspond to a valid location.              </li>
31282               <li>
31283 UnknownError: In any other error case.               </li>
31284             </ul>
31285            </description>
31286             <version>
31287  1.0
31288             </version>
31289             <privilegelevel>
31290  public
31291             </privilegelevel>
31292             <privilege>
31293  http://tizen.org/privilege/filesystem.read
31294             </privilege>
31295             <Code> tizen.filesystem.resolve(
31296    'images',
31297    function(dir) {
31298      console.log(&quot;Mount point Name is &quot; +  dir.path);
31299    }, function(e) {
31300      console.log(&quot;Error: &quot; + e.message);
31301    }, &quot;r&quot;
31302  );
31303  </Code>
31304         </descriptive>
31305         <Type type="void"/>
31306         <ArgumentList>
31307           <Argument name="location">
31308             <descriptive>
31309                 <description><p>
31310  Location to resolve.
31311                 </p></description>
31312             </descriptive>
31313             <Type type="DOMString"/>
31314           </Argument>
31315           <Argument name="onsuccess">
31316             <descriptive>
31317                 <description><p>
31318  Called when the location has been.
31319 successfully resolved, passing the newly created File object.
31320                 </p></description>
31321             </descriptive>
31322             <Type name="FileSuccessCallback"/>
31323           </Argument>
31324           <Argument optional="optional" name="onerror">
31325             <descriptive>
31326                 <description><p>
31327  Called if an error occurred.
31328                 </p></description>
31329             </descriptive>
31330             <Type name="ErrorCallback" nullable="nullable"/>
31331           </Argument>
31332           <Argument optional="optional" name="mode">
31333             <descriptive>
31334                 <description><p>
31335  Optional string of value &quot;r&quot; to obtain read-only access,
31336 &quot;rw&quot; to obtain read and write access, &quot;a&quot; to obtain append access,
31337 or &quot;w&quot; to obtain write access to all files and
31338 directories that can be reached from the File object passed
31339 to onsuccess. Defaults to &quot;rw&quot; if absent or <em>null</em>.
31340                 </p></description>
31341             </descriptive>
31342             <Type name="FileMode" nullable="nullable"/>
31343           </Argument>
31344         </ArgumentList>
31345         <Raises>
31346           <RaiseException name="WebAPIException">
31347             <descriptive>
31348                 <description><p>
31349  with error type TypeMismatchError, if the input parameter
31350 is not compatible with the expected type for that parameter.
31351                 </p></description>
31352                 <description><p>
31353  with error type SecurityError, if the application does not have the privilege to call this method.
31354                 </p></description>
31355                 <description><p>
31356  with error type NotSupportedError, if the feature is not supported.
31357                 </p></description>
31358             </descriptive>
31359           </RaiseException>
31360         </Raises>
31361       </Operation>
31362       <Operation name="getStorage" id="::Filesystem::FileSystemManager::getStorage">
31363         <webidl>    void getStorage(DOMString label,
31364                     <ref>FileSystemStorageSuccessCallback</ref> onsuccess,
31365                     optional <ref>ErrorCallback</ref>? onerror) raises(<ref>WebAPIException</ref>);</webidl>
31366         <descriptive>
31367             <brief>
31368  Gets information about a storage based on its label.
31369             </brief>
31370            <description>
31371             <p>
31372 Get storage information based on its label (example: &quot;MyThumbDrive&quot;,
31373 &quot;InternalFlash&quot;). The onsuccess will receive as input argument the data
31374 structure containing additional information about the drive.
31375             </p>
31376             <p>
31377 The ErrorCallback is launched with these error types:
31378             </p>
31379             <ul>
31380               <li>
31381 NotFoundError: No drive was found with the given label.              </li>
31382               <li>
31383 InvalidValuesError: If any of the input parameters contain an invalid value.              </li>
31384               <li>
31385 UnknownError: In any other error case.               </li>
31386             </ul>
31387            </description>
31388             <version>
31389  1.0
31390             </version>
31391             <privilegelevel>
31392  public
31393             </privilegelevel>
31394             <privilege>
31395  http://tizen.org/privilege/filesystem.read
31396             </privilege>
31397             <Code> function onStorage(storage) {
31398      // Do something
31399  }
31400
31401  function onStorageError(e) {
31402  console.log(&quot;Storage not found!&quot; + e.message);
31403  }
31404
31405  tizen.filesystem.getStorage(&quot;music&quot;, onStorage, onStorageError);
31406  </Code>
31407         </descriptive>
31408         <Type type="void"/>
31409         <ArgumentList>
31410           <Argument name="label">
31411             <descriptive>
31412                 <description><p>
31413  Storage label.
31414                 </p></description>
31415             </descriptive>
31416             <Type type="DOMString"/>
31417           </Argument>
31418           <Argument name="onsuccess">
31419             <descriptive>
31420                 <description><p>
31421  Called when the list of storage is available,
31422 passing the storage list to the callback.
31423                 </p></description>
31424             </descriptive>
31425             <Type name="FileSystemStorageSuccessCallback"/>
31426           </Argument>
31427           <Argument optional="optional" name="onerror">
31428             <descriptive>
31429                 <description><p>
31430  Called if an error occurred.
31431                 </p></description>
31432             </descriptive>
31433             <Type name="ErrorCallback" nullable="nullable"/>
31434           </Argument>
31435         </ArgumentList>
31436         <Raises>
31437           <RaiseException name="WebAPIException">
31438             <descriptive>
31439                 <description><p>
31440  with error type TypeMismatchError, if the input parameter
31441 is not compatible with the expected type for that parameter.
31442                 </p></description>
31443                 <description><p>
31444  with error type SecurityError, if the application does not have the privilege to call this method.
31445                 </p></description>
31446                 <description><p>
31447  with error type NotSupportedError, if the feature is not supported.
31448                 </p></description>
31449             </descriptive>
31450           </RaiseException>
31451         </Raises>
31452       </Operation>
31453       <Operation name="listStorages" id="::Filesystem::FileSystemManager::listStorages">
31454         <webidl>    void listStorages(<ref>FileSystemStorageArraySuccessCallback</ref> onsuccess,
31455                       optional <ref>ErrorCallback</ref>? onerror) raises(<ref>WebAPIException</ref>);</webidl>
31456         <descriptive>
31457             <brief>
31458  Lists the available storages on the device.
31459             </brief>
31460            <description>
31461             <p>
31462 Get the list of available internal and external storage devices. The
31463 onsuccess will receive as input argument a list of the data
31464 structure containing additional information about each drive found.
31465 Can get storages would have a label named as 'internal0', virtual roots (images, documents,...), 'removable1', 'removable2'.
31466 'removable1' label would be used to resolve sdcard and 'removable2' label would be used to resolve usb host, if supported.
31467 The vfat filesystem used widly as sdcard filesystem is not case-sensitive. 
31468 If you want to handle the file on sdcard, you need to consider case-sensitive filenames are regarded as same name.
31469             </p>
31470             <p>
31471 Labels can be different, depends on platform implementation.
31472             </p>
31473             <p>
31474 The ErrorCallback is launched with these error types:
31475             </p>
31476             <ul>
31477               <li>
31478 InvalidValuesError: If any of the input parameters contain an invalid value.              </li>
31479               <li>
31480 UnknownError: In any other error case.               </li>
31481             </ul>
31482            </description>
31483             <version>
31484  1.0
31485             </version>
31486             <privilegelevel>
31487  public
31488             </privilegelevel>
31489             <privilege>
31490  http://tizen.org/privilege/filesystem.read
31491             </privilege>
31492             <Code> function alertForCorruptedRemovableDrives(storages) {
31493      for (var i = 0; i &#60; storages.length; i++) {
31494          if (storages[i].type != &quot;EXTERNAL&quot;)
31495              continue;
31496          if (storages[i].state == &quot;UNMOUNTABLE&quot;)
31497              console.log(&quot;External drive &quot; + storages[i].label + &quot; is corrupted.&quot;);
31498      }
31499  }
31500
31501  tizen.filesystem.listStorages(alertForCorruptedRemovableDrives);
31502  </Code>
31503         </descriptive>
31504         <Type type="void"/>
31505         <ArgumentList>
31506           <Argument name="onsuccess">
31507             <descriptive>
31508                 <description><p>
31509  Called when the list of storage is available,
31510 passing the storage list to the callback.
31511                 </p></description>
31512             </descriptive>
31513             <Type name="FileSystemStorageArraySuccessCallback"/>
31514           </Argument>
31515           <Argument optional="optional" name="onerror">
31516             <descriptive>
31517                 <description><p>
31518  Called if an error occurred.
31519                 </p></description>
31520             </descriptive>
31521             <Type name="ErrorCallback" nullable="nullable"/>
31522           </Argument>
31523         </ArgumentList>
31524         <Raises>
31525           <RaiseException name="WebAPIException">
31526             <descriptive>
31527                 <description><p>
31528  with error type TypeMismatchError, if the input parameter
31529 is not compatible with the expected type for that parameter.
31530                 </p></description>
31531                 <description><p>
31532  with error type SecurityError, if the application does not have the privilege to call this method.
31533                 </p></description>
31534                 <description><p>
31535  with error type NotSupportedError, if the feature is not supported.
31536                 </p></description>
31537             </descriptive>
31538           </RaiseException>
31539         </Raises>
31540       </Operation>
31541       <Operation name="addStorageStateChangeListener" id="::Filesystem::FileSystemManager::addStorageStateChangeListener">
31542         <webidl>    long addStorageStateChangeListener(<ref>FileSystemStorageSuccessCallback</ref> onsuccess,
31543                                        optional <ref>ErrorCallback</ref>? onerror) raises(<ref>WebAPIException</ref>);</webidl>
31544         <descriptive>
31545             <brief>
31546  Subscribes to notifications when a storage state changes.
31547             </brief>
31548            <description>
31549             <p>
31550 The most common usage for this method would be to watch notifications of
31551 additions and removals of external storages.
31552             </p>
31553             <p>
31554 When executed, the implementation MUST immediately return a subscription identifier that identifies
31555 the watch operation. After returning the identifier, the watch operation is started
31556 asynchronously. The onsuccess MUST be invoked every time
31557 a storage state changes. If the attempt fails, the onerror (if present)
31558 MUST be invoked with the relevant error type.
31559             </p>
31560             <p>
31561 The watch operation MUST continue until the removeStorageStateChangeListener() method is
31562 called with the corresponding subscription identifier.
31563             </p>
31564            </description>
31565             <version>
31566  1.0
31567             </version>
31568             <privilegelevel>
31569  public
31570             </privilegelevel>
31571             <privilege>
31572  http://tizen.org/privilege/filesystem.write
31573             </privilege>
31574             <Code> var watchID;
31575  function onStorageStateChanged(storage) {
31576      if (storage.state == &quot;MOUNTED&quot;)
31577          console.log(&quot;Storage &quot; + storage.label + &quot; was added!&quot;);
31578  }
31579
31580  watchID = tizen.filesystem.addStorageStateChangeListener(onStorageStateChanged);
31581  </Code>
31582         </descriptive>
31583         <Type type="long">
31584           <descriptive>
31585               <description><p>
31586  long The identifier used to clear the watch subscription.
31587               </p></description>
31588           </descriptive>
31589         </Type>
31590         <ArgumentList>
31591           <Argument name="onsuccess">
31592             <descriptive>
31593                 <description><p>
31594  To be invoked in every change on storage state.
31595                 </p></description>
31596             </descriptive>
31597             <Type name="FileSystemStorageSuccessCallback"/>
31598           </Argument>
31599           <Argument optional="optional" name="onerror">
31600             <descriptive>
31601                 <description><p>
31602  To be invoked in case of error during the watch process.
31603                 </p></description>
31604             </descriptive>
31605             <Type name="ErrorCallback" nullable="nullable"/>
31606           </Argument>
31607         </ArgumentList>
31608         <Raises>
31609           <RaiseException name="WebAPIException">
31610             <descriptive>
31611                 <description><p>
31612  with error type TypeMismatchError, if any input parameter
31613 is not compatible with the expected type for that parameter.
31614                 </p></description>
31615                 <description><p>
31616  with error type SecurityError, if the application does not have the privilege to call this method.
31617                 </p></description>
31618                 <description><p>
31619  with error type NotSupportedError, if the feature is not supported.
31620                 </p></description>
31621                 <description><p>
31622  with error type UnknownError, if any other error case.
31623                 </p></description>
31624             </descriptive>
31625           </RaiseException>
31626         </Raises>
31627       </Operation>
31628       <Operation name="removeStorageStateChangeListener" id="::Filesystem::FileSystemManager::removeStorageStateChangeListener">
31629         <webidl>    void removeStorageStateChangeListener(long watchId) raises(<ref>WebAPIException</ref>);</webidl>
31630         <descriptive>
31631             <brief>
31632  Unsubscribes a storage watch operation.
31633             </brief>
31634            <description>
31635             <p>
31636 If the watchId argument is valid and corresponds to a subscription already in
31637 place, the watch process MUST immediately stop and no further callbacks MUST be
31638 invoked.
31639             </p>
31640            </description>
31641             <version>
31642  1.0
31643             </version>
31644             <privilegelevel>
31645  public
31646             </privilegelevel>
31647             <privilege>
31648  http://tizen.org/privilege/filesystem.write
31649             </privilege>
31650             <Code> var watchID;
31651  function onStorageStateChanged(storage) {
31652      if (storage.state == &quot;MOUNTED&quot;)
31653          console.log(&quot;Storage &quot; + storage.label + &quot; was added!&quot;);
31654      tizen.filesystem.removeStorageStateChangeListener(watchID);
31655  }
31656
31657  watchID = tizen.filesystem.addStorageStateChangeListener(onStorageStateChanged);
31658  
31659
31660  </Code>
31661         </descriptive>
31662         <Type type="void"/>
31663         <ArgumentList>
31664           <Argument name="watchId">
31665             <descriptive>
31666                 <description><p>
31667  Subscription Identifier.
31668                 </p></description>
31669             </descriptive>
31670             <Type type="long"/>
31671           </Argument>
31672         </ArgumentList>
31673         <Raises>
31674           <RaiseException name="WebAPIException">
31675             <descriptive>
31676                 <description><p>
31677  with error type TypeMismatchError, if any input parameter
31678 is not compatible with the expected type for that parameter.
31679                 </p></description>
31680                 <description><p>
31681  with error type InvalidValuesError, if any of the input 
31682 parameters contain an invalid value.
31683                 </p></description>
31684                 <description><p>
31685  with error type SecurityError, if the application does not have the privilege to call this method.
31686                 </p></description>
31687                 <description><p>
31688  with error type NotSupportedError, if the feature is not supported.
31689                 </p></description>
31690                 <description><p>
31691  with error type UnknownError, if any other error case.      
31692                 </p></description>
31693                 <description><p>
31694  with error type NotFoundError, if the watchId does not exist.      
31695                 </p></description>
31696             </descriptive>
31697           </RaiseException>
31698         </Raises>
31699       </Operation>
31700     </Interface>
31701     <Interface name="FileSystemStorage" id="::Filesystem::FileSystemStorage">
31702       <webidl>  [NoInterfaceObject] interface FileSystemStorage {
31703     readonly attribute DOMString label;
31704
31705     readonly attribute <ref>FileSystemStorageType</ref> type;
31706
31707     readonly attribute <ref>FileSystemStorageState</ref> state;
31708   };</webidl>
31709       <descriptive>
31710           <brief>
31711  The FileSystemStorage interface.
31712           </brief>
31713          <description>
31714           <p>
31715 This interface gives additional information about a storage, such as if the
31716 device is mounted, if it's a removable drive or not, or the device's name.
31717 To retrieve the mount point, the resolve() method should be used using
31718 the label as argument.
31719           </p>
31720          </description>
31721           <version>
31722  1.0
31723           </version>
31724       </descriptive>
31725       <ExtendedAttributeList>
31726         <ExtendedAttribute name="NoInterfaceObject">
31727           <webidl>NoInterfaceObject</webidl>
31728         </ExtendedAttribute>
31729       </ExtendedAttributeList>
31730       <Attribute readonly="readonly" name="label" id="::Filesystem::FileSystemStorage::label">
31731         <webidl>    readonly attribute DOMString label;</webidl>
31732         <descriptive>
31733             <brief>
31734  The storage name.
31735             </brief>
31736            <description>
31737             <p>
31738 Used as input for functions like getStorage() and also used as 'location' parameter for File.resolve() and FileSystemManager.resolve().
31739             </p>
31740            </description>
31741             <version>
31742  1.0
31743             </version>
31744         </descriptive>
31745         <Type type="DOMString"/>
31746       </Attribute>
31747       <Attribute readonly="readonly" name="type" id="::Filesystem::FileSystemStorage::type">
31748         <webidl>    readonly attribute <ref>FileSystemStorageType</ref> type;</webidl>
31749         <descriptive>
31750             <brief>
31751  The storage type.
31752             </brief>
31753            <description>
31754             <p>
31755 Defines whether the storage is internal or external.
31756             </p>
31757            </description>
31758             <version>
31759  1.0
31760             </version>
31761         </descriptive>
31762         <Type name="FileSystemStorageType"/>
31763       </Attribute>
31764       <Attribute readonly="readonly" name="state" id="::Filesystem::FileSystemStorage::state">
31765         <webidl>    readonly attribute <ref>FileSystemStorageState</ref> state;</webidl>
31766         <descriptive>
31767             <brief>
31768  The storage state.
31769             </brief>
31770            <description>
31771             <p>
31772 Defines whether the storage is mounted or not.
31773             </p>
31774            </description>
31775             <version>
31776  1.0
31777             </version>
31778         </descriptive>
31779         <Type name="FileSystemStorageState"/>
31780       </Attribute>
31781     </Interface>
31782     <Interface name="File" id="::Filesystem::File">
31783       <webidl>  [NoInterfaceObject] interface File {
31784     readonly attribute <ref>File</ref>? parent;
31785
31786     readonly attribute boolean readOnly;
31787
31788     readonly attribute boolean isFile;
31789
31790     readonly attribute boolean isDirectory;
31791
31792     readonly attribute Date? created;
31793
31794     readonly attribute Date? modified;
31795
31796     readonly attribute DOMString path;
31797
31798     readonly attribute DOMString name;
31799
31800     readonly attribute DOMString fullPath;
31801
31802     readonly attribute unsigned long long fileSize;
31803
31804     readonly attribute long length;
31805
31806     DOMString toURI() raises(<ref>WebAPIException</ref>);
31807
31808     void listFiles(<ref>FileArraySuccessCallback</ref> onsuccess,
31809                    optional <ref>ErrorCallback</ref>? onerror,
31810                    optional <ref>FileFilter</ref>? filter) raises(<ref>WebAPIException</ref>);
31811
31812     void openStream(<ref>FileMode</ref> mode,
31813                     <ref>FileStreamSuccessCallback</ref> onsuccess,
31814                     optional <ref>ErrorCallback</ref>? onerror,
31815                     optional DOMString? encoding) raises(<ref>WebAPIException</ref>);
31816
31817     void readAsText(<ref>FileStringSuccessCallback</ref> onsuccess,
31818                     optional <ref>ErrorCallback</ref>? onerror,
31819                     optional DOMString? encoding) raises(<ref>WebAPIException</ref>);
31820
31821     void copyTo(DOMString originFilePath,
31822                 DOMString destinationFilePath,
31823                 boolean overwrite,
31824                 optional <ref>SuccessCallback</ref>? onsuccess,
31825                 optional <ref>ErrorCallback</ref>? onerror) raises(<ref>WebAPIException</ref>);
31826
31827     void moveTo(DOMString originFilePath,
31828                 DOMString destinationFilePath,
31829                 boolean overwrite,
31830                 optional <ref>SuccessCallback</ref>? onsuccess,
31831                 optional <ref>ErrorCallback</ref>? onerror) raises(<ref>WebAPIException</ref>);
31832
31833     <ref>File</ref> createDirectory(DOMString dirPath) raises(<ref>WebAPIException</ref>);
31834
31835     <ref>File</ref> createFile(DOMString relativeFilePath) raises(<ref>WebAPIException</ref>);
31836
31837     <ref>File</ref> resolve(DOMString filePath) raises(<ref>WebAPIException</ref>);
31838
31839     void deleteDirectory(DOMString directoryPath,
31840                          boolean recursive,
31841                          optional <ref>SuccessCallback</ref>? onsuccess,
31842                          optional <ref>ErrorCallback</ref>? onerror) raises(<ref>WebAPIException</ref>);
31843
31844     void deleteFile(DOMString filePath,
31845                     optional <ref>SuccessCallback</ref>? onsuccess,
31846                     optional <ref>ErrorCallback</ref>? onerror) raises(<ref>WebAPIException</ref>);
31847   };</webidl>
31848       <descriptive>
31849           <brief>
31850  The file interface.
31851           </brief>
31852          <description>
31853           <p>
31854 This interface represents the file abstraction in use.
31855 A file handle represents a file
31856 if the isFile property is <em>true</em>, if the isFile property is <em>false</em>, the file
31857 handle represents a directory.
31858 If a file handle represents a directory, it can address files and directories.
31859           </p>
31860           <p>
31861 The file object permissions for the file object location and tree rooted
31862 at that location depends upon the mode defined in the resolve method.
31863 When a File object creates a child File object, 
31864 the new File object inherits its access rights from
31865 the parent object without any reference to the security framework, as
31866 noted in certain methods of File.
31867           </p>
31868           <p>
31869 A file handle representing a file can be opened for I/O operations,
31870 such as reading and writing.
31871           </p>
31872           <p>
31873 A file handle representing a directory can be used for listing all
31874 files and directories rooted as the file handle location.
31875           </p>
31876          </description>
31877           <version>
31878  1.0
31879           </version>
31880           <Code> function onsuccess(files) {
31881    for(var i = 0; i &#60; files.length; i++) {
31882      // alerts each name of dir's contents
31883      console.log(files[i].name);
31884    }
31885  }
31886
31887  function onerror(error) {
31888    console.log(&quot;The error &quot; + error.message +
31889                &quot; occurred when listing the files in the selected folder&quot;);
31890  }
31891
31892  // list directory contents
31893  dir.listFiles(onsuccess, onerror);
31894  </Code>
31895       </descriptive>
31896       <ExtendedAttributeList>
31897         <ExtendedAttribute name="NoInterfaceObject">
31898           <webidl>NoInterfaceObject</webidl>
31899         </ExtendedAttribute>
31900       </ExtendedAttributeList>
31901       <Attribute readonly="readonly" name="parent" id="::Filesystem::File::parent">
31902         <webidl>    readonly attribute <ref>File</ref>? parent;</webidl>
31903         <descriptive>
31904             <brief>
31905  The parent directory handle.
31906             </brief>
31907            <description>
31908             <p>
31909 <em>null</em> if there is no parent directory.
31910             </p>
31911             <p>
31912 If there is no parent directory, this represents a root location.
31913             </p>
31914            </description>
31915             <version>
31916  1.0
31917             </version>
31918             <Code> // list directory contents
31919  dir.listFiles(onsuccess, onerror);
31920
31921  function onsuccess(files) {
31922    for(var i = 0; i &#60; files.length; i++) {
31923      // prints the file parent, should contain the
31924      // same value for all the files in the loop
31925      console.log(&quot;All the files should have the same parent &quot; +
31926                  files[i].parent);
31927    }
31928  }
31929
31930  function onerror(error){
31931    console.log(&quot;The error &quot; + error.message +
31932                &quot; occurred when listing the files in the selected folder&quot;);
31933  }
31934  </Code>
31935         </descriptive>
31936         <Type name="File" nullable="nullable"/>
31937       </Attribute>
31938       <Attribute readonly="readonly" name="readOnly" id="::Filesystem::File::readOnly">
31939         <webidl>    readonly attribute boolean readOnly;</webidl>
31940         <descriptive>
31941             <brief>
31942  The file/directory access state in the filesystem.
31943             </brief>
31944            <description>
31945             <p>
31946 <em>true</em> if object has read-only access at its location.
31947             </p>
31948             <p>
31949 <em>false</em> if object has write access at its location.
31950             </p>
31951             <p>
31952 This attribute represents the actual state of a
31953 file or directory in the filesystem. Its value is not affected by
31954 the mode used in FileSystemManager.resolve that was used to
31955 create the File object from which this File object was obtained.
31956             </p>
31957            </description>
31958             <version>
31959  1.0
31960             </version>
31961             <Code> // list directory contents
31962  dir.listFiles(onsuccess, onerror);
31963
31964  function onsuccess(files) {
31965    for(var i = 0; i &#60; files.length; i++) {
31966      if(files[i].readOnly)
31967        console.log(&quot;Cannot write to file &quot; + files[i].name);
31968      else
31969        console.log(&quot;Can write to file &quot; + files[i].name);
31970    }
31971  }
31972
31973  function onerror(error) {
31974    console.log(&quot;The error &quot; + error.message + &quot; occurred when listing the files in the selected folder&quot;);
31975  }
31976  </Code>
31977         </descriptive>
31978         <Type type="boolean"/>
31979       </Attribute>
31980       <Attribute readonly="readonly" name="isFile" id="::Filesystem::File::isFile">
31981         <webidl>    readonly attribute boolean isFile;</webidl>
31982         <descriptive>
31983             <brief>
31984  The file type.
31985             </brief>
31986            <description>
31987             <p>
31988 <em>true</em> if this handle is a file.
31989 <em>false</em> if this handle is a directory.
31990             </p>
31991            </description>
31992             <version>
31993  1.0
31994             </version>
31995         </descriptive>
31996         <Type type="boolean"/>
31997       </Attribute>
31998       <Attribute readonly="readonly" name="isDirectory" id="::Filesystem::File::isDirectory">
31999         <webidl>    readonly attribute boolean isDirectory;</webidl>
32000         <descriptive>
32001             <brief>
32002  The file type.
32003             </brief>
32004            <description>
32005             <p>
32006 <em>true</em> if this handle is a directory,
32007 <em>false</em> if this handle is a file.
32008             </p>
32009            </description>
32010             <version>
32011  1.0
32012             </version>
32013         </descriptive>
32014         <Type type="boolean"/>
32015       </Attribute>
32016       <Attribute readonly="readonly" name="created" id="::Filesystem::File::created">
32017         <webidl>    readonly attribute Date? created;</webidl>
32018         <descriptive>
32019             <brief>
32020  The creation timestamp of this file.
32021             </brief>
32022            <description>
32023             <p>
32024 This is the timestamp when the file was first created in the filesystem.
32025 Equivalent to the timestamp when a call to createFile() succeeds.
32026             </p>
32027             <p>
32028 If the platform does not support this attribute, it MUST
32029 be <em>null</em>.
32030             </p>
32031             <p>
32032 It is unspecified and platform-dependent if the creation
32033 timestamp changes when a file is moved.
32034             </p>
32035            </description>
32036             <version>
32037  1.0
32038             </version>
32039         </descriptive>
32040         <Type type="Date" nullable="nullable"/>
32041       </Attribute>
32042       <Attribute readonly="readonly" name="modified" id="::Filesystem::File::modified">
32043         <webidl>    readonly attribute Date? modified;</webidl>
32044         <descriptive>
32045             <brief>
32046  The modification timestamp.
32047             </brief>
32048            <description>
32049             <p>
32050 The modification timestamp of this file. This is the timestamp
32051 of the most recent modification to the file, usually when the last
32052 write operation succeeded. Opening a file for reading does not change
32053 the modification timestamp.
32054             </p>
32055             <p>
32056 If the platform does not support this attribute, it MUST
32057 be <em>null</em>.
32058             </p>
32059             <p>
32060 It is unspecified and platform-dependent if the modified
32061 timestamp changes when a file is moved.
32062             </p>
32063            </description>
32064             <version>
32065  1.0
32066             </version>
32067             <Code> console.log(file.modified); // displays the modification timestamp
32068  </Code>
32069         </descriptive>
32070         <Type type="Date" nullable="nullable"/>
32071       </Attribute>
32072       <Attribute readonly="readonly" name="path" id="::Filesystem::File::path">
32073         <webidl>    readonly attribute DOMString path;</webidl>
32074         <descriptive>
32075             <brief>
32076  The path of this file, excluding the file name.
32077             </brief>
32078            <description>
32079             <p>
32080 This is the path of this file, beginning with the name of the root containing the file,
32081 up to and including the directory containing the file, but excluding the file name.
32082             </p>
32083             <p>
32084 Except in a special case of the File representing the root itself, the last
32085 character is always the character '/'.
32086             </p>
32087             <p>
32088 For example, if a file is located at music/ramones/volume1/RockawayBeach.mp3,
32089 the path would be music/ramones/volume1/.
32090             </p>
32091             <p>
32092 For example, if a directory is located at music/ramones/volume1, the path would be
32093 music/ramones/.
32094             </p>
32095             <p>
32096 For the virtual roots, the path is same as the name of the virtual root. 
32097 For example, if the root is music, then the path is music. If the root is documents, then the path is documents.
32098             </p>
32099            </description>
32100             <version>
32101  1.0
32102             </version>
32103             <Code> console.log(file.path); // should be 'music/' if the file is music/foo.mp3
32104  </Code>
32105         </descriptive>
32106         <Type type="DOMString"/>
32107       </Attribute>
32108       <Attribute readonly="readonly" name="name" id="::Filesystem::File::name">
32109         <webidl>    readonly attribute DOMString name;</webidl>
32110         <descriptive>
32111             <brief>
32112  The file name, excluding any path components.
32113             </brief>
32114            <description>
32115             <p>
32116 This is the name of this file, excluding the root name and any other path components.
32117             </p>
32118             <p>
32119 For example, if a file is located at
32120 music/ramones/volume1/RockawayBeach.mp3, the name would be RockawayBeach.mp3.
32121             </p>
32122             <p>
32123 For example, if a directory is located at music/ramones/volume1, the
32124 name would be volume1.
32125             </p>
32126             <p>
32127 For the special case of the root itself, the name is an empty string.
32128             </p>
32129            </description>
32130             <version>
32131  1.0
32132             </version>
32133             <Code> console.log(file.name); // should be foo.mp3 if the file path is music/foo.mp3
32134  </Code>
32135         </descriptive>
32136         <Type type="DOMString"/>
32137       </Attribute>
32138       <Attribute readonly="readonly" name="fullPath" id="::Filesystem::File::fullPath">
32139         <webidl>    readonly attribute DOMString fullPath;</webidl>
32140         <descriptive>
32141             <brief>
32142  The full path of this file.
32143             </brief>
32144            <description>
32145             <p>
32146 The full path of this file, beginning with the name of the root containing the file,
32147 and including the name of the file or directory itself.
32148             </p>
32149             <p>
32150 For instance, for a file, if the file is located at
32151 music/ramones/volume1/RockawayBeach.mp3, then the fullPath is
32152 music/ramones/volume1/RockawayBeach.mp3.
32153             </p>
32154             <p>
32155 For a directory, if the directory is located at music/ramones/volume1, then the
32156 fullPath is music/ramones/volume1.
32157             </p>
32158             <p>
32159 For the special case of the root itself, if the root is music, then the fullPath is
32160 music.
32161             </p>
32162             <p>
32163 The fullPath is always equal to path + name.
32164             </p>
32165            </description>
32166             <version>
32167  1.0
32168             </version>
32169             <Code> console.log(file.fullPath); // should be music/track1.mp3 if the file is music/track1.mp3
32170  </Code>
32171         </descriptive>
32172         <Type type="DOMString"/>
32173       </Attribute>
32174       <Attribute readonly="readonly" name="fileSize" id="::Filesystem::File::fileSize">
32175         <webidl>    readonly attribute unsigned long long fileSize;</webidl>
32176         <descriptive>
32177             <brief>
32178  The size of this file, in bytes.
32179             </brief>
32180            <description>
32181             <p>
32182 If there's an attempt to read this attribute on a directory,
32183 <em>undefined</em> is returned. To retrieve the
32184 number of files and directories contained in the directory,
32185 use the length attribute, instead.
32186             </p>
32187            </description>
32188             <version>
32189  1.0
32190             </version>
32191             <Code> console.log(file.fileSize); // displays the file size
32192  </Code>
32193         </descriptive>
32194         <Type type="unsigned long long"/>
32195       </Attribute>
32196       <Attribute readonly="readonly" name="length" id="::Filesystem::File::length">
32197         <webidl>    readonly attribute long length;</webidl>
32198         <descriptive>
32199             <brief>
32200  The number of files and directories contained in this file handle.
32201             </brief>
32202            <description>
32203             <p>
32204 If there's an attempt to read this attribute on a file,
32205 <em>undefined</em> is returned. To retrieve the
32206 size of a file, use the fileSize attribute instead.
32207             </p>
32208            </description>
32209             <version>
32210  1.0
32211             </version>
32212             <Code> console.log(file.length); // '3' if the directory contains two files and one sub-directory
32213  </Code>
32214         </descriptive>
32215         <Type type="long"/>
32216       </Attribute>
32217       <Operation name="toURI" id="::Filesystem::File::toURI">
32218         <webidl>    DOMString toURI() raises(<ref>WebAPIException</ref>);</webidl>
32219         <descriptive>
32220             <brief>
32221  Returns a URI for the file.
32222             </brief>
32223            <description>
32224             <p>
32225 Returns a URI that can be used to identify this entry (such as using it
32226 as the src attribute on an HTML img element). The URI has no specific
32227 expiration, it should be valid at least as long as the file exists.
32228             </p>
32229             <p>
32230 When this method is invoked, the implementation MUST generate a URI.
32231             </p>
32232             <p>
32233 If that URI corresponds to any of the public virtual roots (that is
32234 images, videos, music, documents, and downloads) the URI
32235 MUST be globally unique and could be used by any widget.
32236             </p>
32237             <p>
32238 If that URI corresponds to a file located in any of the widget private
32239 areas (such as wgt-package, wgt-private, wgt-private-tmp). The generated
32240 URI MUST be unique for that file and for the widget making the request
32241 (such as including some derived from the widget id in the URI). 
32242 These URIs MUST NOT be accessible to other widgets,
32243 apart from the one invoking this method.
32244             </p>
32245            </description>
32246             <version>
32247  1.0
32248             </version>
32249             <privilegelevel>
32250  public
32251             </privilegelevel>
32252             <privilege>
32253  http://tizen.org/privilege/filesystem.read
32254             </privilege>
32255             <Code> // 'file:///opt/usr/media/music/ramones/RockawayBeach.mp3' if the file is
32256  // music/ramones/RockawayBeach.mp3
32257  console.log(file.toURI());
32258  </Code>
32259         </descriptive>
32260         <Type type="DOMString">
32261           <descriptive>
32262               <description><p>
32263  DOMString The URI that identifies the file or <em>null</em> if an error occurs.
32264               </p></description>
32265           </descriptive>
32266         </Type>
32267         <ArgumentList/>
32268         <Raises>
32269           <RaiseException name="WebAPIException">
32270             <descriptive>
32271                 <description><p>
32272  with error type NotSupportedError, if the feature is not supported.
32273                 </p></description>
32274                 <description><p>
32275  with error type SecurityError, if the application does not have the privilege to call this method.
32276                 </p></description>
32277                 <description><p>
32278  with error type UnknownError in any other error situation.     
32279                 </p></description>
32280             </descriptive>
32281           </RaiseException>
32282         </Raises>
32283       </Operation>
32284       <Operation name="listFiles" id="::Filesystem::File::listFiles">
32285         <webidl>    void listFiles(<ref>FileArraySuccessCallback</ref> onsuccess,
32286                    optional <ref>ErrorCallback</ref>? onerror,
32287                    optional <ref>FileFilter</ref>? filter) raises(<ref>WebAPIException</ref>);</webidl>
32288         <descriptive>
32289             <brief>
32290  Returns the list of all files in this directory.
32291             </brief>
32292            <description>
32293             <p>
32294 The list of files will be passed as a File[] in the onsuccess
32295 and contains directories and files. However, the directories &quot;.&quot; and &quot;..&quot;
32296 MUST NOT be returned. Each File object part of the array MUST inherit
32297 all the access rights (that is one of the values in FileMode) from the File object in which
32298 this method was invoked.
32299             </p>
32300             <p>
32301 If the filter is passed and contains valid values, only those directories
32302 and files in the directory that match the filter criteria specified
32303 in the FileFilter interface MUST be returned in the onsuccess.
32304 If no filter is passed, the filter is <em>null</em> or undefined, or the filter contains invalid
32305 values, the implementation MUST return the full list of files in the directory.
32306             </p>
32307             <p>
32308 If the directory does not contain any files or directories, or
32309 the filter criteria is unmatched to any files or directories, the onsuccess will be
32310 invoked with an empty array.
32311             </p>
32312             <p>
32313 The ErrorCallback is launched with these error types:
32314             </p>
32315             <ul>
32316               <li>
32317 IOError: The operation is launched on a file (not a directory).              </li>
32318               <li>
32319 InvalidValuesError: If any of the input parameters contain an invalid value.              </li>
32320               <li>
32321 UnknownError: In any other error case.               </li>
32322             </ul>
32323            </description>
32324             <version>
32325  1.0
32326             </version>
32327             <privilegelevel>
32328  public
32329             </privilegelevel>
32330             <privilege>
32331  http://tizen.org/privilege/filesystem.read
32332             </privilege>
32333             <Code> function onsuccess(files) {
32334    console.log(&quot;There are &quot; + files.length  + &quot; in the selected folder&quot;);
32335  }
32336
32337  function onerror(error) {
32338    console.log(&quot;The error &quot; + error.message + &quot; occurred when listing the files in the selected folder&quot;);
32339  }
32340
32341  tizen.filesystem.resolve(
32342      &quot;documents&quot;,
32343      function(dir){
32344        dir.listFiles(onsuccess, onerror);
32345      }, function(e){
32346        console.log(&quot;Error &quot; + e.message);
32347      }, &quot;r&quot;
32348  );
32349  </Code>
32350         </descriptive>
32351         <Type type="void"/>
32352         <ArgumentList>
32353           <Argument name="onsuccess">
32354             <descriptive>
32355                 <description><p>
32356  Called when the list operation has been successfully completed.
32357                 </p></description>
32358             </descriptive>
32359             <Type name="FileArraySuccessCallback"/>
32360           </Argument>
32361           <Argument optional="optional" name="onerror">
32362             <descriptive>
32363                 <description><p>
32364  Called if an error occurred.
32365                 </p></description>
32366             </descriptive>
32367             <Type name="ErrorCallback" nullable="nullable"/>
32368           </Argument>
32369           <Argument optional="optional" name="filter">
32370             <descriptive>
32371                 <description><p>
32372  Used to restrict the listed files.
32373                 </p></description>
32374             </descriptive>
32375             <Type name="FileFilter" nullable="nullable"/>
32376           </Argument>
32377         </ArgumentList>
32378         <Raises>
32379           <RaiseException name="WebAPIException">
32380             <descriptive>
32381                 <description><p>
32382  with error type TypeMismatchError, if the input parameter
32383 is not compatible with the expected type for that parameter.
32384                 </p></description>
32385                 <description><p>
32386  with error type SecurityError, if the application does not have the privilege to call this method.
32387                 </p></description>
32388                 <description><p>
32389  with error type NotSupportedError, if the feature is not supported.
32390                 </p></description>
32391             </descriptive>
32392           </RaiseException>
32393         </Raises>
32394       </Operation>
32395       <Operation name="openStream" id="::Filesystem::File::openStream">
32396         <webidl>    void openStream(<ref>FileMode</ref> mode,
32397                     <ref>FileStreamSuccessCallback</ref> onsuccess,
32398                     optional <ref>ErrorCallback</ref>? onerror,
32399                     optional DOMString? encoding) raises(<ref>WebAPIException</ref>);</webidl>
32400         <descriptive>
32401             <brief>
32402  Opens the file in the given mode supporting the given
32403 encoding.
32404             </brief>
32405            <description>
32406             <p>
32407 This operation is performed asynchronously. If the file is opened
32408 successfully, the onsuccess is invoked with a FileStream
32409 that can be used for reading and writing the file, depending on the
32410 mode. The return FileStream instance includes a file pointer, which represents
32411 the current position in the file. The filepointer will, by default, be at the start of the file,
32412 except in the case of opening with append (&quot;a&quot;) mode, in which case
32413 the filepointer points to the end of the file.
32414             </p>
32415             <p>
32416 The ErrorCallback is launched with these error types:
32417             </p>
32418             <ul>
32419               <li>
32420 InvalidValuesError: If any of the input parameters contains an invalid value.               </li>
32421               <li>
32422 IOError: The operation is launched on a directory (not a file), the file is not
32423 valid or it does not exist.              </li>
32424               <li>
32425 UnknownError: In any other error case.              </li>
32426             </ul>
32427            </description>
32428             <version>
32429  1.0
32430             </version>
32431             <privilegelevel>
32432  public
32433             </privilegelevel>
32434             <privilege>
32435  http://tizen.org/privilege/filesystem.read
32436             </privilege>
32437             <Code> var documentsDir;
32438  function onsuccess(files) {
32439    for(var i = 0; i &#60; files.length; i++) {
32440      console.log(&quot;File Name is &quot; + files[i].name); // displays file name
32441    }
32442
32443    var testFile = documentsDir.createFile(&quot;test.txt&quot;);
32444    if (testFile != null) {
32445      testFile.openStream(
32446          &quot;w&quot;,
32447          function(fs){
32448            fs.write(&quot;HelloWorld&quot;);
32449            fs.close();
32450          }, function(e){
32451            console.log(&quot;Error &quot; + e.message);
32452          }, &quot;UTF-8&quot;
32453      );
32454    }
32455  }
32456
32457  function onerror(error) {
32458    console.log(&quot;The error &quot; + error.message + &quot; occurred when listing the files in the selected folder&quot;);
32459  }
32460
32461  tizen.filesystem.resolve(
32462      'documents',
32463      function(dir){
32464        documentsDir = dir; dir.listFiles(onsuccess,onerror);
32465      }, function(e) {
32466        console.log(&quot;Error&quot; + e.message);
32467      }, &quot;rw&quot;
32468  );
32469  </Code>
32470         </descriptive>
32471         <Type type="void"/>
32472         <ArgumentList>
32473           <Argument name="mode">
32474             <descriptive>
32475                 <description><p>
32476  The mode for opening a file:
32477 <b>&quot;r&quot;</b> for reading
32478 <b>&quot;a&quot;</b> for appending
32479 <b>&quot;w&quot;</b> for [over]writing
32480 <b>&quot;rw&quot;</b> for reading and writing
32481                 </p></description>
32482             </descriptive>
32483             <Type name="FileMode"/>
32484           </Argument>
32485           <Argument name="onsuccess">
32486             <descriptive>
32487                 <description><p>
32488  Called when the file has been opened.
32489                 </p></description>
32490             </descriptive>
32491             <Type name="FileStreamSuccessCallback"/>
32492           </Argument>
32493           <Argument optional="optional" name="onerror">
32494             <descriptive>
32495                 <description><p>
32496  Called if an error occurred.
32497                 </p></description>
32498             </descriptive>
32499             <Type name="ErrorCallback" nullable="nullable"/>
32500           </Argument>
32501           <Argument optional="optional" name="encoding">
32502             <descriptive>
32503                 <description><p>
32504  The encoding for read/write operations on the file,
32505 at least the following encodings MUST be supported:
32506 &quot;<a href="http://www.ietf.org/rfc/rfc2279.txt">UTF-8</a>&quot; default encoding,
32507 &quot;<a href="http://en.wikipedia.org/wiki/ISO/IEC_8859-1">ISO-8859-1</a>&quot; latin1 encoding.
32508 If no encoding is passed by the developer, then the default platform encoding
32509 MUST be used.
32510                 </p></description>
32511             </descriptive>
32512             <Type type="DOMString" nullable="nullable"/>
32513           </Argument>
32514         </ArgumentList>
32515         <Raises>
32516           <RaiseException name="WebAPIException">
32517             <descriptive>
32518                 <description><p>
32519  with error type TypeMismatchError, if the input parameter
32520 is not compatible with the expected type for that parameter.
32521                 </p></description>
32522                 <description><p>
32523  with error type SecurityError, if the application does not have the privilege to call this method.
32524                 </p></description>
32525                 <description><p>
32526  with error type NotSupportedError, if the feature is not supported.
32527                 </p></description>
32528             </descriptive>
32529           </RaiseException>
32530         </Raises>
32531       </Operation>
32532       <Operation name="readAsText" id="::Filesystem::File::readAsText">
32533         <webidl>    void readAsText(<ref>FileStringSuccessCallback</ref> onsuccess,
32534                     optional <ref>ErrorCallback</ref>? onerror,
32535                     optional DOMString? encoding) raises(<ref>WebAPIException</ref>);</webidl>
32536         <descriptive>
32537             <brief>
32538  Reads the content of a file as a DOMString.
32539             </brief>
32540            <description>
32541             <p>
32542 If the operation is successfully executed, the onsuccess is
32543 invoked and a DOMString is passed as input parameter that represents
32544 the file content in the format determined by the encoding parameter.
32545             </p>
32546             <p>
32547 The ErrorCallback is launched with these error types:
32548             </p>
32549             <ul>
32550               <li>
32551 InvalidValuesError: If any of the input parameters contain an invalid value.              </li>
32552               <li>
32553 IOError: The operation is launched on a directory (not a file), the file is not
32554 valid, or the file does not exist.              </li>
32555               <li>
32556 UnknownError: In any other error case.              </li>
32557             </ul>
32558            </description>
32559             <version>
32560  1.0
32561             </version>
32562             <privilegelevel>
32563  public
32564             </privilegelevel>
32565             <privilege>
32566  http://tizen.org/privilege/filesystem.read
32567             </privilege>
32568             <Code> function onsuccess(files) {
32569    for(var i = 0; i &#60; files.length; i++) {
32570      console.log(&quot;File Name is &quot; + files[i].name); // displays file name
32571      if (files[i].isDirectory == false)
32572        files[i].readAsText(
32573            function(str){
32574              console.log(&quot;The file content &quot; + str);
32575            }, function(e){
32576              console.log(&quot;Error &quot; + e.message);
32577            }, &quot;UTF-8&quot;
32578        );
32579    }
32580  }
32581
32582  function onerror(error) {
32583    console.log(&quot;The error &quot; + error.message + &quot; occurred when listing the files in the selected folder&quot;);
32584  }
32585
32586  var documentsDir;
32587  tizen.filesystem.resolve(
32588      'documents', 
32589      function(dir){
32590        documentsDir = dir;
32591        dir.listFiles(onsuccess,onerror);
32592      }, function(e) {
32593        console.log(&quot;Error&quot; + e.message);
32594      }, &quot;rw&quot;
32595  );
32596  </Code>
32597         </descriptive>
32598         <Type type="void"/>
32599         <ArgumentList>
32600           <Argument name="onsuccess">
32601             <descriptive>
32602                 <description><p>
32603  Called when the file has been successfully read.
32604                 </p></description>
32605             </descriptive>
32606             <Type name="FileStringSuccessCallback"/>
32607           </Argument>
32608           <Argument optional="optional" name="onerror">
32609             <descriptive>
32610                 <description><p>
32611  If an error occurs while reading the file.
32612                 </p></description>
32613             </descriptive>
32614             <Type name="ErrorCallback" nullable="nullable"/>
32615           </Argument>
32616           <Argument optional="optional" name="encoding">
32617             <descriptive>
32618                 <description><p>
32619  The encoding for read/write operations on the file,
32620 at least the following encodings MUST be supported:
32621 &quot;<a href="http://www.ietf.org/rfc/rfc2279.txt">UTF-8</a>&quot; default encoding,
32622 &quot;<a href="http://en.wikipedia.org/wiki/ISO/IEC_8859-1">ISO-8859-1</a>&quot; latin1 encoding.
32623 If no encoding is passed by the developer, then the default platform
32624 encoding MUST be used.
32625                 </p></description>
32626             </descriptive>
32627             <Type type="DOMString" nullable="nullable"/>
32628           </Argument>
32629         </ArgumentList>
32630         <Raises>
32631           <RaiseException name="WebAPIException">
32632             <descriptive>
32633                 <description><p>
32634  with error type TypeMismatchError, if the input parameter
32635 is not compatible with the expected type for that parameter.
32636                 </p></description>
32637                 <description><p>
32638  with error type SecurityError, if the application does not have the privilege to call this method.
32639                 </p></description>
32640                 <description><p>
32641  with error type NotSupportedError, if the feature is not supported.
32642                 </p></description>
32643             </descriptive>
32644           </RaiseException>
32645         </Raises>
32646       </Operation>
32647       <Operation name="copyTo" id="::Filesystem::File::copyTo">
32648         <webidl>    void copyTo(DOMString originFilePath,
32649                 DOMString destinationFilePath,
32650                 boolean overwrite,
32651                 optional <ref>SuccessCallback</ref>? onsuccess,
32652                 optional <ref>ErrorCallback</ref>? onerror) raises(<ref>WebAPIException</ref>);</webidl>
32653         <descriptive>
32654             <brief>
32655  Copies (and overwrites if possible and specified) a file or a
32656 directory from a specified location to another specified location.
32657             </brief>
32658            <description>
32659             <p>
32660 The copy of the file or directory identified by the originFilePath parameter
32661 MUST be created in the path passed in the destinationFilePath parameter.
32662             </p>
32663             <p>
32664 The file or directory to be copied MUST be under the Directory from which the method
32665 is invoked, otherwise the operation MUST NOT be performed.
32666             </p>
32667             <p>
32668 If the copy is performed successfully, the onsuccess is invoked.
32669             </p>
32670             <p>
32671 The ErrorCallback is launched with these error types:
32672             </p>
32673             <ul>
32674               <li>
32675 InvalidValuesError: If any of the input parameters contain an invalid value.              </li>
32676               <li>
32677 NotFoundError: originFilePath does not correspond to a valid file or destinationPath is not a valid path.              </li>
32678               <li>
32679 IOError: The File in which the copyTo method is invoked is a file (not a directory), 
32680 originFilePath corresponds to a file or directory in use by another process,
32681 overwrite parameter is <em>false</em> and destinationFilePath corresponds to an existing
32682 file or directory.              </li>
32683               <li>
32684 UnknownError: In any other error case.              </li>
32685             </ul>
32686            </description>
32687             <version>
32688  1.0
32689             </version>
32690             <privilegelevel>
32691  public
32692             </privilegelevel>
32693             <privilege>
32694  http://tizen.org/privilege/filesystem.write
32695             </privilege>
32696             <Code> var documentsDir;
32697  function onsuccess(files) {
32698    for(var i = 0; i &#60; files.length; i++) {
32699      if (files[i].isDirectory == false) {
32700        documentsDir.copyTo(files[i].fullPath,
32701                            &quot;images/backup/&quot; + files[i].name,
32702                            false,
32703                            function(){console.log(&quot;file copied&quot;);});
32704      }
32705    }
32706  }
32707
32708  function onerror(error) {
32709    console.log(&quot;The error &quot; + error.message +
32710                &quot; occurred when listing the files in the selected folder&quot;);
32711  }
32712
32713  tizen.filesystem.resolve(
32714      'documents', 
32715      function(dir){
32716        documentsDir = dir;
32717        dir.listFiles(onsuccess, onerror);
32718      }, function(e) {
32719        console.log(&quot;Error&quot; + e.message);
32720      }, &quot;rw&quot;
32721  );
32722  </Code>
32723         </descriptive>
32724         <Type type="void"/>
32725         <ArgumentList>
32726           <Argument name="originFilePath">
32727             <descriptive>
32728                 <description><p>
32729  The origin full virtual file or directory path, it must be under the current directory.
32730                 </p></description>
32731             </descriptive>
32732             <Type type="DOMString"/>
32733           </Argument>
32734           <Argument name="destinationFilePath">
32735             <descriptive>
32736                 <description><p>
32737  The new full virtual file path or directory path.
32738                 </p></description>
32739             </descriptive>
32740             <Type type="DOMString"/>
32741           </Argument>
32742           <Argument name="overwrite">
32743             <descriptive>
32744                 <description><p>
32745  <em>true</em> enforces overwriting an existing file.
32746                 </p></description>
32747             </descriptive>
32748             <Type type="boolean"/>
32749           </Argument>
32750           <Argument optional="optional" name="onsuccess">
32751             <descriptive>
32752                 <description><p>
32753  Called when the file has been copied.
32754                 </p></description>
32755             </descriptive>
32756             <Type name="SuccessCallback" nullable="nullable"/>
32757           </Argument>
32758           <Argument optional="optional" name="onerror">
32759             <descriptive>
32760                 <description><p>
32761  Called if an error occurred.
32762                 </p></description>
32763             </descriptive>
32764             <Type name="ErrorCallback" nullable="nullable"/>
32765           </Argument>
32766         </ArgumentList>
32767         <Raises>
32768           <RaiseException name="WebAPIException">
32769             <descriptive>
32770                 <description><p>
32771  with error type TypeMismatchError, if the input parameter
32772 is not compatible with the expected type for that parameter.
32773                 </p></description>
32774                 <description><p>
32775  with error type SecurityError, if the application does not have the privilege to call this method.
32776                 </p></description>
32777                 <description><p>
32778  with error type NotSupportedError, if the feature is not supported.
32779                 </p></description>
32780             </descriptive>
32781           </RaiseException>
32782         </Raises>
32783       </Operation>
32784       <Operation name="moveTo" id="::Filesystem::File::moveTo">
32785         <webidl>    void moveTo(DOMString originFilePath,
32786                 DOMString destinationFilePath,
32787                 boolean overwrite,
32788                 optional <ref>SuccessCallback</ref>? onsuccess,
32789                 optional <ref>ErrorCallback</ref>? onerror) raises(<ref>WebAPIException</ref>);</webidl>
32790         <descriptive>
32791             <brief>
32792  Moves a file or a directory from a specified location to another.
32793             </brief>
32794            <description>
32795             <p>
32796 The file or directory will be moved (and will overwrite if possible and specified)
32797 atomically to the given path. This operation is different from 
32798 instantiating copyTo and then deleting the original file, as on certain
32799 platforms, this operation does not require extra disk space.
32800             </p>
32801             <p>
32802 The file or directory identified by the originFilePath parameter
32803 MUST be moved to the path passed in the destinationFilePath parameter.
32804             </p>
32805             <p>
32806 The file to be moved MUST be under the Directory from which the method
32807 is invoked, otherwise the operation MUST NOT be performed.
32808             </p>
32809             <p>
32810 If the file or directory is moved successfully, the onsuccess is
32811 invoked.
32812             </p>
32813             <p>
32814 The ErrorCallback is launched with these error types:
32815             </p>
32816             <ul>
32817               <li>
32818 InvalidValuesError: If any of the input parameters contain an invalid value.               </li>
32819               <li>
32820 NotFoundError: originFilePath does not correspond to a valid file or destinationPath is not a valid path.              </li>
32821               <li>
32822 IOError: The File in which the moveTo method is invoked is a file (not a directory),
32823 originFilePath corresponds to a file or directory in use by another process,
32824 overwrite parameter is <em>false</em> and destinationFilePath corresponds to an existing
32825 file or directory.              </li>
32826               <li>
32827 UnknownError: In any other error case.              </li>
32828             </ul>
32829            </description>
32830             <version>
32831  1.0
32832             </version>
32833             <privilegelevel>
32834  public
32835             </privilegelevel>
32836             <privilege>
32837  http://tizen.org/privilege/filesystem.write
32838             </privilege>
32839             <Code> var documentsDir;
32840  function onsuccess(files) {
32841    for(var i = 0; i &#60; files.length; i++) {
32842      if (files[i].isDirectory == false) {
32843        documentsDir.moveTo(files[i].fullPath,
32844                            &quot;images/newFolder/&quot; + files[i].name,
32845                            false,
32846                            function(){console.log(&quot;file moved&quot;);});
32847      }
32848    }
32849  }
32850
32851  function onerror(error) {
32852    console.log(&quot;The error &quot; + error.message +
32853                &quot; occurred during listing the files in the selected folder&quot;);
32854  }
32855
32856  tizen.filesystem.resolve(
32857      'documents', 
32858      function(dir){
32859        documentsDir = dir;
32860        dir.listFiles(onsuccess, onerror);
32861      }, function(e) {
32862        console.log(&quot;Error&quot; + e.message);
32863      }, &quot;rw&quot;
32864  );
32865  </Code>
32866         </descriptive>
32867         <Type type="void"/>
32868         <ArgumentList>
32869           <Argument name="originFilePath">
32870             <descriptive>
32871                 <description><p>
32872  The origin full virtual file or directory path, it must be under the current directory.
32873                 </p></description>
32874             </descriptive>
32875             <Type type="DOMString"/>
32876           </Argument>
32877           <Argument name="destinationFilePath">
32878             <descriptive>
32879                 <description><p>
32880  The new full virtual file path or directory path.
32881                 </p></description>
32882             </descriptive>
32883             <Type type="DOMString"/>
32884           </Argument>
32885           <Argument name="overwrite">
32886             <descriptive>
32887                 <description><p>
32888  <em>true</em> enforces overwriting an existing file.
32889                 </p></description>
32890             </descriptive>
32891             <Type type="boolean"/>
32892           </Argument>
32893           <Argument optional="optional" name="onsuccess">
32894             <descriptive>
32895                 <description><p>
32896  Called when the file has been moved.
32897                 </p></description>
32898             </descriptive>
32899             <Type name="SuccessCallback" nullable="nullable"/>
32900           </Argument>
32901           <Argument optional="optional" name="onerror">
32902             <descriptive>
32903                 <description><p>
32904  Called if an error occurred.
32905                 </p></description>
32906             </descriptive>
32907             <Type name="ErrorCallback" nullable="nullable"/>
32908           </Argument>
32909         </ArgumentList>
32910         <Raises>
32911           <RaiseException name="WebAPIException">
32912             <descriptive>
32913                 <description><p>
32914  with error type TypeMismatchError, if the input parameter
32915 is not compatible with the expected type for that parameter.
32916                 </p></description>
32917                 <description><p>
32918  with error type SecurityError, if the application does not have the privilege to call this method.
32919                 </p></description>
32920                 <description><p>
32921  with error type NotSupportedError, if the feature is not supported.
32922                 </p></description>
32923             </descriptive>
32924           </RaiseException>
32925         </Raises>
32926       </Operation>
32927       <Operation name="createDirectory" id="::Filesystem::File::createDirectory">
32928         <webidl>    <ref>File</ref> createDirectory(DOMString dirPath) raises(<ref>WebAPIException</ref>);</webidl>
32929         <descriptive>
32930             <brief>
32931  Creates a new directory.
32932             </brief>
32933            <description>
32934             <p>
32935 A new directory will be created relative to the current
32936 directory that this operation is performed on. The implementation will attempt to
32937 create all necessary sub-directories specified in the dirPath, as well. The use of &quot;.&quot;
32938 or &quot;..&quot; in path components is not supported.
32939             </p>
32940             <p>
32941 This operation can only be performed on file handlers that
32942 represent a directory (that is, <var>isDirectory == true</var>).
32943             </p>
32944             <p>
32945 If the directory is successfully created, it will be returned.
32946             </p>
32947             <p>
32948 In case the directory cannot be created, an error MUST be thrown
32949 with the appropriate error type.
32950             </p>
32951            </description>
32952             <version>
32953  1.0
32954             </version>
32955             <privilegelevel>
32956  public
32957             </privilegelevel>
32958             <privilege>
32959  http://tizen.org/privilege/filesystem.write
32960             </privilege>
32961             <Code> var dir; //Directory object obtained from filesystem API
32962  var newDir = dir.createDirectory(&quot;newDir&quot;);
32963  var anotherNewDir = dir.createDirectory(&quot;newDir1/subNewDir1&quot;);
32964  </Code>
32965         </descriptive>
32966         <Type name="File">
32967           <descriptive>
32968               <description><p>
32969  File The file handle of the new directory. The new File object
32970 will have &quot;rw&quot; access rights, as it inherits this from
32971 the File object on which the createDirectory() method is
32972 called.
32973               </p></description>
32974           </descriptive>
32975         </Type>
32976         <ArgumentList>
32977           <Argument name="dirPath">
32978             <descriptive>
32979                 <description><p>
32980  The relative directory path, it should only contain
32981 characters supported by the underlying filesystem.
32982                 </p></description>
32983             </descriptive>
32984             <Type type="DOMString"/>
32985           </Argument>
32986         </ArgumentList>
32987         <Raises>
32988           <RaiseException name="WebAPIException">
32989             <descriptive>
32990                 <description><p>
32991  with error type IOError, if the dirPath already exists.
32992                 </p></description>
32993                 <description><p>
32994  with error type InvalidValuesError, if the dirPath does not contain a valid path.
32995                 </p></description>
32996                 <description><p>
32997  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
32998                 </p></description>
32999                 <description><p>
33000  with error type SecurityError, if the application does not have the privilege to call this method.
33001                 </p></description>
33002                 <description><p>
33003  with error type NotSupportedError, if the feature is not supported.
33004                 </p></description>
33005                 <description><p>
33006  with error type UnknownError in any other error case.     
33007                 </p></description>
33008             </descriptive>
33009           </RaiseException>
33010         </Raises>
33011       </Operation>
33012       <Operation name="createFile" id="::Filesystem::File::createFile">
33013         <webidl>    <ref>File</ref> createFile(DOMString relativeFilePath) raises(<ref>WebAPIException</ref>);</webidl>
33014         <descriptive>
33015             <brief>
33016  Creates a new empty file in a specified location.
33017             </brief>
33018            <description>
33019             <p>
33020 A new empty file is created in the given path relative
33021 to the directory indicated by current 'File' object's 'path' attribute.
33022 The use of &quot;.&quot; or &quot;..&quot; in path components is not supported.
33023 This operation can only be performed on file handlers that
33024 represent a directory (that is, <var>isDirectory == true</var>).
33025             </p>
33026             <p>
33027 If the file is successfully created, a file handler MUST
33028 be returned by this method.
33029             </p>
33030             <p>
33031 In case the file cannot be created, an error MUST be thrown
33032 with the appropriate error type.
33033             </p>
33034            </description>
33035             <version>
33036  1.0
33037             </version>
33038             <privilegelevel>
33039  public
33040             </privilegelevel>
33041             <privilege>
33042  http://tizen.org/privilege/filesystem.write
33043             </privilege>
33044             <Code> var newFile = dir.createFile(&quot;newFilePath&quot;);
33045  </Code>
33046         </descriptive>
33047         <Type name="File">
33048           <descriptive>
33049               <description><p>
33050  File The file handle of the new empty file. The new File object
33051 will have &quot;rw&quot; access rights, as it inherits this from
33052 the File object on which the createFile() method is
33053 called.
33054               </p></description>
33055           </descriptive>
33056         </Type>
33057         <ArgumentList>
33058           <Argument name="relativeFilePath">
33059             <descriptive>
33060                 <description><p>
33061  The new file path, it should only contain characters supported by the underlying filesystem.
33062                 </p></description>
33063             </descriptive>
33064             <Type type="DOMString"/>
33065           </Argument>
33066         </ArgumentList>
33067         <Raises>
33068           <RaiseException name="WebAPIException">
33069             <descriptive>
33070                 <description><p>
33071  with error type IOError, if the filePath already exists.
33072                 </p></description>
33073                 <description><p>
33074  with error type InvalidValuesError, if the filePath contains an invalid value.
33075                 </p></description>
33076                 <description><p>
33077  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
33078                 </p></description>
33079                 <description><p>
33080  with error type SecurityError, if the application does not have the privilege to call this method.
33081                 </p></description>
33082                 <description><p>
33083  with error type NotSupportedError, if the feature is not supported.
33084                 </p></description>
33085                 <description><p>
33086  with error type UnknownError, in any other error case.     
33087                 </p></description>
33088             </descriptive>
33089           </RaiseException>
33090         </Raises>
33091       </Operation>
33092       <Operation name="resolve" id="::Filesystem::File::resolve">
33093         <webidl>    <ref>File</ref> resolve(DOMString filePath) raises(<ref>WebAPIException</ref>);</webidl>
33094         <descriptive>
33095             <brief>
33096  Resolves an existing file or directory relative to
33097 the current directory this operation is performed on, and
33098 returns a file handle for it.
33099             </brief>
33100            <description>
33101             <p>
33102 The filePath is not allowed to contain the &quot;.&quot; or &quot;..&quot; directories.
33103             </p>
33104             <p>
33105 The encoding of file paths is <a href="http://www.ietf.org/rfc/rfc2279.txt">UTF-8</a>.
33106             </p>
33107            </description>
33108             <version>
33109  1.0
33110             </version>
33111             <privilegelevel>
33112  public
33113             </privilegelevel>
33114             <privilege>
33115  http://tizen.org/privilege/filesystem.read
33116             </privilege>
33117             <Code> var file;
33118  // Resolves helloWorld.doc file that is located in the
33119  // documents root location
33120  tizen.filesystem.resolve(
33121    'documents', 
33122    function(dir){ file = dir.resolve(&quot;helloWorld.doc&quot;);},
33123    function(e){ console.log(&quot;Error&quot; + e.message);},
33124    &quot;rw&quot;);
33125  </Code>
33126         </descriptive>
33127         <Type name="File">
33128           <descriptive>
33129               <description><p>
33130  File The file handle of the file. The new File object will inherit its access
33131 rights from the File object on which this resolve() method
33132 is called.
33133               </p></description>
33134           </descriptive>
33135         </Type>
33136         <ArgumentList>
33137           <Argument name="filePath">
33138             <descriptive>
33139                 <description><p>
33140  The relative file/directory path/file URI to resolve.
33141                 </p></description>
33142             </descriptive>
33143             <Type type="DOMString"/>
33144           </Argument>
33145         </ArgumentList>
33146         <Raises>
33147           <RaiseException name="WebAPIException">
33148             <descriptive>
33149                 <description><p>
33150  with error type TypeMismatchError, if the input parameter
33151 is not compatible with the expected type for that parameter.
33152                 </p></description>
33153                 <description><p>
33154  with error type InvalidValuesError, if the file path contains an
33155 invalid value.
33156                 </p></description>
33157                 <description><p>
33158  with error type IOError, if the method is executed in a File object
33159 that does not represent a directory (that is, isDirectory attribute is false).
33160                 </p></description>
33161                 <description><p>
33162  with error type NotFoundError, if a file does not exist for the passed
33163 file path.
33164                 </p></description>
33165                 <description><p>
33166  with error type SecurityError, if the application does not have the privilege to call this method.
33167                 </p></description>
33168                 <description><p>
33169  with error type NotSupportedError, if the feature is not supported.
33170                 </p></description>
33171                 <description><p>
33172  with error type UnknownError in any other error case.     
33173                 </p></description>
33174             </descriptive>
33175           </RaiseException>
33176         </Raises>
33177       </Operation>
33178       <Operation name="deleteDirectory" id="::Filesystem::File::deleteDirectory">
33179         <webidl>    void deleteDirectory(DOMString directoryPath,
33180                          boolean recursive,
33181                          optional <ref>SuccessCallback</ref>? onsuccess,
33182                          optional <ref>ErrorCallback</ref>? onerror) raises(<ref>WebAPIException</ref>);</webidl>
33183         <descriptive>
33184             <brief>
33185  Deletes a specified directory and directory tree if specified.
33186             </brief>
33187            <description>
33188             <p>
33189 This function attempts to asynchronously delete a directory or directory tree under the current
33190 directory.
33191             </p>
33192             <p>
33193 If the recursive parameter is set to <em>true</em>, all the directories and files under the specified
33194 directory MUST be deleted. If the recursive parameter is set to false, the directory will
33195 only be deleted if it is empty, otherwise an IOError error type will be passed in onerror.
33196             </p>
33197             <p>
33198 The directory to be deleted MUST be under the Directory that the method
33199 is invoked from, otherwise the operation MUST NOT be performed.
33200 If the deletion is performed successfully, the onsuccess is invoked.
33201             </p>
33202             <p>
33203 The ErrorCallback is launched with these error types:
33204             </p>
33205             <ul>
33206               <li>
33207 InvalidValuesError: If any of the input parameters contain an invalid value.               </li>
33208               <li>
33209 NotFoundError: The passed directory does not correspond to a valid directory.               </li>
33210               <li>
33211 IOError: The File in which the delete method is invoked
33212 is a file (not a directory), the directory is in use by another process
33213 or the directory is not empty and recursive argument is <em>false</em>.
33214 This code will be also used if a recursive deletion partially fails
33215 and any data deleted so far cannot be recovered. This may occur
33216 due to the lack of filesystem permissions or if any
33217 directories or files are opened by other processes.              </li>
33218               <li>
33219 UnknownError: In any other error case.              </li>
33220             </ul>
33221            </description>
33222             <version>
33223  1.0
33224             </version>
33225             <privilegelevel>
33226  public
33227             </privilegelevel>
33228             <privilege>
33229  http://tizen.org/privilege/filesystem.write
33230             </privilege>
33231             <Code> var documentsDir;
33232  function onsuccess(files) {
33233    for(var i = 0; i &#60; files.length; i++) {
33234      if (files[i].isDirectory) {
33235        documentsDir.deleteDirectory(
33236            files[i].fullPath,
33237            false,
33238            function(){
33239              console.log(&quot;Directory Deleted&quot;);
33240            }, function(e) {
33241              console.log(&quot;Error&quot; + e.message);
33242            });
33243      } else {
33244        documentsDir.deleteFile(
33245            files[i].fullPath,
33246            function(){
33247              console.log(&quot;File Deleted&quot;);
33248            }, function(e) {
33249              console.log(&quot;Error&quot; + e.message);
33250            });
33251      }
33252    }
33253  }
33254
33255  function onerror(error) {
33256    console.log(&quot;The error &quot; + error.message + &quot; occurred when listing the files in the selected folder&quot;);
33257  }
33258
33259  tizen.filesystem.resolve(
33260      'documents', 
33261      function(dir){
33262        documentsDir = dir;
33263        dir.listFiles(onsuccess,onerror);
33264      }, function(e) {
33265        console.log(&quot;Error&quot; + e.message);
33266      }, &quot;rw&quot;
33267  );
33268  </Code>
33269         </descriptive>
33270         <Type type="void"/>
33271         <ArgumentList>
33272           <Argument name="directoryPath">
33273             <descriptive>
33274                 <description><p>
33275  The full virtual path to the directory to be deleted (must be under the current one).
33276                 </p></description>
33277             </descriptive>
33278             <Type type="DOMString"/>
33279           </Argument>
33280           <Argument name="recursive">
33281             <descriptive>
33282                 <description><p>
33283  <em>true</em> means a recursive deletion. This
33284 will delete all data in all subdirectories. Use with caution.
33285                 </p></description>
33286             </descriptive>
33287             <Type type="boolean"/>
33288           </Argument>
33289           <Argument optional="optional" name="onsuccess">
33290             <descriptive>
33291                 <description><p>
33292  Called if the directory is successfully deleted.
33293                 </p></description>
33294             </descriptive>
33295             <Type name="SuccessCallback" nullable="nullable"/>
33296           </Argument>
33297           <Argument optional="optional" name="onerror">
33298             <descriptive>
33299                 <description><p>
33300  Called if an error occurred.
33301                 </p></description>
33302             </descriptive>
33303             <Type name="ErrorCallback" nullable="nullable"/>
33304           </Argument>
33305         </ArgumentList>
33306         <Raises>
33307           <RaiseException name="WebAPIException">
33308             <descriptive>
33309                 <description><p>
33310  with error type TypeMismatchError, if the input parameter
33311 is not compatible with the expected type for that parameter.
33312                 </p></description>
33313                 <description><p>
33314  with error type SecurityError, if the application does not have the privilege to call this method.
33315                 </p></description>
33316                 <description><p>
33317  with error type NotSupportedError, if the feature is not supported.
33318                 </p></description>
33319             </descriptive>
33320           </RaiseException>
33321         </Raises>
33322       </Operation>
33323       <Operation name="deleteFile" id="::Filesystem::File::deleteFile">
33324         <webidl>    void deleteFile(DOMString filePath,
33325                     optional <ref>SuccessCallback</ref>? onsuccess,
33326                     optional <ref>ErrorCallback</ref>? onerror) raises(<ref>WebAPIException</ref>);</webidl>
33327         <descriptive>
33328             <brief>
33329  Deletes a specified file.
33330             </brief>
33331            <description>
33332             <p>
33333 This function attempts to asynchronously delete a file under the current directory.
33334             </p>
33335             <p>
33336 The file to be deleted MUST be under the Directory from which the method
33337 is invoked, otherwise the operation MUST NOT be performed.
33338             </p>
33339             <p>
33340 If the deletion is performed successfully, the onsuccess is invoked.
33341             </p>
33342             <p>
33343 The ErrorCallback is launched with these error types:
33344             </p>
33345             <ul>
33346               <li>
33347 InvalidValuesError: If any of the input parameters contain an invalid value.               </li>
33348               <li>
33349 NotFoundError: The file does not correspond to a valid file.               </li>
33350               <li>
33351 IOError: The file in which the delete method is invoked
33352 is a directory (not a file), the file is in use by another process,
33353 or there is no permission in the file system.              </li>
33354               <li>
33355 UnknownError: In any other error case.              </li>
33356             </ul>
33357            </description>
33358             <version>
33359  1.0
33360             </version>
33361             <privilegelevel>
33362  public
33363             </privilegelevel>
33364             <privilege>
33365  http://tizen.org/privilege/filesystem.write
33366             </privilege>
33367             <Code> function onsuccess(files) {
33368    for(var i = 0; i &#60; files.length; i++) {
33369      if (files[i].isDirectory) {
33370        documentsDir.deleteDirectory(
33371            files[i].fullPath,
33372            false,
33373            function(){
33374              console.log(&quot;Directory Deleted&quot;);
33375            }, function(e) {
33376              console.log(&quot;Error&quot; + e.message);
33377            });
33378      } else {
33379        documentsDir.deleteFile(
33380            files[i].fullPath,
33381            function(){
33382              console.log(&quot;File Deleted&quot;);
33383            }, function(e) {
33384              console.log(&quot;Error&quot; + e.message);
33385            });
33386      }
33387    }
33388  }
33389
33390  function onerror(error) {
33391    console.log(&quot;The error &quot; + error.message + &quot; occurred when listing the files in the selected folder&quot;);
33392  }
33393
33394  var documentsDir;
33395  tizen.filesystem.resolve(
33396    'documents', 
33397    function(dir){
33398      documentsDir = dir;
33399      dir.listFiles(onsuccess,onerror);
33400    }, function(e){
33401      console.log(&quot;Error&quot; + e.message);
33402    }, &quot;rw&quot;
33403  );
33404  </Code>
33405         </descriptive>
33406         <Type type="void"/>
33407         <ArgumentList>
33408           <Argument name="filePath">
33409             <descriptive>
33410                 <description><p>
33411  The full virtual path to the file to be deleted (must be under the current directory).
33412                 </p></description>
33413             </descriptive>
33414             <Type type="DOMString"/>
33415           </Argument>
33416           <Argument optional="optional" name="onsuccess">
33417             <descriptive>
33418                 <description><p>
33419  Called if the file is successfully deleted.
33420                 </p></description>
33421             </descriptive>
33422             <Type name="SuccessCallback" nullable="nullable"/>
33423           </Argument>
33424           <Argument optional="optional" name="onerror">
33425             <descriptive>
33426                 <description><p>
33427  Called if an error occurred.
33428                 </p></description>
33429             </descriptive>
33430             <Type name="ErrorCallback" nullable="nullable"/>
33431           </Argument>
33432         </ArgumentList>
33433         <Raises>
33434           <RaiseException name="WebAPIException">
33435             <descriptive>
33436                 <description><p>
33437  with error type TypeMismatchError, if the input parameter
33438 is not compatible with the expected type for that parameter.
33439                 </p></description>
33440                 <description><p>
33441  with error type SecurityError, if the application does not have the privilege to call this method.
33442                 </p></description>
33443                 <description><p>
33444  with error type NotSupportedError, if the feature is not supported.
33445                 </p></description>
33446             </descriptive>
33447           </RaiseException>
33448         </Raises>
33449       </Operation>
33450     </Interface>
33451     <Dictionary name="FileFilter" id="::Filesystem::FileFilter">
33452       <webidl>  dictionary FileFilter {
33453     DOMString name;
33454
33455     Date startModified;
33456
33457     Date endModified;
33458
33459     Date startCreated;
33460
33461     Date endCreated;
33462   };</webidl>
33463       <descriptive>
33464           <brief>
33465  Dictionary created to filter the items returned by the listFiles method.
33466           </brief>
33467          <description>
33468           <p>
33469 When this dictionary is passed in the listFiles method, the result-set of
33470 the listFiles method MUST only contain the file items entries that match
33471 the attribute values of the filter.
33472 The result set of the listFiles method does not guarantee any sort order.
33473           </p>
33474           <p>
33475 A file item only matches the FileFilter object if all the attributes of the file item match
33476 all the attribute values of the filter which are defined (that is, only matching values other
33477 than undefined or <em>null</em>). This is similar to an SQL &quot;AND&quot; operation.
33478           </p>
33479           <p>
33480 An attribute of the file entry matches the FileFilter attribute value in accordance with the
33481 following rules:
33482           </p>
33483           <ul>
33484             <li>
33485 For FileFilter attributes of type DOMString, an entry matches this value only if its
33486 corresponding attribute is an exact match. If the filter contains U+0025 'PERCENT SIGN' it is
33487 interpreted as a wildcard character and '%' matches any string of any length, including no
33488 length. If wildcards are used, the behavior is similar to the LIKE condition in SQL. To
33489 specify that a 'PERCENT SIGN' character is to be considered literally instead of interpreting it
33490 as a wildcard, developers may escape it with the backslash character (\).
33491 The matching is not case sensitive, such as &quot;FOO&quot; matches a &quot;foo&quot; or an &quot;f%&quot; filter.
33492             </li>
33493             <li>
33494 For File entry attributes of type Date, attributes start and end are included to allow
33495 filtering of File entries between two supplied dates. If either or both of these attributes are
33496 specified, the following rules apply:
33497 A) If both start and end dates are specified (that is, other than <em>null</em>), a File entry matches the
33498 filter if it's corresponding attribute is the same as either start or end or between the two
33499 supplied dates (that is, after start and before end).
33500 B) If only the start attribute contains a value (other than <em>null</em>), a File entry matches the
33501 filter if its corresponding attribute is later than or equal to the start one.
33502 C) If only the end date contains a value (other than <em>null</em>), a file matches the filter if its
33503 corresponding attribute is earlier than or equal to the end date.
33504             </li>
33505           </ul>
33506          </description>
33507           <version>
33508  1.0
33509           </version>
33510       </descriptive>
33511       <DictionaryMember name="name" id="::Filesystem::FileFilter::name">
33512         <webidl>    DOMString name;</webidl>
33513         <descriptive>
33514             <brief>
33515  Used for filtering the File name attribute.
33516             </brief>
33517            <description>
33518             <p>
33519 Files which name corresponds with this attribute
33520 (either exactly or with the specified wildcards) match
33521 this filtering criteria.
33522             </p>
33523            </description>
33524             <version>
33525  1.0
33526             </version>
33527         </descriptive>
33528         <Type type="DOMString"/>
33529       </DictionaryMember>
33530       <DictionaryMember name="startModified" id="::Filesystem::FileFilter::startModified">
33531         <webidl>    Date startModified;</webidl>
33532         <descriptive>
33533             <brief>
33534  Used for filtering the File modified attribute.
33535             </brief>
33536            <description>
33537             <p>
33538 Files with modified date later than this attribute or equal to it match
33539 the filtering criteria.
33540             </p>
33541            </description>
33542             <version>
33543  1.0
33544             </version>
33545         </descriptive>
33546         <Type type="Date"/>
33547       </DictionaryMember>
33548       <DictionaryMember name="endModified" id="::Filesystem::FileFilter::endModified">
33549         <webidl>    Date endModified;</webidl>
33550         <descriptive>
33551             <brief>
33552  Used for filtering the File created attribute.
33553             </brief>
33554            <description>
33555             <p>
33556 Files with modified date earlier than this attribute or equal to it
33557 match the filtering criteria.
33558             </p>
33559            </description>
33560             <version>
33561  1.0
33562             </version>
33563         </descriptive>
33564         <Type type="Date"/>
33565       </DictionaryMember>
33566       <DictionaryMember name="startCreated" id="::Filesystem::FileFilter::startCreated">
33567         <webidl>    Date startCreated;</webidl>
33568         <descriptive>
33569             <brief>
33570  Used for filtering the File created attribute.
33571             </brief>
33572            <description>
33573             <p>
33574 Files with created date later than this attribute or equal to it match
33575 the filtering criteria.
33576             </p>
33577            </description>
33578             <version>
33579  1.0
33580             </version>
33581         </descriptive>
33582         <Type type="Date"/>
33583       </DictionaryMember>
33584       <DictionaryMember name="endCreated" id="::Filesystem::FileFilter::endCreated">
33585         <webidl>    Date endCreated;</webidl>
33586         <descriptive>
33587             <brief>
33588  Used for filtering the File created attribute.
33589             </brief>
33590            <description>
33591             <p>
33592 Files with created date earlier than this attribute or equal to it
33593 match the filtering criteria.
33594             </p>
33595            </description>
33596             <version>
33597  1.0
33598             </version>
33599         </descriptive>
33600         <Type type="Date"/>
33601       </DictionaryMember>
33602     </Dictionary>
33603     <Interface name="FileStream" id="::Filesystem::FileStream">
33604       <webidl>  [NoInterfaceObject] interface FileStream {
33605     readonly attribute boolean eof;
33606
33607     attribute long position setraises(<ref>WebAPIException</ref>);
33608
33609     readonly attribute long bytesAvailable;
33610
33611     void close();
33612
33613     DOMString read(long charCount) raises(<ref>WebAPIException</ref>);
33614
33615     octet[] readBytes(long byteCount) raises(<ref>WebAPIException</ref>);
33616
33617     DOMString readBase64(long byteCount) raises(<ref>WebAPIException</ref>);
33618
33619     void write(DOMString stringData) raises(<ref>WebAPIException</ref>);
33620
33621     void writeBytes(octet[] byteData) raises(<ref>WebAPIException</ref>);
33622
33623     void writeBase64(DOMString base64Data) raises(<ref>WebAPIException</ref>);
33624   };</webidl>
33625       <descriptive>
33626           <brief>
33627  FileStream API.
33628           </brief>
33629          <description>
33630           <p>
33631 A FileStream represents a handle to a File opened for read and/or
33632 write operations. Read and write operations are performed relative
33633 to a position attribute, which is a pointer that represents the current position in the file.
33634           </p>
33635           <p>
33636 A series of read/write methods are available that permit both binary and
33637 text to be processed.
33638           </p>
33639           <p>
33640 Once a file stream is closed, any operation attempted on this stream
33641 will result in a standard JavaScript error.
33642           </p>
33643           <p>
33644 The read/write operations in this interface do not throw any security
33645 exceptions as the access rights are expected to be granted through the initial
33646 resolve() method or through the openStream() method of the File interface.
33647 Therefore, all actions performed on a successfully resolved File and FileStream are
33648 expected to succeed. This avoids successive asynchronous calls and may potentially increase
33649 application for a user.
33650           </p>
33651          </description>
33652           <version>
33653  1.0
33654           </version>
33655       </descriptive>
33656       <ExtendedAttributeList>
33657         <ExtendedAttribute name="NoInterfaceObject">
33658           <webidl>NoInterfaceObject</webidl>
33659         </ExtendedAttribute>
33660       </ExtendedAttributeList>
33661       <Attribute readonly="readonly" name="eof" id="::Filesystem::FileStream::eof">
33662         <webidl>    readonly attribute boolean eof;</webidl>
33663         <descriptive>
33664             <brief>
33665  Indicates whether or not the current file pointer is at the end
33666 of the file.
33667             </brief>
33668            <description>
33669             <p>
33670 If <em>true</em>, this attribute indicates that the file pointer is at the end of the file.
33671             </p>
33672             <p>
33673 If <em>false</em>, this attribute indicates that the file pointer is not at the end of the file
33674 and may be anywhere within the file.
33675             </p>
33676            </description>
33677             <version>
33678  1.0
33679             </version>
33680             <Code> if(stream.eof) {
33681    // file has been read completely
33682  }
33683  </Code>
33684         </descriptive>
33685         <Type type="boolean"/>
33686       </Attribute>
33687       <Attribute name="position" id="::Filesystem::FileStream::position">
33688         <webidl>    attribute long position setraises(<ref>WebAPIException</ref>);</webidl>
33689         <descriptive>
33690             <brief>
33691  Gets/sets stream position for reads/writes.
33692             </brief>
33693            <description>
33694             <p>
33695 The stream position is an offset of bytes from the start of
33696 the file stream. When invoking an operation that reads or
33697 writes from the stream, the operation will take place from the
33698 byte defined by this position attribute. If the read or write
33699 operation is successful, the position of the stream is advanced
33700 by the number of bytes read or written. If the read/write operation is not
33701 successful, the position of the stream is unchanged.
33702             </p>
33703            </description>
33704             <version>
33705  1.0
33706             </version>
33707             <Code> console.log(stream.position); // displays current stream position
33708  // alters current stream position to the begin of the file,
33709  // like seek() in C
33710  stream.position = 0;
33711  </Code>
33712         </descriptive>
33713         <Type type="long"/>
33714         <SetRaises>
33715           <RaiseException name="WebAPIException"/>
33716         </SetRaises>
33717       </Attribute>
33718       <Attribute readonly="readonly" name="bytesAvailable" id="::Filesystem::FileStream::bytesAvailable">
33719         <webidl>    readonly attribute long bytesAvailable;</webidl>
33720         <descriptive>
33721             <brief>
33722  Returns the number of bytes that are available for
33723 reading from the stream.
33724             </brief>
33725            <description>
33726             <p>
33727 The number of bytes available for reading is the maximum
33728 amount of bytes that can be read in the next read operation.
33729 It corresponds to the number of bytes available after the file pointer
33730 denoted by the position attribute.
33731             </p>
33732             <p>
33733 -1 if eof is <em>true</em>.
33734             </p>
33735            </description>
33736             <version>
33737  1.0
33738             </version>
33739             <Code> console.log(stream.bytesAvailable); // displays the available bytes to be read
33740  </Code>
33741         </descriptive>
33742         <Type type="long"/>
33743       </Attribute>
33744       <Operation name="close" id="::Filesystem::FileStream::close">
33745         <webidl>    void close();</webidl>
33746         <descriptive>
33747             <brief>
33748  Closes this FileStream.
33749             </brief>
33750            <description>
33751             <p>
33752 Flushes any pending buffered writes and closes the File. Always succeeds.
33753 Note that pending writes might not succeed.
33754             </p>
33755            </description>
33756             <version>
33757  1.0
33758             </version>
33759             <privilegelevel>
33760  public
33761             </privilegelevel>
33762             <privilege>
33763  http://tizen.org/privilege/filesystem.read
33764             </privilege>
33765             <Code> stream.close(); // closes this stream, no subsequent access to stream allowed
33766  </Code>
33767         </descriptive>
33768         <Type type="void"/>
33769         <ArgumentList/>
33770       </Operation>
33771       <Operation name="read" id="::Filesystem::FileStream::read">
33772         <webidl>    DOMString read(long charCount) raises(<ref>WebAPIException</ref>);</webidl>
33773         <descriptive>
33774             <brief>
33775  Reads the specified number of characters from this FileStream.
33776             </brief>
33777            <description>
33778             <p>
33779 Reads the specified number of characters after the position file pointer and returns them as a string.
33780 The resulting string length might be shorter than charCount if eof
33781 is <em>true</em>.
33782             </p>
33783            </description>
33784             <version>
33785  1.0
33786             </version>
33787             <privilegelevel>
33788  public
33789             </privilegelevel>
33790             <privilege>
33791  http://tizen.org/privilege/filesystem.read
33792             </privilege>
33793             <Code> var text = stream.read(file.fileSize);
33794  stream.close();
33795  </Code>
33796         </descriptive>
33797         <Type type="DOMString">
33798           <descriptive>
33799               <description><p>
33800  DOMString The result of read characters as a string.
33801               </p></description>
33802           </descriptive>
33803         </Type>
33804         <ArgumentList>
33805           <Argument name="charCount">
33806             <descriptive>
33807                 <description><p>
33808  Number of characters being read.
33809                 </p></description>
33810             </descriptive>
33811             <Type type="long"/>
33812           </Argument>
33813         </ArgumentList>
33814         <Raises>
33815           <RaiseException name="WebAPIException">
33816             <descriptive>
33817                 <description><p>
33818  with error type IOError, if a read error occurs, such as the bytes in the stream
33819 cannot be decoded with the encoding in use.
33820                 </p></description>
33821                 <description><p>
33822  with error type TypeMismatchError, if the input parameter
33823 is not compatible with the expected type for that parameter.
33824                 </p></description>
33825                 <description><p>
33826  with error type InvalidValuesError, if any of the input 
33827 parameters contain an invalid value.
33828                 </p></description>
33829                 <description><p>
33830  with error type SecurityError, if the application does not have the privilege to call this method.
33831                 </p></description>
33832                 <description><p>
33833  with error type NotSupportedError, if the feature is not supported.
33834                 </p></description>
33835             </descriptive>
33836           </RaiseException>
33837         </Raises>
33838       </Operation>
33839       <Operation name="readBytes" id="::Filesystem::FileStream::readBytes">
33840         <webidl>    octet[] readBytes(long byteCount) raises(<ref>WebAPIException</ref>);</webidl>
33841         <descriptive>
33842             <brief>
33843  Reads the specified number of bytes from this FileStream.
33844             </brief>
33845             <version>
33846  1.0
33847             </version>
33848             <privilegelevel>
33849  public
33850             </privilegelevel>
33851             <privilege>
33852  http://tizen.org/privilege/filesystem.read
33853             </privilege>
33854             <Code> // reads up to 256 bytes from the stream
33855  var raw = stream.readBytes(256);
33856  for(var i = 0; i &#60; raw.length; i++) {
33857    // raw[i] contains the i-th byte of the current data chunk
33858  }
33859  </Code>
33860         </descriptive>
33861         <Type type="array">
33862           <descriptive>
33863               <description><p>
33864  octet[] The result of read bytes as a byte (or number) array.
33865               </p></description>
33866           </descriptive>
33867           <Type type="octet"/>
33868         </Type>
33869         <ArgumentList>
33870           <Argument name="byteCount">
33871             <descriptive>
33872                 <description><p>
33873  Number of bytes being read.
33874                 </p></description>
33875             </descriptive>
33876             <Type type="long"/>
33877           </Argument>
33878         </ArgumentList>
33879         <Raises>
33880           <RaiseException name="WebAPIException">
33881             <descriptive>
33882                 <description><p>
33883  with error type IOError, if a read error occurs.
33884                 </p></description>
33885                 <description><p>
33886  with error type TypeMismatchError, if the input parameter
33887 is not compatible with the expected type for that parameter.
33888                 </p></description>
33889                 <description><p>
33890  with error type InvalidValuesError, if any of the input 
33891 parameters contain an invalid value.
33892                 </p></description>
33893                 <description><p>
33894  with error type SecurityError, if the application does not have the privilege to call this method.
33895                 </p></description>
33896                 <description><p>
33897  with error type NotSupportedError, if the feature is not supported.
33898                 </p></description>
33899             </descriptive>
33900           </RaiseException>
33901         </Raises>
33902       </Operation>
33903       <Operation name="readBase64" id="::Filesystem::FileStream::readBase64">
33904         <webidl>    DOMString readBase64(long byteCount) raises(<ref>WebAPIException</ref>);</webidl>
33905         <descriptive>
33906             <brief>
33907  Reads the specified number of bytes from this FileStream, encoding
33908 the result in base64.
33909             </brief>
33910             <version>
33911  1.0
33912             </version>
33913             <privilegelevel>
33914  public
33915             </privilegelevel>
33916             <privilege>
33917  http://tizen.org/privilege/filesystem.read
33918             </privilege>
33919             <Code> // reads up to 256 bytes from the stream
33920  var base64 = stream.readBase64(256);
33921  </Code>
33922         </descriptive>
33923         <Type type="DOMString">
33924           <descriptive>
33925               <description><p>
33926  DOMString The result of read bytes as base64 encoding string.
33927               </p></description>
33928           </descriptive>
33929         </Type>
33930         <ArgumentList>
33931           <Argument name="byteCount">
33932             <descriptive>
33933                 <description><p>
33934  Number of bytes being read.
33935                 </p></description>
33936             </descriptive>
33937             <Type type="long"/>
33938           </Argument>
33939         </ArgumentList>
33940         <Raises>
33941           <RaiseException name="WebAPIException">
33942             <descriptive>
33943                 <description><p>
33944  with error type IOError, if a read error occurs.
33945                 </p></description>
33946                 <description><p>
33947  with error type TypeMismatchError, if the input parameter
33948 is not compatible with the expected type for that parameter.
33949                 </p></description>
33950                 <description><p>
33951  with error type InvalidValuesError, if any of the input 
33952 parameters contain an invalid value.
33953                 </p></description>
33954                 <description><p>
33955  with error type SecurityError, if the application does not have the privilege to call this method.
33956                 </p></description>
33957                 <description><p>
33958  with error type NotSupportedError, if the feature is not supported.
33959                 </p></description>
33960             </descriptive>
33961           </RaiseException>
33962         </Raises>
33963       </Operation>
33964       <Operation name="write" id="::Filesystem::FileStream::write">
33965         <webidl>    void write(DOMString stringData) raises(<ref>WebAPIException</ref>);</webidl>
33966         <descriptive>
33967             <brief>
33968  Writes the specified DOMString to this FileStream.
33969             </brief>
33970             <version>
33971  1.0
33972             </version>
33973             <privilegelevel>
33974  public
33975             </privilegelevel>
33976             <privilege>
33977  http://tizen.org/privilege/filesystem.write
33978             </privilege>
33979             <Code> var text = &quot;Hello world&quot;;
33980  stream.write(text);
33981  </Code>
33982         </descriptive>
33983         <Type type="void"/>
33984         <ArgumentList>
33985           <Argument name="stringData">
33986             <descriptive>
33987                 <description><p>
33988  The actual string to be written.
33989                 </p></description>
33990             </descriptive>
33991             <Type type="DOMString"/>
33992           </Argument>
33993         </ArgumentList>
33994         <Raises>
33995           <RaiseException name="WebAPIException">
33996             <descriptive>
33997                 <description><p>
33998  with error type IOError, if a write error occurs.
33999                 </p></description>
34000                 <description><p>
34001  with error type TypeMismatchError, if the input parameter
34002 is not compatible with the expected type for that parameter.
34003                 </p></description>
34004                 <description><p>
34005  with error type SecurityError, if the application does not have the privilege to call this method.
34006                 </p></description>
34007                 <description><p>
34008  with error type NotSupportedError, if the feature is not supported.
34009                 </p></description>
34010             </descriptive>
34011           </RaiseException>
34012         </Raises>
34013       </Operation>
34014       <Operation name="writeBytes" id="::Filesystem::FileStream::writeBytes">
34015         <webidl>    void writeBytes(octet[] byteData) raises(<ref>WebAPIException</ref>);</webidl>
34016         <descriptive>
34017             <brief>
34018  Writes the specified bytes to this FileStream.
34019             </brief>
34020             <version>
34021  1.0
34022             </version>
34023             <privilegelevel>
34024  public
34025             </privilegelevel>
34026             <privilege>
34027  http://tizen.org/privilege/filesystem.write
34028             </privilege>
34029             <Code> var bytes = in.readBytes(256);
34030  out.writeBytes(bytes); // writes the bytes read from in to out
34031  </Code>
34032         </descriptive>
34033         <Type type="void"/>
34034         <ArgumentList>
34035           <Argument name="byteData">
34036             <descriptive>
34037                 <description><p>
34038  The byte data array being written.
34039                 </p></description>
34040             </descriptive>
34041             <Type type="array">
34042               <Type type="octet"/>
34043             </Type>
34044           </Argument>
34045         </ArgumentList>
34046         <Raises>
34047           <RaiseException name="WebAPIException">
34048             <descriptive>
34049                 <description><p>
34050  with error type IOError, if a write error occurs.
34051                 </p></description>
34052                 <description><p>
34053  with error type TypeMismatchError, if the input parameter
34054 is not compatible with the expected type for that parameter.
34055                 </p></description>
34056                 <description><p>
34057  with error type SecurityError, if the application does not have the privilege to call this method.
34058                 </p></description>
34059                 <description><p>
34060  with error type NotSupportedError, if the feature is not supported.
34061                 </p></description>
34062             </descriptive>
34063           </RaiseException>
34064         </Raises>
34065       </Operation>
34066       <Operation name="writeBase64" id="::Filesystem::FileStream::writeBase64">
34067         <webidl>    void writeBase64(DOMString base64Data) raises(<ref>WebAPIException</ref>);</webidl>
34068         <descriptive>
34069             <brief>
34070  Converts the specified base64 DOMString to bytes and writes the
34071 result to this FileStream.
34072             </brief>
34073             <version>
34074  1.0
34075             </version>
34076             <privilegelevel>
34077  public
34078             </privilegelevel>
34079             <privilege>
34080  http://tizen.org/privilege/filesystem.write
34081             </privilege>
34082             <Code> var base64 = in.readBase64(256);
34083  out.writeBase64(base64); // writes the base64 data read from in to out
34084  </Code>
34085         </descriptive>
34086         <Type type="void"/>
34087         <ArgumentList>
34088           <Argument name="base64Data">
34089             <descriptive>
34090                 <description><p>
34091  The base64 data being written.
34092                 </p></description>
34093             </descriptive>
34094             <Type type="DOMString"/>
34095           </Argument>
34096         </ArgumentList>
34097         <Raises>
34098           <RaiseException name="WebAPIException">
34099             <descriptive>
34100                 <description><p>
34101  with error type IOError, if an error occurs during writeBase64.
34102                 </p></description>
34103                 <description><p>
34104  with error type TypeMismatchError, if the input parameter
34105 is not compatible with the expected type for that parameter.
34106                 </p></description>
34107                 <description><p>
34108  with error type SecurityError, if the application does not have the privilege to call this method.
34109                 </p></description>
34110                 <description><p>
34111  with error type NotSupportedError, if the feature is not supported.
34112                 </p></description>
34113             </descriptive>
34114           </RaiseException>
34115         </Raises>
34116       </Operation>
34117     </Interface>
34118     <Interface name="FileSuccessCallback" id="::Filesystem::FileSuccessCallback">
34119       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface FileSuccessCallback {
34120     void onsuccess(<ref>File</ref> file);
34121   };</webidl>
34122       <descriptive>
34123           <brief>
34124  The file system specific success callback.
34125           </brief>
34126          <description>
34127           <p>
34128 This callback interface specifies a success callback with 
34129 a File object as input argument. It is used in asynchronous
34130 operations, such as FileSystemManager.resolve() and
34131 copying, moving, and deleting files.
34132           </p>
34133          </description>
34134           <version>
34135  1.0
34136           </version>
34137       </descriptive>
34138       <ExtendedAttributeList>
34139         <ExtendedAttribute name="Callback" value="FunctionOnly">
34140           <webidl>Callback</webidl>
34141         </ExtendedAttribute>
34142         <ExtendedAttribute name="NoInterfaceObject">
34143           <webidl> NoInterfaceObject</webidl>
34144         </ExtendedAttribute>
34145       </ExtendedAttributeList>
34146       <Operation name="onsuccess" id="::Filesystem::FileSuccessCallback::onsuccess">
34147         <webidl>    void onsuccess(<ref>File</ref> file);</webidl>
34148         <descriptive>
34149             <brief>
34150  The method invoked when the asynchronous call completes successfully.
34151             </brief>
34152             <version>
34153  1.0
34154             </version>
34155         </descriptive>
34156         <Type type="void"/>
34157         <ArgumentList>
34158           <Argument name="file">
34159             <descriptive>
34160                 <description><p>
34161  The file resulting from the asynchronous call.
34162                 </p></description>
34163             </descriptive>
34164             <Type name="File"/>
34165           </Argument>
34166         </ArgumentList>
34167       </Operation>
34168     </Interface>
34169     <Interface name="FileSystemStorageArraySuccessCallback" id="::Filesystem::FileSystemStorageArraySuccessCallback">
34170       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface FileSystemStorageArraySuccessCallback {
34171     void onsuccess(<ref>FileSystemStorage</ref>[] storages);
34172   };</webidl>
34173       <descriptive>
34174           <brief>
34175  The success callback to retrieve FileSystemStorage objects.
34176           </brief>
34177          <description>
34178           <p>
34179 This callback interface specifies a success callback with 
34180 an array of FileSystemStorage objects as input argument. It is used in asynchronous
34181 operations, such as FileSystemManager.listStorages().
34182           </p>
34183          </description>
34184           <version>
34185  1.0
34186           </version>
34187       </descriptive>
34188       <ExtendedAttributeList>
34189         <ExtendedAttribute name="Callback" value="FunctionOnly">
34190           <webidl>Callback</webidl>
34191         </ExtendedAttribute>
34192         <ExtendedAttribute name="NoInterfaceObject">
34193           <webidl> NoInterfaceObject</webidl>
34194         </ExtendedAttribute>
34195       </ExtendedAttributeList>
34196       <Operation name="onsuccess" id="::Filesystem::FileSystemStorageArraySuccessCallback::onsuccess">
34197         <webidl>    void onsuccess(<ref>FileSystemStorage</ref>[] storages);</webidl>
34198         <descriptive>
34199             <brief>
34200  The method invoked when the asynchronous call completes successfully.
34201             </brief>
34202             <version>
34203  1.0
34204             </version>
34205         </descriptive>
34206         <Type type="void"/>
34207         <ArgumentList>
34208           <Argument name="storages">
34209             <descriptive>
34210                 <description><p>
34211  List of available storage devices.
34212                 </p></description>
34213             </descriptive>
34214             <Type type="array">
34215               <Type name="FileSystemStorage"/>
34216             </Type>
34217           </Argument>
34218         </ArgumentList>
34219       </Operation>
34220     </Interface>
34221     <Interface name="FileSystemStorageSuccessCallback" id="::Filesystem::FileSystemStorageSuccessCallback">
34222       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface FileSystemStorageSuccessCallback {
34223     void onsuccess(<ref>FileSystemStorage</ref> storage);
34224   };</webidl>
34225       <descriptive>
34226           <brief>
34227  The success callback to retrieve a FileSystemStorage object.
34228           </brief>
34229          <description>
34230           <p>
34231 This callback interface specifies a success callback with 
34232 a FileSystmeStorage object as input argument. It is used in asynchronous
34233 operations, such as FileSystemManager.getStorage() and
34234 FileSystemManager.addStorageStateChangeListener().
34235           </p>
34236          </description>
34237           <version>
34238  1.0
34239           </version>
34240       </descriptive>
34241       <ExtendedAttributeList>
34242         <ExtendedAttribute name="Callback" value="FunctionOnly">
34243           <webidl>Callback</webidl>
34244         </ExtendedAttribute>
34245         <ExtendedAttribute name="NoInterfaceObject">
34246           <webidl> NoInterfaceObject</webidl>
34247         </ExtendedAttribute>
34248       </ExtendedAttributeList>
34249       <Operation name="onsuccess" id="::Filesystem::FileSystemStorageSuccessCallback::onsuccess">
34250         <webidl>    void onsuccess(<ref>FileSystemStorage</ref> storage);</webidl>
34251         <descriptive>
34252             <brief>
34253  The method invoked when the asynchronous call completes successfully.
34254             </brief>
34255             <version>
34256  1.0
34257             </version>
34258         </descriptive>
34259         <Type type="void"/>
34260         <ArgumentList>
34261           <Argument name="storage">
34262             <descriptive>
34263                 <description><p>
34264  The storage device structure.
34265                 </p></description>
34266             </descriptive>
34267             <Type name="FileSystemStorage"/>
34268           </Argument>
34269         </ArgumentList>
34270       </Operation>
34271     </Interface>
34272     <Interface name="FileStringSuccessCallback" id="::Filesystem::FileStringSuccessCallback">
34273       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface FileStringSuccessCallback {
34274     void onsuccess(DOMString fileStr);
34275   };</webidl>
34276       <descriptive>
34277           <brief>
34278  The success callback to read the content of a file as a DOMString.
34279           </brief>
34280          <description>
34281           <p>
34282 This callback interface specifies a success callback with 
34283 a DOMString object as input argument. It is used in asynchronous
34284 operations, such as File.readAsText().
34285           </p>
34286          </description>
34287           <version>
34288  1.0
34289           </version>
34290       </descriptive>
34291       <ExtendedAttributeList>
34292         <ExtendedAttribute name="Callback" value="FunctionOnly">
34293           <webidl>Callback</webidl>
34294         </ExtendedAttribute>
34295         <ExtendedAttribute name="NoInterfaceObject">
34296           <webidl> NoInterfaceObject</webidl>
34297         </ExtendedAttribute>
34298       </ExtendedAttributeList>
34299       <Operation name="onsuccess" id="::Filesystem::FileStringSuccessCallback::onsuccess">
34300         <webidl>    void onsuccess(DOMString fileStr);</webidl>
34301         <descriptive>
34302             <brief>
34303  The method invoked when the asynchronous call completes successfully.
34304             </brief>
34305             <version>
34306  1.0
34307             </version>
34308         </descriptive>
34309         <Type type="void"/>
34310         <ArgumentList>
34311           <Argument name="fileStr">
34312             <descriptive>
34313                 <description><p>
34314  The file represented as a DOMString resulting from the asynchronous call.
34315                 </p></description>
34316             </descriptive>
34317             <Type type="DOMString"/>
34318           </Argument>
34319         </ArgumentList>
34320       </Operation>
34321     </Interface>
34322     <Interface name="FileStreamSuccessCallback" id="::Filesystem::FileStreamSuccessCallback">
34323       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface FileStreamSuccessCallback {
34324     void onsuccess(<ref>FileStream</ref> filestream);
34325   };</webidl>
34326       <descriptive>
34327           <brief>
34328  The success callback to open a file for raw access.
34329           </brief>
34330          <description>
34331           <p>
34332 This callback interface specifies a success callback with 
34333 a FileStream object as input argument. It is used by asynchronous
34334 methods, such as File.openStream().
34335           </p>
34336          </description>
34337           <version>
34338  1.0
34339           </version>
34340       </descriptive>
34341       <ExtendedAttributeList>
34342         <ExtendedAttribute name="Callback" value="FunctionOnly">
34343           <webidl>Callback</webidl>
34344         </ExtendedAttribute>
34345         <ExtendedAttribute name="NoInterfaceObject">
34346           <webidl> NoInterfaceObject</webidl>
34347         </ExtendedAttribute>
34348       </ExtendedAttributeList>
34349       <Operation name="onsuccess" id="::Filesystem::FileStreamSuccessCallback::onsuccess">
34350         <webidl>    void onsuccess(<ref>FileStream</ref> filestream);</webidl>
34351         <descriptive>
34352             <brief>
34353  The method invoked when the File.openStream asynchronous call completes successfully.
34354             </brief>
34355             <version>
34356  1.0
34357             </version>
34358         </descriptive>
34359         <Type type="void"/>
34360         <ArgumentList>
34361           <Argument name="filestream">
34362             <descriptive>
34363                 <description><p>
34364  The filestream to access file content.
34365                 </p></description>
34366             </descriptive>
34367             <Type name="FileStream"/>
34368           </Argument>
34369         </ArgumentList>
34370       </Operation>
34371     </Interface>
34372     <Interface name="FileArraySuccessCallback" id="::Filesystem::FileArraySuccessCallback">
34373       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface FileArraySuccessCallback {
34374     void onsuccess(<ref>File</ref>[] files);
34375   };</webidl>
34376       <descriptive>
34377           <brief>
34378  The file system specific success callback for listing methods.
34379           </brief>
34380          <description>
34381           <p>
34382 This callback interface specifies a success callback with a function
34383 taking an array of File objects as input argument. It is used in asynchronous
34384 methods, such as File.listFiles().
34385           </p>
34386          </description>
34387           <version>
34388  1.0
34389           </version>
34390       </descriptive>
34391       <ExtendedAttributeList>
34392         <ExtendedAttribute name="Callback" value="FunctionOnly">
34393           <webidl>Callback</webidl>
34394         </ExtendedAttribute>
34395         <ExtendedAttribute name="NoInterfaceObject">
34396           <webidl> NoInterfaceObject</webidl>
34397         </ExtendedAttribute>
34398       </ExtendedAttributeList>
34399       <Operation name="onsuccess" id="::Filesystem::FileArraySuccessCallback::onsuccess">
34400         <webidl>    void onsuccess(<ref>File</ref>[] files);</webidl>
34401         <descriptive>
34402             <brief>
34403  The method invoked when the asynchronous call completes successfully.
34404             </brief>
34405             <version>
34406  1.0
34407             </version>
34408         </descriptive>
34409         <Type type="void"/>
34410         <ArgumentList>
34411           <Argument name="files">
34412             <descriptive>
34413                 <description><p>
34414  The files resulting from the asynchronous call.
34415                 </p></description>
34416             </descriptive>
34417             <Type type="array">
34418               <Type name="File"/>
34419             </Type>
34420           </Argument>
34421         </ArgumentList>
34422       </Operation>
34423     </Interface>
34424   </Module>
34425   <Module name="MessagePort" id="::MessagePort">
34426     <webidl>module MessagePort {
34427
34428   [NoInterfaceObject] interface MessagePortManagerObject {
34429     readonly attribute <ref>MessagePortManager</ref> messageport;
34430   };
34431   <ref>Tizen</ref> implements <ref>MessagePortManagerObject</ref>;
34432
34433   [NoInterfaceObject] interface MessagePortManager {
34434
34435     <ref>LocalMessagePort</ref> requestLocalMessagePort(DOMString localMessagePortName) raises(<ref>WebAPIException</ref>);
34436
34437     <ref>LocalMessagePort</ref> requestTrustedLocalMessagePort(DOMString localMessagePortName) raises(<ref>WebAPIException</ref>);
34438
34439     <ref>RemoteMessagePort</ref> requestRemoteMessagePort(<ref>ApplicationId</ref> appId, DOMString remoteMessagePortName) raises(<ref>WebAPIException</ref>);
34440
34441     <ref>RemoteMessagePort</ref> requestTrustedRemoteMessagePort(<ref>ApplicationId</ref> appId, DOMString remoteMessagePortName) raises(<ref>WebAPIException</ref>);
34442   };
34443
34444   [NoInterfaceObject] interface LocalMessagePort {
34445
34446     readonly attribute DOMString messagePortName;
34447
34448     readonly attribute boolean isTrusted;
34449
34450     long addMessagePortListener(<ref>MessagePortCallback</ref> listener) raises(<ref>WebAPIException</ref>);
34451
34452     void removeMessagePortListener(long watchId) raises(<ref>WebAPIException</ref>);
34453   };
34454
34455   [NoInterfaceObject] interface RemoteMessagePort {
34456
34457     readonly attribute DOMString messagePortName;
34458
34459     readonly attribute <ref>ApplicationId</ref> appId;
34460
34461     readonly attribute boolean isTrusted;
34462
34463     void sendMessage(<ref>MessagePortDataItem</ref>[] data, optional <ref>LocalMessagePort</ref>? localMessagePort) raises(<ref>WebAPIException</ref>);
34464   };
34465
34466   dictionary MessagePortDataItem {
34467     DOMString key;
34468     DOMString value;
34469   };
34470
34471   [Callback=FunctionOnly, NoInterfaceObject] interface MessagePortCallback {
34472     void onreceived(<ref>MessagePortDataItem</ref>[] data, <ref>RemoteMessagePort</ref>? remoteMessagePort);
34473   };
34474 };</webidl>
34475     <descriptive>
34476         <brief>
34477  This API provides the functionality for communicating with other applications.
34478         </brief>
34479         <version>
34480  2.1
34481         </version>
34482     </descriptive>
34483     <Interface name="MessagePortManagerObject" id="::MessagePort::MessagePortManagerObject">
34484       <webidl>  [NoInterfaceObject] interface MessagePortManagerObject {
34485     readonly attribute <ref>MessagePortManager</ref> messageport;
34486   };</webidl>
34487       <descriptive>
34488           <brief>
34489  The <em>MessagePortManagerObject</em> interface defines what is instantiated by the Tizen object from the Tizen Platform.
34490           </brief>
34491          <description>
34492           <p>
34493 There is a <em>tizen.messageport</em> object that allows access to the functionality of the Message Port API.
34494           </p>
34495          </description>
34496           <version>
34497  2.1
34498           </version>
34499       </descriptive>
34500       <ExtendedAttributeList>
34501         <ExtendedAttribute name="NoInterfaceObject">
34502           <webidl>NoInterfaceObject</webidl>
34503         </ExtendedAttribute>
34504       </ExtendedAttributeList>
34505       <Attribute readonly="readonly" name="messageport" id="::MessagePort::MessagePortManagerObject::messageport">
34506         <webidl>    readonly attribute <ref>MessagePortManager</ref> messageport;</webidl>
34507         <Type name="MessagePortManager"/>
34508       </Attribute>
34509     </Interface>
34510     <Implements name1="Tizen" name2="MessagePortManagerObject">
34511       <webidl>  <ref>Tizen</ref> implements <ref>MessagePortManagerObject</ref>;</webidl>
34512     </Implements>
34513     <Interface name="MessagePortManager" id="::MessagePort::MessagePortManager">
34514       <webidl>  [NoInterfaceObject] interface MessagePortManager {
34515
34516     <ref>LocalMessagePort</ref> requestLocalMessagePort(DOMString localMessagePortName) raises(<ref>WebAPIException</ref>);
34517
34518     <ref>LocalMessagePort</ref> requestTrustedLocalMessagePort(DOMString localMessagePortName) raises(<ref>WebAPIException</ref>);
34519
34520     <ref>RemoteMessagePort</ref> requestRemoteMessagePort(<ref>ApplicationId</ref> appId, DOMString remoteMessagePortName) raises(<ref>WebAPIException</ref>);
34521
34522     <ref>RemoteMessagePort</ref> requestTrustedRemoteMessagePort(<ref>ApplicationId</ref> appId, DOMString remoteMessagePortName) raises(<ref>WebAPIException</ref>);
34523   };</webidl>
34524       <descriptive>
34525           <brief>
34526  The <em>MessagePortManager</em> interface provides methods to request message port to communicate.
34527           </brief>
34528           <version>
34529  2.1
34530           </version>
34531       </descriptive>
34532       <ExtendedAttributeList>
34533         <ExtendedAttribute name="NoInterfaceObject">
34534           <webidl>NoInterfaceObject</webidl>
34535         </ExtendedAttribute>
34536       </ExtendedAttributeList>
34537       <Operation name="requestLocalMessagePort" id="::MessagePort::MessagePortManager::requestLocalMessagePort">
34538         <webidl>    <ref>LocalMessagePort</ref> requestLocalMessagePort(DOMString localMessagePortName) raises(<ref>WebAPIException</ref>);</webidl>
34539         <descriptive>
34540             <brief>
34541  Requests a LocalMessage Port instance to start receiving message from another application.
34542             </brief>
34543             <version>
34544  2.1
34545             </version>
34546             <Code> // Requests the LocalMessagePort instance with the specified message port name
34547  var localMsgPort = tizen.messageport.requestLocalMessagePort('MessagePortA');
34548  </Code>
34549         </descriptive>
34550         <Type name="LocalMessagePort">
34551           <descriptive>
34552               <description><p>
34553  LocalMessagePort The LocalMessagePort instance.
34554               </p></description>
34555           </descriptive>
34556         </Type>
34557         <ArgumentList>
34558           <Argument name="localMessagePortName">
34559             <descriptive>
34560                 <description><p>
34561  The name of the local message port to retrieve.<br/>The LocalMessagePort instances are identical for the same message port name.
34562                 </p></description>
34563             </descriptive>
34564             <Type type="DOMString"/>
34565           </Argument>
34566         </ArgumentList>
34567         <Raises>
34568           <RaiseException name="WebAPIException">
34569             <descriptive>
34570                 <description><p>
34571  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
34572                 </p></description>
34573                 <description><p>
34574  with error type InvalidValuesError, if the input parameter contains an invalid value.
34575                 </p></description>
34576                 <description><p>
34577  with error type UnknownError, if any other error occurs.
34578                 </p></description>
34579             </descriptive>
34580           </RaiseException>
34581         </Raises>
34582       </Operation>
34583       <Operation name="requestTrustedLocalMessagePort" id="::MessagePort::MessagePortManager::requestTrustedLocalMessagePort">
34584         <webidl>    <ref>LocalMessagePort</ref> requestTrustedLocalMessagePort(DOMString localMessagePortName) raises(<ref>WebAPIException</ref>);</webidl>
34585         <descriptive>
34586             <brief>
34587  Requests a trusted LocalMessagePort instance to receive message from another application.
34588             </brief>
34589            <description>
34590             <p>
34591 Trusted local message port can communicate with applications that are signed with same certificate.
34592             </p>
34593            </description>
34594             <version>
34595  2.1
34596             </version>
34597             <Code> // Requests the LocalMessagePort instance with the specified message port name
34598  var localMsgPort = tizen.messageport.requestTrustedLocalMessagePort('MessagePortB');
34599  </Code>
34600         </descriptive>
34601         <Type name="LocalMessagePort">
34602           <descriptive>
34603               <description><p>
34604  LocalMessagePort The trusted LocalMessagePort instance.
34605               </p></description>
34606           </descriptive>
34607         </Type>
34608         <ArgumentList>
34609           <Argument name="localMessagePortName">
34610             <descriptive>
34611                 <description><p>
34612  The name of local message port.<br/>The LocalMessagePort instances are identical for the same message port name.
34613                 </p></description>
34614             </descriptive>
34615             <Type type="DOMString"/>
34616           </Argument>
34617         </ArgumentList>
34618         <Raises>
34619           <RaiseException name="WebAPIException">
34620             <descriptive>
34621                 <description><p>
34622  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
34623                 </p></description>
34624                 <description><p>
34625  with error type InvalidValuesError, if the input parameter contains an invalid value.
34626                 </p></description>
34627                 <description><p>
34628  with error type UnknownError, if any other error occurs.
34629                 </p></description>
34630             </descriptive>
34631           </RaiseException>
34632         </Raises>
34633       </Operation>
34634       <Operation name="requestRemoteMessagePort" id="::MessagePort::MessagePortManager::requestRemoteMessagePort">
34635         <webidl>    <ref>RemoteMessagePort</ref> requestRemoteMessagePort(<ref>ApplicationId</ref> appId, DOMString remoteMessagePortName) raises(<ref>WebAPIException</ref>);</webidl>
34636         <descriptive>
34637             <brief>
34638  Requests a RemoteMessagePort instance to send message to another application.
34639             </brief>
34640            <description>
34641             <p>
34642 If the message port name and application ID is the same, the platform returns the same RemoteMessagePort instance.
34643             </p>
34644            </description>
34645             <version>
34646  2.1
34647             </version>
34648             <Code> // Requests the RemoteMessagePort instance with the specified message port name
34649  var remoteMsgPort = tizen.messageport.requestRemoteMessagePort('6xaeuflskd.App1', 'MessagePortA');
34650  </Code>
34651         </descriptive>
34652         <Type name="RemoteMessagePort">
34653           <descriptive>
34654               <description><p>
34655  RemoteMessagePort The RemoteMessagePort instance.
34656               </p></description>
34657           </descriptive>
34658         </Type>
34659         <ArgumentList>
34660           <Argument name="appId">
34661             <descriptive>
34662                 <description><p>
34663  The ID of the application to send messages.
34664                 </p></description>
34665             </descriptive>
34666             <Type name="ApplicationId"/>
34667           </Argument>
34668           <Argument name="remoteMessagePortName">
34669             <descriptive>
34670                 <description><p>
34671  The name of remote message port.
34672                 </p></description>
34673             </descriptive>
34674             <Type type="DOMString"/>
34675           </Argument>
34676         </ArgumentList>
34677         <Raises>
34678           <RaiseException name="WebAPIException">
34679             <descriptive>
34680                 <description><p>
34681  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
34682                 </p></description>
34683                 <description><p>
34684  with error type InvalidValuesError, if an input parameter contains an invalid value.
34685                 </p></description>
34686                 <description><p>
34687  with error type NotFoundError, if the port of the target application is not found.
34688                 </p></description>
34689                 <description><p>
34690  with error type UnknownError, if any other error occurs.
34691                 </p></description>
34692             </descriptive>
34693           </RaiseException>
34694         </Raises>
34695       </Operation>
34696       <Operation name="requestTrustedRemoteMessagePort" id="::MessagePort::MessagePortManager::requestTrustedRemoteMessagePort">
34697         <webidl>    <ref>RemoteMessagePort</ref> requestTrustedRemoteMessagePort(<ref>ApplicationId</ref> appId, DOMString remoteMessagePortName) raises(<ref>WebAPIException</ref>);</webidl>
34698         <descriptive>
34699             <brief>
34700  Requests a trusted RemoteMessagePort instance to receive message from another application.
34701             </brief>
34702            <description>
34703             <p>
34704 If the message port name and application ID is the same, the platform returns the same RemoteMessagePort instance.
34705 Trusted remote message port can communicate with applications that are signed with same certificate.
34706             </p>
34707            </description>
34708             <version>
34709  2.1
34710             </version>
34711             <Code> // Requests the RemoteMessagePort instance with the specified message port name.
34712  var remoteMsgPort = tizen.messageport.requestTrustedRemoteMessagePort('6xauflskd.App1', 'MessagePortB');
34713  </Code>
34714         </descriptive>
34715         <Type name="RemoteMessagePort">
34716           <descriptive>
34717               <description><p>
34718  RemoteMessagePort The trusted RemoteMessagePort instance.
34719               </p></description>
34720           </descriptive>
34721         </Type>
34722         <ArgumentList>
34723           <Argument name="appId">
34724             <descriptive>
34725                 <description><p>
34726  The ID of the application to send messages.
34727                 </p></description>
34728             </descriptive>
34729             <Type name="ApplicationId"/>
34730           </Argument>
34731           <Argument name="remoteMessagePortName">
34732             <descriptive>
34733                 <description><p>
34734  The name of remote message port.
34735                 </p></description>
34736             </descriptive>
34737             <Type type="DOMString"/>
34738           </Argument>
34739         </ArgumentList>
34740         <Raises>
34741           <RaiseException name="WebAPIException">
34742             <descriptive>
34743                 <description><p>
34744  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
34745                 </p></description>
34746                 <description><p>
34747  with error type InvalidValuesError, if an input parameter contains an invalid value.
34748                 </p></description>
34749                 <description><p>
34750  with error type NotFoundError, if the port of the target application is not found.
34751                 </p></description>
34752                 <description><p>
34753  with error type InvalidAccessError, if the target application is not signed with the same certification.
34754                 </p></description>
34755                 <description><p>
34756  with error type UnknownError, if any other error occurs
34757                 </p></description>
34758             </descriptive>
34759           </RaiseException>
34760         </Raises>
34761       </Operation>
34762     </Interface>
34763     <Interface name="LocalMessagePort" id="::MessagePort::LocalMessagePort">
34764       <webidl>  [NoInterfaceObject] interface LocalMessagePort {
34765
34766     readonly attribute DOMString messagePortName;
34767
34768     readonly attribute boolean isTrusted;
34769
34770     long addMessagePortListener(<ref>MessagePortCallback</ref> listener) raises(<ref>WebAPIException</ref>);
34771
34772     void removeMessagePortListener(long watchId) raises(<ref>WebAPIException</ref>);
34773   };</webidl>
34774       <descriptive>
34775           <brief>
34776  The <em>LocalMessagePort</em> interface provides methods to receive data.
34777           </brief>
34778           <version>
34779  2.1
34780           </version>
34781       </descriptive>
34782       <ExtendedAttributeList>
34783         <ExtendedAttribute name="NoInterfaceObject">
34784           <webidl>NoInterfaceObject</webidl>
34785         </ExtendedAttribute>
34786       </ExtendedAttributeList>
34787       <Attribute readonly="readonly" name="messagePortName" id="::MessagePort::LocalMessagePort::messagePortName">
34788         <webidl>    readonly attribute DOMString messagePortName;</webidl>
34789         <descriptive>
34790             <brief>
34791  An attribute that stores the name of the message port name.
34792             </brief>
34793             <version>
34794  2.1
34795             </version>
34796         </descriptive>
34797         <Type type="DOMString"/>
34798       </Attribute>
34799       <Attribute readonly="readonly" name="isTrusted" id="::MessagePort::LocalMessagePort::isTrusted">
34800         <webidl>    readonly attribute boolean isTrusted;</webidl>
34801         <descriptive>
34802             <brief>
34803  An attribute that determines whether the message port is trusted or not.
34804             </brief>
34805             <version>
34806  2.1
34807             </version>
34808         </descriptive>
34809         <Type type="boolean"/>
34810       </Attribute>
34811       <Operation name="addMessagePortListener" id="::MessagePort::LocalMessagePort::addMessagePortListener">
34812         <webidl>    long addMessagePortListener(<ref>MessagePortCallback</ref> listener) raises(<ref>WebAPIException</ref>);</webidl>
34813         <descriptive>
34814             <brief>
34815  Adds a message port listener to receive messages from other applications.
34816             </brief>
34817             <version>
34818  2.1.
34819             </version>
34820             <Code> function onreceived(data, remoteMsgPort) {
34821    console.log('Received data to \'' + remoteMsgPort.messagePortName + '\'');
34822  }
34823
34824  var localMsgPort = tizen.messageport.requestLocalMessagePort('MessagePortA');
34825  var watchId = localMsgPort.addMessagePortListener(onreceived);
34826  </Code>
34827         </descriptive>
34828         <Type type="long">
34829           <descriptive>
34830               <description><p>
34831  long ID of the listener that is later used to remove the listener.
34832               </p></description>
34833           </descriptive>
34834         </Type>
34835         <ArgumentList>
34836           <Argument name="listener">
34837             <descriptive>
34838                 <description><p>
34839  The method to invoke when a message is received.
34840                 </p></description>
34841             </descriptive>
34842             <Type name="MessagePortCallback"/>
34843           </Argument>
34844         </ArgumentList>
34845         <Raises>
34846           <RaiseException name="WebAPIException">
34847             <descriptive>
34848                 <description><p>
34849  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
34850                 </p></description>
34851                 <description><p>
34852  with error type InvalidValuesError, if the input parameter contains an invalid value.
34853                 </p></description>
34854                 <description><p>
34855  with error type UnknownError, if any other error occurs.
34856                 </p></description>
34857             </descriptive>
34858           </RaiseException>
34859         </Raises>
34860       </Operation>
34861       <Operation name="removeMessagePortListener" id="::MessagePort::LocalMessagePort::removeMessagePortListener">
34862         <webidl>    void removeMessagePortListener(long watchId) raises(<ref>WebAPIException</ref>);</webidl>
34863         <descriptive>
34864             <brief>
34865  Removes the message port listener.
34866             </brief>
34867             <version>
34868  2.1.
34869             </version>
34870             <Code> var localMsgPort = tizen.messageport.requestLocalMessagePort('MessagePortA');
34871  var watchId = localMsgPort.addMessagePortListener(onreceived);
34872  // Communication routines of your app...
34873  localMsgPort.removeMessagePortListener(watchId);
34874  </Code>
34875         </descriptive>
34876         <Type type="void"/>
34877         <ArgumentList>
34878           <Argument name="watchId">
34879             <descriptive>
34880                 <description><p>
34881  ID to identify the listener.
34882                 </p></description>
34883             </descriptive>
34884             <Type type="long"/>
34885           </Argument>
34886         </ArgumentList>
34887         <Raises>
34888           <RaiseException name="WebAPIException">
34889             <descriptive>
34890                 <description><p>
34891  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
34892                 </p></description>
34893                 <description><p>
34894  with error type InvalidValuesError, if the input parameter contains an invalid value.
34895                 </p></description>
34896                 <description><p>
34897  with error type NotFoundError, if the watch ID has not been found.
34898                 </p></description>
34899                 <description><p>
34900  with error type UnknownError, if any other error occurs.
34901                 </p></description>
34902             </descriptive>
34903           </RaiseException>
34904         </Raises>
34905       </Operation>
34906     </Interface>
34907     <Interface name="RemoteMessagePort" id="::MessagePort::RemoteMessagePort">
34908       <webidl>  [NoInterfaceObject] interface RemoteMessagePort {
34909
34910     readonly attribute DOMString messagePortName;
34911
34912     readonly attribute <ref>ApplicationId</ref> appId;
34913
34914     readonly attribute boolean isTrusted;
34915
34916     void sendMessage(<ref>MessagePortDataItem</ref>[] data, optional <ref>LocalMessagePort</ref>? localMessagePort) raises(<ref>WebAPIException</ref>);
34917   };</webidl>
34918       <descriptive>
34919           <brief>
34920  The <em>RemoteMessagePort</em> interface provides methods to send messages.
34921           </brief>
34922           <version>
34923  2.1
34924           </version>
34925       </descriptive>
34926       <ExtendedAttributeList>
34927         <ExtendedAttribute name="NoInterfaceObject">
34928           <webidl>NoInterfaceObject</webidl>
34929         </ExtendedAttribute>
34930       </ExtendedAttributeList>
34931       <Attribute readonly="readonly" name="messagePortName" id="::MessagePort::RemoteMessagePort::messagePortName">
34932         <webidl>    readonly attribute DOMString messagePortName;</webidl>
34933         <descriptive>
34934             <brief>
34935  An attribute to store the message port name.
34936             </brief>
34937             <version>
34938  2.1
34939             </version>
34940         </descriptive>
34941         <Type type="DOMString"/>
34942       </Attribute>
34943       <Attribute readonly="readonly" name="appId" id="::MessagePort::RemoteMessagePort::appId">
34944         <webidl>    readonly attribute <ref>ApplicationId</ref> appId;</webidl>
34945         <descriptive>
34946             <brief>
34947  An attribute that store the application ID to connect with.
34948             </brief>
34949             <version>
34950  2.1
34951             </version>
34952         </descriptive>
34953         <Type name="ApplicationId"/>
34954       </Attribute>
34955       <Attribute readonly="readonly" name="isTrusted" id="::MessagePort::RemoteMessagePort::isTrusted">
34956         <webidl>    readonly attribute boolean isTrusted;</webidl>
34957         <descriptive>
34958             <brief>
34959  An attribute that determines whether the message port is trusted or not.
34960             </brief>
34961             <version>
34962  2.1
34963             </version>
34964         </descriptive>
34965         <Type type="boolean"/>
34966       </Attribute>
34967       <Operation name="sendMessage" id="::MessagePort::RemoteMessagePort::sendMessage">
34968         <webidl>    void sendMessage(<ref>MessagePortDataItem</ref>[] data, optional <ref>LocalMessagePort</ref>? localMessagePort) raises(<ref>WebAPIException</ref>);</webidl>
34969         <descriptive>
34970             <brief>
34971  Sends messages to the specified application.
34972             </brief>
34973            <description>
34974             <p>
34975 The sent messages will be ignored without any notice, unless the target application added one or more listeners to the target local message port.
34976             </p>
34977            </description>
34978             <version>
34979  2.1
34980             </version>
34981             <Code> // Sends message
34982  var localMsgPort = tizen.messageport.requestLocalMessagePort('MessagePortA');
34983  var remoteMsgPort = tizen.messageport.requestRemoteMessagePort('6xaeuflskd.App1', 'MessagePortB');
34984  localMsgPort.addMessagePortListener(function(items, remoteport) {
34985    // ...
34986    if(remoteport !== null) {
34987      remoteport.sendMessage([{key:'RESULT', value:'OK'}]);
34988    }
34989  });
34990  remoteMsgPort.sendMessage(
34991    [
34992      { key:'CMD', value:'openWindow' },
34993      { key:'OPTION', value:'bx' }
34994    ]
34995    , localMsgPort);
34996  </Code>
34997         </descriptive>
34998         <Type type="void"/>
34999         <ArgumentList>
35000           <Argument name="data">
35001             <descriptive>
35002                 <description><p>
35003  Data array of data to send.
35004                 </p></description>
35005             </descriptive>
35006             <Type type="array">
35007               <Type name="MessagePortDataItem"/>
35008             </Type>
35009           </Argument>
35010           <Argument optional="optional" name="localMessagePort">
35011             <descriptive>
35012                 <description><p>
35013  <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.
35014 </em></em>                </p></description>
35015             </descriptive>
35016             <Type name="LocalMessagePort" nullable="nullable"/>
35017           </Argument>
35018         </ArgumentList>
35019         <Raises>
35020           <RaiseException name="WebAPIException">
35021             <descriptive>
35022                 <description><p>
35023  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
35024                 </p></description>
35025                 <description><p>
35026  with error type InvalidValuesError, if an input parameter contains an invalid value.
35027                 </p></description>
35028                 <description><p>
35029  with error type QuotaExceededError, if the size of message has exceeded the maximum limit.
35030                 </p></description>
35031                 <description><p>
35032  with error type UnknownError, if any other error occurs.
35033                 </p></description>
35034             </descriptive>
35035           </RaiseException>
35036         </Raises>
35037       </Operation>
35038     </Interface>
35039     <Dictionary name="MessagePortDataItem" id="::MessagePort::MessagePortDataItem">
35040       <webidl>  dictionary MessagePortDataItem {
35041     DOMString key;
35042     DOMString value;
35043   };</webidl>
35044       <descriptive>
35045           <brief>
35046  A dictionary for specifying the data item that is transferred.
35047           </brief>
35048           <version>
35049  2.1
35050           </version>
35051       </descriptive>
35052       <DictionaryMember name="key" id="::MessagePort::MessagePortDataItem::key">
35053         <webidl>    DOMString key;</webidl>
35054         <Type type="DOMString"/>
35055       </DictionaryMember>
35056       <DictionaryMember name="value" id="::MessagePort::MessagePortDataItem::value">
35057         <webidl>    DOMString value;</webidl>
35058         <Type type="DOMString"/>
35059       </DictionaryMember>
35060     </Dictionary>
35061     <Interface name="MessagePortCallback" id="::MessagePort::MessagePortCallback">
35062       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface MessagePortCallback {
35063     void onreceived(<ref>MessagePortDataItem</ref>[] data, <ref>RemoteMessagePort</ref>? remoteMessagePort);
35064   };</webidl>
35065       <descriptive>
35066           <brief>
35067  This interface defines notification callbacks for receiving data from other applications.
35068           </brief>
35069           <version>
35070  2.1
35071           </version>
35072       </descriptive>
35073       <ExtendedAttributeList>
35074         <ExtendedAttribute name="Callback" value="FunctionOnly">
35075           <webidl>Callback</webidl>
35076         </ExtendedAttribute>
35077         <ExtendedAttribute name="NoInterfaceObject">
35078           <webidl> NoInterfaceObject</webidl>
35079         </ExtendedAttribute>
35080       </ExtendedAttributeList>
35081       <Operation name="onreceived" id="::MessagePort::MessagePortCallback::onreceived">
35082         <webidl>    void onreceived(<ref>MessagePortDataItem</ref>[] data, <ref>RemoteMessagePort</ref>? remoteMessagePort);</webidl>
35083         <descriptive>
35084             <brief>
35085  Called when data is received from other applications via the specified message port name.
35086             </brief>
35087             <version>
35088  2.1
35089             </version>
35090         </descriptive>
35091         <Type type="void"/>
35092         <ArgumentList>
35093           <Argument name="data">
35094             <descriptive>
35095                 <description><p>
35096  An array of data received from another application.
35097                 </p></description>
35098             </descriptive>
35099             <Type type="array">
35100               <Type name="MessagePortDataItem"/>
35101             </Type>
35102           </Argument>
35103           <Argument name="remoteMessagePort">
35104             <descriptive>
35105                 <description><p>
35106  The RemoteMessagePort port that can be used to reply for the received message.
35107                 </p></description>
35108             </descriptive>
35109             <Type name="RemoteMessagePort" nullable="nullable"/>
35110           </Argument>
35111         </ArgumentList>
35112       </Operation>
35113     </Interface>
35114   </Module>
35115   <Module name="Messaging" id="::Messaging">
35116     <webidl>module Messaging {
35117
35118   [NoInterfaceObject] interface MessageManagerObject {
35119     readonly attribute <ref>Messaging</ref> messaging;
35120   };
35121   <ref>Tizen</ref> implements <ref>MessageManagerObject</ref>;
35122
35123   enum MessageServiceTag {&quot;messaging.sms&quot;, &quot;messaging.mms&quot;, &quot;messaging.email&quot; };
35124   
35125   typedef DOMString MessageId;
35126   
35127   typedef DOMString MessageAttachmentId;
35128
35129   typedef DOMString MessageConvId;
35130
35131   typedef DOMString MessageFolderId;  
35132
35133   [Constructor(<ref>MessageServiceTag</ref> type, optional <ref>MessageInit</ref>? messageInitDict)]
35134   interface Message {
35135
35136     readonly attribute <ref>MessageId</ref>? id;
35137
35138     readonly attribute <ref>MessageConvId</ref>? conversationId;
35139
35140     readonly attribute <ref>MessageFolderId</ref>? folderId;
35141
35142     readonly attribute <ref>MessageServiceTag</ref> type;
35143
35144     readonly attribute Date? timestamp;
35145
35146     readonly attribute DOMString? from;
35147
35148     attribute DOMString[] to setraises(<ref>WebAPIException</ref>);
35149
35150     attribute DOMString[] cc setraises(<ref>WebAPIException</ref>);
35151
35152     attribute DOMString[] bcc setraises(<ref>WebAPIException</ref>);
35153
35154     attribute <ref>MessageBody</ref> body setraises(<ref>WebAPIException</ref>);
35155
35156     attribute boolean isRead setraises(<ref>WebAPIException</ref>);
35157
35158     readonly attribute boolean hasAttachment;
35159
35160     attribute boolean isHighPriority setraises(<ref>WebAPIException</ref>);
35161
35162     attribute DOMString subject setraises(<ref>WebAPIException</ref>);
35163
35164     readonly attribute <ref>MessageId</ref>? inResponseTo setraises(<ref>WebAPIException</ref>);
35165
35166     readonly attribute DOMString messageStatus;
35167
35168     attribute <ref>MessageAttachment</ref>[] attachments setraises(<ref>WebAPIException</ref>);
35169   };
35170   dictionary MessageInit
35171   {
35172
35173     DOMString subject;
35174
35175     DOMString[] to;
35176
35177     DOMString[] cc;
35178
35179     DOMString[] bcc;
35180
35181     DOMString plainBody;
35182
35183     DOMString htmlBody;
35184
35185     boolean isHighPriority;
35186   };
35187
35188   [NoInterfaceObject] interface MessageBody {
35189
35190     readonly attribute <ref>MessageId</ref> messageId;
35191
35192     readonly attribute boolean loaded;
35193
35194     attribute DOMString plainBody setraises(<ref>WebAPIException</ref>);
35195
35196     attribute DOMString htmlBody setraises(<ref>WebAPIException</ref>);
35197
35198     attribute <ref>MessageAttachment</ref>[] inlineAttachments setraises(<ref>WebAPIException</ref>);
35199   };
35200
35201   [Constructor(DOMString filePath, optional DOMString? mimeType)]
35202   interface MessageAttachment {
35203     
35204     readonly attribute <ref>MessageAttachmentId</ref>? id;
35205     
35206     readonly attribute <ref>MessageId</ref>? messageId;
35207     
35208     readonly attribute DOMString? mimeType;
35209     
35210     readonly attribute DOMString? filePath;
35211   };
35212
35213   [NoInterfaceObject] interface Messaging {
35214
35215     void getMessageServices(<ref>MessageServiceTag</ref> messageServiceType,
35216                             <ref>MessageServiceArraySuccessCallback</ref> successCallback,
35217                             optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
35218   };
35219
35220   [Callback=FunctionOnly, NoInterfaceObject] interface MessageServiceArraySuccessCallback {
35221
35222     void onsuccess(<ref>MessageService</ref>[] services);
35223
35224   };
35225
35226
35227   [NoInterfaceObject] interface MessageService {
35228
35229     readonly attribute DOMString id;
35230
35231     readonly attribute <ref>MessageServiceTag</ref> type;
35232
35233     readonly attribute DOMString name;
35234                     
35235     void sendMessage(<ref>Message</ref> message,
35236                      optional <ref>MessageRecipientsCallback</ref>? successCallback,
35237                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
35238
35239     void loadMessageBody(<ref>Message</ref> message,
35240                          <ref>MessageBodySuccessCallback</ref> successCallback,
35241                          optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
35242
35243     void loadMessageAttachment(<ref>MessageAttachment</ref> attachment,
35244                                <ref>MessageAttachmentSuccessCallback</ref> successCallback,
35245                                optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
35246
35247     long sync(optional <ref>SuccessCallback</ref>? successCallback,
35248               optional <ref>ErrorCallback</ref>? errorCallback,
35249               optional unsigned long? limit) raises(<ref>WebAPIException</ref>);
35250
35251     long syncFolder(<ref>MessageFolder</ref> folder,
35252                     optional <ref>SuccessCallback</ref>? successCallback,
35253                     optional <ref>ErrorCallback</ref>? errorCallback,
35254                     optional unsigned long? limit) raises(<ref>WebAPIException</ref>);
35255
35256     void stopSync(long opId) raises(<ref>WebAPIException</ref>);
35257
35258     readonly attribute <ref>MessageStorage</ref> messageStorage getraises(<ref>WebAPIException</ref>);
35259   };
35260
35261   [Callback=FunctionOnly, NoInterfaceObject] interface MessageRecipientsCallback {
35262
35263     void onsuccess(DOMString[] recipients);
35264
35265    };
35266
35267   [Callback=FunctionOnly, NoInterfaceObject] interface MessageBodySuccessCallback {
35268
35269      void onsuccess(<ref>Message</ref> message);
35270   };
35271
35272   [Callback=FunctionOnly, NoInterfaceObject] interface MessageAttachmentSuccessCallback {
35273
35274      void onsuccess(<ref>MessageAttachment</ref> attachment);
35275    };
35276
35277   [NoInterfaceObject] interface MessageStorage {
35278
35279     void addDraftMessage(<ref>Message</ref> message,
35280                          optional <ref>SuccessCallback</ref>? successCallback,
35281                          optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
35282
35283     void findMessages(<ref>AbstractFilter</ref> filter,
35284                       <ref>MessageArraySuccessCallback</ref> successCallback,
35285                       optional <ref>ErrorCallback</ref>? errorCallback,
35286                       optional <ref>SortMode</ref>? sort,
35287                       optional unsigned long? limit,
35288                       optional unsigned long? offset) raises(<ref>WebAPIException</ref>);
35289
35290     void removeMessages(<ref>Message</ref>[] messages,
35291                         optional <ref>SuccessCallback</ref>? successCallback,
35292                         optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
35293
35294     void updateMessages(<ref>Message</ref>[] messages,
35295                         optional <ref>SuccessCallback</ref>? successCallback,
35296                         optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
35297
35298     void findConversations(<ref>AbstractFilter</ref> filter,
35299                            <ref>MessageConversationArraySuccessCallback</ref> successCallback,
35300                            optional <ref>ErrorCallback</ref>? errorCallback,
35301                            optional <ref>SortMode</ref>? sort,
35302                            optional unsigned long? limit,
35303                            optional unsigned long? offset) raises(<ref>WebAPIException</ref>);
35304
35305     void removeConversations(<ref>MessageConversation</ref>[] conversations,
35306                              optional <ref>SuccessCallback</ref>? successCallback,
35307                              optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
35308
35309
35310     void findFolders(<ref>AbstractFilter</ref> filter,
35311                      <ref>MessageFolderArraySuccessCallback</ref> successCallback,
35312                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
35313
35314     long addMessagesChangeListener(<ref>MessagesChangeCallback</ref> messagesChangeCallback,
35315                                    optional <ref>AbstractFilter</ref>? filter) raises(<ref>WebAPIException</ref>);
35316
35317     long addConversationsChangeListener(<ref>MessageConversationsChangeCallback</ref> conversationsChangeCallback,
35318                                         optional <ref>AbstractFilter</ref>? filter) raises(<ref>WebAPIException</ref>);
35319
35320     long addFoldersChangeListener(<ref>MessageFoldersChangeCallback</ref> foldersChangeCallback,
35321                                   optional <ref>AbstractFilter</ref>? filter) raises(<ref>WebAPIException</ref>);
35322
35323     void removeChangeListener(long watchId) raises(<ref>WebAPIException</ref>);
35324   };
35325
35326   [Callback=FunctionOnly, NoInterfaceObject] interface MessageArraySuccessCallback {
35327
35328     void onsuccess(<ref>Message</ref>[] messages);
35329   };
35330
35331   [Callback=FunctionOnly, NoInterfaceObject] interface MessageConversationArraySuccessCallback {
35332
35333     void onsuccess(<ref>MessageConversation</ref>[] conversations);
35334   };
35335
35336   [Callback=FunctionOnly, NoInterfaceObject] interface MessageFolderArraySuccessCallback {
35337
35338     void onsuccess(<ref>MessageFolder</ref>[] folders);
35339   };
35340
35341   [Callback, NoInterfaceObject] interface MessagesChangeCallback {
35342
35343     void messagesadded(<ref>Message</ref>[] addedMessages);
35344
35345     void messagesupdated(<ref>Message</ref>[] updatedMessages);
35346
35347     void messagesremoved(<ref>Message</ref>[] removedMessages);
35348   };
35349
35350   [Callback, NoInterfaceObject] interface MessageConversationsChangeCallback {
35351
35352     void conversationsadded(<ref>MessageConversation</ref>[] addedConversations);
35353
35354     void conversationsupdated(<ref>MessageConversation</ref>[] updatedConversations);
35355
35356     void conversationsremoved(<ref>MessageConversation</ref>[] removedConversations);
35357   };
35358
35359   [Callback, NoInterfaceObject] interface MessageFoldersChangeCallback {
35360  
35361     void foldersadded(<ref>MessageFolder</ref>[] addedFolders);
35362
35363     void foldersupdated(<ref>MessageFolder</ref>[] updatedFolders);
35364
35365     void foldersremoved(<ref>MessageFolder</ref>[] removedFolders);
35366   };
35367
35368   [NoInterfaceObject] interface MessageConversation {
35369
35370     readonly attribute <ref>MessageConvId</ref> id;
35371
35372     readonly attribute <ref>MessageServiceTag</ref> type;
35373
35374     readonly attribute Date timestamp;
35375      
35376     readonly attribute unsigned long messageCount;
35377
35378     readonly attribute unsigned long unreadMessages;
35379
35380     readonly attribute DOMString preview;
35381
35382     readonly attribute DOMString subject;
35383
35384     readonly attribute boolean isRead;
35385
35386     readonly attribute DOMString from;
35387
35388     readonly attribute DOMString[] to;
35389
35390     readonly attribute DOMString[] cc;
35391
35392     readonly attribute DOMString[] bcc;
35393
35394     readonly attribute <ref>MessageId</ref> lastMessageId;
35395   };
35396
35397   [NoInterfaceObject] interface MessageFolder {
35398
35399     readonly attribute <ref>MessageFolderId</ref> id;
35400
35401     readonly attribute <ref>MessageFolderId</ref> parentId;
35402
35403     readonly attribute DOMString serviceId;
35404
35405     readonly attribute <ref>MessageServiceTag</ref> contentType;
35406
35407     attribute DOMString name setraises(<ref>WebAPIException</ref>);
35408
35409     readonly attribute DOMString path;
35410
35411     readonly attribute DOMString type;
35412
35413     attribute boolean synchronizable setraises(<ref>WebAPIException</ref>);
35414   };
35415
35416 };</webidl>
35417     <descriptive>
35418         <brief>
35419  This API provides interfaces and methods for managing SMS, MMS, and email messages.
35420         </brief>
35421        <description>
35422         <p>
35423 The Messaging API provides access to these capabilities:
35424         </p>
35425         <ul>
35426           <li>
35427 Sending messages through different technologies: SMS, MMS, and email messages.          </li>
35428           <li>
35429 Retrieving available message services.          </li>
35430           <li>
35431 Searching for messages.          </li>
35432           <li>
35433 Managing messages: update, delete, and add.          </li>
35434           <li>
35435 Subscribing to receive notifications of message storage modifications.          </li>
35436           <li>
35437 Fetching conversations and subscribing to conversation updates.          </li>
35438         </ul>
35439         <p>
35440 For more information on the Messaging features, see <a href="../../org.tizen.web.appprogramming/html/guide/communication_guide/messaging.htm">Messaging Guide</a>.
35441         </p>
35442        </description>
35443         <version>
35444  1.0
35445         </version>
35446         <def-api-feature identifier="http://tizen.org/feature/network.telephony">
35447           <descriptive>
35448            <description>
35449             <p>
35450 To guarantee this application running on a device with SMS feature, define below in the config file: 
35451             </p>
35452            </description>
35453           </descriptive>
35454         </def-api-feature>
35455         <def-api-feature identifier="http://tizen.org/feature/network.telephony.mms">
35456           <descriptive>
35457            <description>
35458             <p>
35459 To guarantee this application running on a device with MMS feature, define below in the config file: 
35460             </p>
35461            </description>
35462           </descriptive>
35463         </def-api-feature>
35464     </descriptive>
35465     <Interface name="MessageManagerObject" id="::Messaging::MessageManagerObject">
35466       <webidl>  [NoInterfaceObject] interface MessageManagerObject {
35467     readonly attribute <ref>Messaging</ref> messaging;
35468   };</webidl>
35469       <descriptive>
35470           <brief>
35471  This interface defines what is instantiated by the Tizen object.
35472           </brief>
35473          <description>
35474           <p>
35475 There is a <em>tizen.messaging </em>object that allows access to the Messaging API.
35476           </p>
35477          </description>
35478           <version>
35479  1.0
35480           </version>
35481       </descriptive>
35482       <ExtendedAttributeList>
35483         <ExtendedAttribute name="NoInterfaceObject">
35484           <webidl>NoInterfaceObject</webidl>
35485         </ExtendedAttribute>
35486       </ExtendedAttributeList>
35487       <Attribute readonly="readonly" name="messaging" id="::Messaging::MessageManagerObject::messaging">
35488         <webidl>    readonly attribute <ref>Messaging</ref> messaging;</webidl>
35489         <Type name="Messaging"/>
35490       </Attribute>
35491     </Interface>
35492     <Implements name1="Tizen" name2="MessageManagerObject">
35493       <webidl>  <ref>Tizen</ref> implements <ref>MessageManagerObject</ref>;</webidl>
35494     </Implements>
35495     <Enum name="MessageServiceTag" id="::Messaging::MessageServiceTag">
35496       <webidl>  enum MessageServiceTag {&quot;messaging.sms&quot;, &quot;messaging.mms&quot;, &quot;messaging.email&quot; };</webidl>
35497       <descriptive>
35498           <brief>
35499  The supported Messaging service tags.
35500 The following values are supported in this release:
35501           </brief>
35502          <description>
35503           <ul>
35504             <li>
35505 messaging.sms, for SMS services            </li>
35506             <li>
35507 messaging.mms, for MMS services            </li>
35508             <li>
35509 messaging.email, for email services            </li>
35510           </ul>
35511          </description>
35512           <version>
35513  1.0
35514           </version>
35515       </descriptive>
35516       <EnumValue stringvalue="messaging.sms">
35517         <webidl>&quot;messaging.sms</webidl>
35518       </EnumValue>
35519       <EnumValue stringvalue="messaging.mms">
35520         <webidl> &quot;messaging.mms</webidl>
35521       </EnumValue>
35522       <EnumValue stringvalue="messaging.email">
35523         <webidl> &quot;messaging.email</webidl>
35524       </EnumValue>
35525     </Enum>
35526     <Typedef name="MessageId" id="::Messaging::MessageId">
35527       <webidl>  typedef DOMString MessageId;</webidl>
35528       <descriptive>
35529           <brief>
35530  The Message identifier.
35531           </brief>
35532           <version>
35533  1.0
35534           </version>
35535       </descriptive>
35536       <Type type="DOMString"/>
35537     </Typedef>
35538     <Typedef name="MessageAttachmentId" id="::Messaging::MessageAttachmentId">
35539       <webidl>  typedef DOMString MessageAttachmentId;</webidl>
35540       <descriptive>
35541           <brief>
35542  The MessageAttachment identifier within a message.
35543           </brief>
35544           <version>
35545  1.0
35546           </version>
35547       </descriptive>
35548       <Type type="DOMString"/>
35549     </Typedef>
35550     <Typedef name="MessageConvId" id="::Messaging::MessageConvId">
35551       <webidl>  typedef DOMString MessageConvId;</webidl>
35552       <descriptive>
35553           <brief>
35554  The MessageConversation identifier.
35555           </brief>
35556           <version>
35557  1.0
35558           </version>
35559       </descriptive>
35560       <Type type="DOMString"/>
35561     </Typedef>
35562     <Typedef name="MessageFolderId" id="::Messaging::MessageFolderId">
35563       <webidl>  typedef DOMString MessageFolderId;</webidl>
35564       <descriptive>
35565           <brief>
35566  The identifier of an email folder .
35567           </brief>
35568           <version>
35569  1.0
35570           </version>
35571       </descriptive>
35572       <Type type="DOMString"/>
35573     </Typedef>
35574     <Interface name="Message" id="::Messaging::Message">
35575       <webidl>  [Constructor(<ref>MessageServiceTag</ref> type, optional <ref>MessageInit</ref>? messageInitDict)]
35576   interface Message {
35577
35578     readonly attribute <ref>MessageId</ref>? id;
35579
35580     readonly attribute <ref>MessageConvId</ref>? conversationId;
35581
35582     readonly attribute <ref>MessageFolderId</ref>? folderId;
35583
35584     readonly attribute <ref>MessageServiceTag</ref> type;
35585
35586     readonly attribute Date? timestamp;
35587
35588     readonly attribute DOMString? from;
35589
35590     attribute DOMString[] to setraises(<ref>WebAPIException</ref>);
35591
35592     attribute DOMString[] cc setraises(<ref>WebAPIException</ref>);
35593
35594     attribute DOMString[] bcc setraises(<ref>WebAPIException</ref>);
35595
35596     attribute <ref>MessageBody</ref> body setraises(<ref>WebAPIException</ref>);
35597
35598     attribute boolean isRead setraises(<ref>WebAPIException</ref>);
35599
35600     readonly attribute boolean hasAttachment;
35601
35602     attribute boolean isHighPriority setraises(<ref>WebAPIException</ref>);
35603
35604     attribute DOMString subject setraises(<ref>WebAPIException</ref>);
35605
35606     readonly attribute <ref>MessageId</ref>? inResponseTo setraises(<ref>WebAPIException</ref>);
35607
35608     readonly attribute DOMString messageStatus;
35609
35610     attribute <ref>MessageAttachment</ref>[] attachments setraises(<ref>WebAPIException</ref>);
35611   };</webidl>
35612       <descriptive>
35613           <brief>
35614  Defines the content and attributes of a message.
35615           </brief>
35616          <description>
35617           <p>
35618 This interface allows a web application to define the set of properties
35619 linked to a message.
35620           </p>
35621           <p>
35622 It also allows an application to retrieve the content of a
35623 message through <em>MessageStorage </em>methods. In these
35624 cases, the implementation can return, in some situations, only the meta-information
35625 of a message without the loaded body. In such situations, the method <em>MessageService.loadMessageBody() </em>should be used.
35626           </p>
35627          </description>
35628           <version>
35629  1.0
35630           </version>
35631           <Code> // Define the success callback.
35632  var messageSentCallback = function(recipients) {
35633    console.log(&quot;Message sent successfully to &quot; + recipients.length + &quot; recipients.&quot;);
35634  }
35635
35636  // Define the error callback.
35637  function errorCallback(err) {
35638    console.log(err.name + &quot; error: &quot; + err.message);
35639  }
35640  
35641  function serviceListCB(services) {
35642    if (services.length > 0) {
35643       var msg = new tizen.Message(&quot;messaging.sms&quot;, {plainBody: &quot;Tizen first SMS message.&quot;});
35644       services[0].sendMessage(msg, messageSentCallback, errorCallback);
35645    }
35646  }
35647
35648  tizen.messaging.getMessageServices(&quot;messaging.sms&quot;,
35649                                     serviceListCB,
35650                                     errorCallback);
35651  </Code>
35652       </descriptive>
35653       <ExtendedAttributeList>
35654         <ExtendedAttribute name="Constructor">
35655           <webidl>Constructor(<ref>MessageServiceTag</ref> type, optional <ref>MessageInit</ref>? messageInitDict)</webidl>
35656           <ArgumentList>
35657             <Argument name="type">
35658               <Type name="MessageServiceTag"/>
35659             </Argument>
35660             <Argument optional="optional" name="messageInitDict">
35661               <Type name="MessageInit" nullable="nullable"/>
35662             </Argument>
35663           </ArgumentList>
35664         </ExtendedAttribute>
35665       </ExtendedAttributeList>
35666       <Attribute readonly="readonly" name="id" id="::Messaging::Message::id">
35667         <webidl>    readonly attribute <ref>MessageId</ref>? id;</webidl>
35668         <descriptive>
35669             <brief>
35670  The message identifier.
35671             </brief>
35672            <description>
35673             <p>
35674 The ID is locally unique and persistent property, assigned by the device or the Web runtime (WRT).
35675 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>.
35676             </p>
35677             <p>
35678 By default, this attribute is set to <var>null</var>.
35679             </p>
35680            </description>
35681             <version>
35682  1.0
35683             </version>
35684         </descriptive>
35685         <Type name="MessageId" nullable="nullable"/>
35686       </Attribute>
35687       <Attribute readonly="readonly" name="conversationId" id="::Messaging::Message::conversationId">
35688         <webidl>    readonly attribute <ref>MessageConvId</ref>? conversationId;</webidl>
35689         <descriptive>
35690             <brief>
35691  The identifier of the conversation to which the message belongs.
35692             </brief>
35693            <description>
35694             <p>
35695 By default, this attribute is set to <var>null</var>.
35696             </p>
35697            </description>
35698             <version>
35699  1.0
35700             </version>
35701         </descriptive>
35702         <Type name="MessageConvId" nullable="nullable"/>
35703       </Attribute>
35704       <Attribute readonly="readonly" name="folderId" id="::Messaging::Message::folderId">
35705         <webidl>    readonly attribute <ref>MessageFolderId</ref>? folderId;</webidl>
35706         <descriptive>
35707             <brief>
35708  The identifier of the folder to which the message belongs.
35709             </brief>
35710            <description>
35711             <p>
35712 By default, this attribute is set to null.
35713             </p>
35714             <p>
35715 For SMS and MMS, <em>folderId </em>can be one of these values:
35716             </p>
35717             <ul>
35718               <li>
35719 INBOX = 1,              </li>
35720               <li>
35721 OUTBOX = 2,              </li>
35722               <li>
35723 DRAFTS = 3,              </li>
35724               <li>
35725 SENTBOX = 4              </li>
35726             </ul>
35727            </description>
35728             <version>
35729  1.0
35730             </version>
35731         </descriptive>
35732         <Type name="MessageFolderId" nullable="nullable"/>
35733       </Attribute>
35734       <Attribute readonly="readonly" name="type" id="::Messaging::Message::type">
35735         <webidl>    readonly attribute <ref>MessageServiceTag</ref> type;</webidl>
35736         <descriptive>
35737             <brief>
35738  The type of a given message.          
35739             </brief>
35740             <version>
35741  1.0
35742             </version>
35743         </descriptive>
35744         <Type name="MessageServiceTag"/>
35745       </Attribute>
35746       <Attribute readonly="readonly" name="timestamp" id="::Messaging::Message::timestamp">
35747         <webidl>    readonly attribute Date? timestamp;</webidl>
35748         <descriptive>
35749             <brief>
35750  The timestamp of a message.
35751             </brief>
35752            <description>
35753             <p>
35754 For a received message, the timestamps indicates the time at which a message is received.
35755 For a sent message, the timestamp indicates the time at which a message is sent.
35756 For a draft message, the timestamp indicates the time at which a message is added.
35757 By default, this attribute is set to <var>null</var>.
35758             </p>
35759            </description>
35760             <version>
35761  1.0
35762             </version>
35763         </descriptive>
35764         <Type type="Date" nullable="nullable"/>
35765       </Attribute>
35766       <Attribute readonly="readonly" name="from" id="::Messaging::Message::from">
35767         <webidl>    readonly attribute DOMString? from;</webidl>
35768         <descriptive>
35769             <brief>
35770  The source address (or source phone number) of a message.
35771             </brief>
35772            <description>
35773             <p>
35774 This property is set up by the device or the web runtime environment.
35775 By default, this attribute is set to null.
35776             </p>
35777            </description>
35778             <version>
35779  1.0
35780             </version>
35781         </descriptive>
35782         <Type type="DOMString" nullable="nullable"/>
35783       </Attribute>
35784       <Attribute name="to" id="::Messaging::Message::to">
35785         <webidl>    attribute DOMString[] to setraises(<ref>WebAPIException</ref>);</webidl>
35786         <descriptive>
35787             <brief>
35788  The destination of a message.
35789             </brief>
35790             <version>
35791  1.0
35792             </version>
35793         </descriptive>
35794         <Type type="array">
35795           <Type type="DOMString"/>
35796         </Type>
35797         <SetRaises>
35798           <RaiseException name="WebAPIException"/>
35799         </SetRaises>
35800       </Attribute>
35801       <Attribute name="cc" id="::Messaging::Message::cc">
35802         <webidl>    attribute DOMString[] cc setraises(<ref>WebAPIException</ref>);</webidl>
35803         <descriptive>
35804             <brief>
35805  The carbon copy address of a message.
35806             </brief>
35807            <description>
35808             <p>
35809 This property is used only for email messages.
35810             </p>
35811            </description>
35812             <version>
35813  1.0
35814             </version>
35815         </descriptive>
35816         <Type type="array">
35817           <Type type="DOMString"/>
35818         </Type>
35819         <SetRaises>
35820           <RaiseException name="WebAPIException"/>
35821         </SetRaises>
35822       </Attribute>
35823       <Attribute name="bcc" id="::Messaging::Message::bcc">
35824         <webidl>    attribute DOMString[] bcc setraises(<ref>WebAPIException</ref>);</webidl>
35825         <descriptive>
35826             <brief>
35827  The blind carbon copy (bcc) address of a message.
35828             </brief>
35829            <description>
35830             <p>
35831 This property is used only with email messages.
35832             </p>
35833            </description>
35834             <version>
35835  1.0
35836             </version>
35837         </descriptive>
35838         <Type type="array">
35839           <Type type="DOMString"/>
35840         </Type>
35841         <SetRaises>
35842           <RaiseException name="WebAPIException"/>
35843         </SetRaises>
35844       </Attribute>
35845       <Attribute name="body" id="::Messaging::Message::body">
35846         <webidl>    attribute <ref>MessageBody</ref> body setraises(<ref>WebAPIException</ref>);</webidl>
35847         <descriptive>
35848             <brief>
35849  An attribute to store the body of a message.
35850             </brief>
35851             <version>
35852  1.0
35853             </version>
35854         </descriptive>
35855         <Type name="MessageBody"/>
35856         <SetRaises>
35857           <RaiseException name="WebAPIException"/>
35858         </SetRaises>
35859       </Attribute>
35860       <Attribute name="isRead" id="::Messaging::Message::isRead">
35861         <webidl>    attribute boolean isRead setraises(<ref>WebAPIException</ref>);</webidl>
35862         <descriptive>
35863             <brief>
35864  An attribute to indicate the read state for a message.
35865             </brief>
35866            <description>
35867             <p>
35868 This property is set to <var>true</var> if the message has been read. Else it is set to <var>false</var>.
35869             </p>
35870            </description>
35871             <version>
35872  1.0
35873             </version>
35874         </descriptive>
35875         <Type type="boolean"/>
35876         <SetRaises>
35877           <RaiseException name="WebAPIException"/>
35878         </SetRaises>
35879       </Attribute>
35880       <Attribute readonly="readonly" name="hasAttachment" id="::Messaging::Message::hasAttachment">
35881         <webidl>    readonly attribute boolean hasAttachment;</webidl>
35882         <descriptive>
35883             <brief>
35884  An attribute to indicate whether an attachment(s) exists or not.
35885             </brief>
35886            <description>
35887             <p>
35888 It is set to <var>true</var> if a message has one or more attachments.
35889             </p>
35890             <p>
35891 This property is used only with email and MMS messages.(It is valid when body is loaded)
35892             </p>
35893            </description>
35894             <version>
35895  1.0
35896             </version>
35897         </descriptive>
35898         <Type type="boolean"/>
35899       </Attribute>
35900       <Attribute name="isHighPriority" id="::Messaging::Message::isHighPriority">
35901         <webidl>    attribute boolean isHighPriority setraises(<ref>WebAPIException</ref>);</webidl>
35902         <descriptive>
35903             <brief>
35904  An attribute to indicate the priority of a message.
35905             </brief>
35906            <description>
35907             <p>
35908 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.
35909             </p>
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="boolean"/>
35919         <SetRaises>
35920           <RaiseException name="WebAPIException"/>
35921         </SetRaises>
35922       </Attribute>
35923       <Attribute name="subject" id="::Messaging::Message::subject">
35924         <webidl>    attribute DOMString subject setraises(<ref>WebAPIException</ref>);</webidl>
35925         <descriptive>
35926             <brief>
35927  An attribute to store the subject of a message.
35928             </brief>
35929            <description>
35930             <p>
35931 This property is used only with email and MMS messages.
35932             </p>
35933            </description>
35934             <version>
35935  1.0
35936             </version>
35937         </descriptive>
35938         <Type type="DOMString"/>
35939         <SetRaises>
35940           <RaiseException name="WebAPIException"/>
35941         </SetRaises>
35942       </Attribute>
35943       <Attribute readonly="readonly" name="inResponseTo" id="::Messaging::Message::inResponseTo">
35944         <webidl>    readonly attribute <ref>MessageId</ref>? inResponseTo setraises(<ref>WebAPIException</ref>);</webidl>
35945         <descriptive>
35946             <brief>
35947  The identifier of the original message.
35948             </brief>
35949            <description>
35950             <p>
35951 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>.
35952             </p>
35953            </description>
35954             <version>
35955  1.0
35956             </version>
35957         </descriptive>
35958         <Type name="MessageId" nullable="nullable"/>
35959         <SetRaises>
35960           <RaiseException name="WebAPIException"/>
35961         </SetRaises>
35962       </Attribute>
35963       <Attribute readonly="readonly" name="messageStatus" id="::Messaging::Message::messageStatus">
35964         <webidl>    readonly attribute DOMString messageStatus;</webidl>
35965         <descriptive>
35966             <brief>
35967  The status of a given message.
35968             </brief>
35969            <description>
35970             <p>
35971 It can be one of these values:
35972             </p>
35973             <ul>
35974               <li>
35975 SENT              </li>
35976               <li>
35977 SENDING              </li>
35978               <li>
35979 FAILED              </li>
35980               <li>
35981 DRAFT              </li>
35982             </ul>
35983             <p>
35984 If the status of the current message does not correspond to any item from
35985 the list, an empty value is returned.
35986             </p>
35987            </description>
35988             <version>
35989  1.0
35990             </version>
35991         </descriptive>
35992         <Type type="DOMString"/>
35993       </Attribute>
35994       <Attribute name="attachments" id="::Messaging::Message::attachments">
35995         <webidl>    attribute <ref>MessageAttachment</ref>[] attachments setraises(<ref>WebAPIException</ref>);</webidl>
35996         <descriptive>
35997             <brief>
35998  The list of the message attachments.
35999             </brief>
36000            <description>
36001             <p>
36002 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).
36003             </p>
36004            </description>
36005             <version>
36006  1.0
36007             </version>
36008             <Code> // Define the success callback.
36009  function serviceListCB(services) {
36010      if (services.length > 0) {
36011          var msg = new tizen.Message(&quot;messaging.email&quot;);    
36012          msg.attachments = [new tizen.MessageAttachment(&quot;images/myimage.png&quot;, &quot;image/png&quot;),
36013                             new tizen.MessageAttachment(&quot;documents/mydoc.pdf&quot;, &quot;text/pdf&quot;)];
36014      }
36015  }
36016
36017  tizen.messaging.getMessageServices(&quot;messaging.email&quot;, serviceListCB);
36018
36019      
36020 </Code>
36021         </descriptive>
36022         <Type type="array">
36023           <Type name="MessageAttachment"/>
36024         </Type>
36025         <SetRaises>
36026           <RaiseException name="WebAPIException"/>
36027         </SetRaises>
36028       </Attribute>
36029     </Interface>
36030     <Dictionary name="MessageInit" id="::Messaging::MessageInit">
36031       <webidl>  dictionary MessageInit
36032   {
36033
36034     DOMString subject;
36035
36036     DOMString[] to;
36037
36038     DOMString[] cc;
36039
36040     DOMString[] bcc;
36041
36042     DOMString plainBody;
36043
36044     DOMString htmlBody;
36045
36046     boolean isHighPriority;
36047   };</webidl>
36048       <descriptive>
36049           <brief>
36050  Provides specific message attributes upon message creation.
36051           </brief>
36052          <description>
36053           <p>
36054 This interface is used to input parameters when messages are created using
36055 the Message constructor.
36056           </p>
36057           <p>
36058 All the attributes are optional and are <var>undefined </var>by default, unless otherwise stated in the parameter description.
36059           </p>
36060          </description>
36061           <version>
36062  1.0
36063           </version>
36064       </descriptive>
36065       <DictionaryMember name="subject" id="::Messaging::MessageInit::subject">
36066         <webidl>    DOMString subject;</webidl>
36067         <descriptive>
36068             <brief>
36069  The subject of a message.
36070             </brief>
36071            <description>
36072             <p>
36073 This property is used only with email and MMS messages.
36074             </p>
36075            </description>
36076             <version>
36077  1.0
36078             </version>
36079         </descriptive>
36080         <Type type="DOMString"/>
36081       </DictionaryMember>
36082       <DictionaryMember name="to" id="::Messaging::MessageInit::to">
36083         <webidl>    DOMString[] to;</webidl>
36084         <descriptive>
36085             <brief>
36086  The destination addresses (or phone numbers) of a message.
36087             </brief>
36088             <version>
36089  1.0
36090             </version>
36091         </descriptive>
36092         <Type type="array">
36093           <Type type="DOMString"/>
36094         </Type>
36095       </DictionaryMember>
36096       <DictionaryMember name="cc" id="::Messaging::MessageInit::cc">
36097         <webidl>    DOMString[] cc;</webidl>
36098         <descriptive>
36099             <brief>
36100  The carbon copy addresses of a message.
36101             </brief>
36102            <description>
36103             <p>
36104 This property is used only with email messages.
36105             </p>
36106            </description>
36107             <version>
36108  1.0
36109             </version>
36110         </descriptive>
36111         <Type type="array">
36112           <Type type="DOMString"/>
36113         </Type>
36114       </DictionaryMember>
36115       <DictionaryMember name="bcc" id="::Messaging::MessageInit::bcc">
36116         <webidl>    DOMString[] bcc;</webidl>
36117         <descriptive>
36118             <brief>
36119  The blind carbon copy addresses of a message.
36120             </brief>
36121            <description>
36122             <p>
36123 This property is used only with email messages.
36124             </p>
36125            </description>
36126             <version>
36127  1.0
36128             </version>
36129         </descriptive>
36130         <Type type="array">
36131           <Type type="DOMString"/>
36132         </Type>
36133       </DictionaryMember>
36134       <DictionaryMember name="plainBody" id="::Messaging::MessageInit::plainBody">
36135         <webidl>    DOMString plainBody;</webidl>
36136         <descriptive>
36137             <brief>
36138  The plain text representation of a message body.
36139             </brief>
36140             <version>
36141  1.0
36142             </version>
36143         </descriptive>
36144         <Type type="DOMString"/>
36145       </DictionaryMember>
36146       <DictionaryMember name="htmlBody" id="::Messaging::MessageInit::htmlBody">
36147         <webidl>    DOMString htmlBody;</webidl>
36148         <descriptive>
36149             <brief>
36150  The HTML representation of a message body.
36151             </brief>
36152            <description>
36153             <p>
36154 This property is used only with email messages.
36155             </p>
36156            </description>
36157             <version>
36158  1.0
36159             </version>
36160         </descriptive>
36161         <Type type="DOMString"/>
36162       </DictionaryMember>
36163       <DictionaryMember name="isHighPriority" id="::Messaging::MessageInit::isHighPriority">
36164         <webidl>    boolean isHighPriority;</webidl>
36165         <descriptive>
36166             <brief>
36167  The priority of a message.
36168             </brief>
36169            <description>
36170             <p>
36171 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.
36172             </p>
36173             <p>
36174 This property is used only with email messages.
36175             </p>
36176            </description>
36177             <version>
36178  1.0
36179             </version>
36180         </descriptive>
36181         <Type type="boolean"/>
36182       </DictionaryMember>
36183     </Dictionary>
36184     <Interface name="MessageBody" id="::Messaging::MessageBody">
36185       <webidl>  [NoInterfaceObject] interface MessageBody {
36186
36187     readonly attribute <ref>MessageId</ref> messageId;
36188
36189     readonly attribute boolean loaded;
36190
36191     attribute DOMString plainBody setraises(<ref>WebAPIException</ref>);
36192
36193     attribute DOMString htmlBody setraises(<ref>WebAPIException</ref>);
36194
36195     attribute <ref>MessageAttachment</ref>[] inlineAttachments setraises(<ref>WebAPIException</ref>);
36196   };</webidl>
36197       <descriptive>
36198           <brief>
36199  This interface describes a message body.
36200           </brief>
36201          <description>
36202           <p>
36203 Message body is comprised of a plain text, an HTML, and inline attachments.
36204           </p>
36205          </description>
36206           <version>
36207  1.0
36208           </version>
36209       </descriptive>
36210       <ExtendedAttributeList>
36211         <ExtendedAttribute name="NoInterfaceObject">
36212           <webidl>NoInterfaceObject</webidl>
36213         </ExtendedAttribute>
36214       </ExtendedAttributeList>
36215       <Attribute readonly="readonly" name="messageId" id="::Messaging::MessageBody::messageId">
36216         <webidl>    readonly attribute <ref>MessageId</ref> messageId;</webidl>
36217         <descriptive>
36218             <brief>
36219  The ID of a parent message.
36220             </brief>
36221            <description>
36222             <p>
36223 It holds the ID of the message containing this body.
36224             </p>
36225            </description>
36226             <version>
36227  1.0
36228             </version>
36229         </descriptive>
36230         <Type name="MessageId"/>
36231       </Attribute>
36232       <Attribute readonly="readonly" name="loaded" id="::Messaging::MessageBody::loaded">
36233         <webidl>    readonly attribute boolean loaded;</webidl>
36234         <descriptive>
36235             <brief>
36236  An attribute to indicate whether the message body has been loaded or not.
36237             </brief>
36238            <description>
36239             <p>
36240 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.
36241 The default value is <var>false</var>.
36242             </p>
36243            </description>
36244             <version>
36245  1.0
36246             </version>
36247         </descriptive>
36248         <Type type="boolean"/>
36249       </Attribute>
36250       <Attribute name="plainBody" id="::Messaging::MessageBody::plainBody">
36251         <webidl>    attribute DOMString plainBody setraises(<ref>WebAPIException</ref>);</webidl>
36252         <descriptive>
36253             <brief>
36254  The plain text representation of a message body.
36255             </brief>
36256             <version>
36257  1.0
36258             </version>
36259         </descriptive>
36260         <Type type="DOMString"/>
36261         <SetRaises>
36262           <RaiseException name="WebAPIException"/>
36263         </SetRaises>
36264       </Attribute>
36265       <Attribute name="htmlBody" id="::Messaging::MessageBody::htmlBody">
36266         <webidl>    attribute DOMString htmlBody setraises(<ref>WebAPIException</ref>);</webidl>
36267         <descriptive>
36268             <brief>
36269  The HTML representation of a message body.
36270             </brief>
36271            <description>
36272             <p>
36273 This attribute holds an empty string if the message does not have any HTML body content.
36274 This property is used only with email messages.
36275             </p>
36276            </description>
36277             <version>
36278  1.0
36279             </version>
36280         </descriptive>
36281         <Type type="DOMString"/>
36282         <SetRaises>
36283           <RaiseException name="WebAPIException"/>
36284         </SetRaises>
36285       </Attribute>
36286       <Attribute name="inlineAttachments" id="::Messaging::MessageBody::inlineAttachments">
36287         <webidl>    attribute <ref>MessageAttachment</ref>[] inlineAttachments setraises(<ref>WebAPIException</ref>);</webidl>
36288         <descriptive>
36289             <brief>
36290  The list of the inline attachments.
36291             </brief>
36292            <description>
36293             <p>
36294 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).
36295             </p>
36296             <p>
36297 To indicate where to show an inline attachment within the HTML body, a link of the following format should be provided:
36298 &quot;&lt;img src=&quot;The file name of a inline attachment&quot;>&quot; 
36299 This property is used only with email messages.
36300             </p>
36301            </description>
36302             <version>
36303  1.0
36304             </version>
36305             <Code> // Define the success callback.
36306  function serviceListCB(services) {
36307      if (services.length > 0) {
36308          var msg = new tizen.Message(&quot;messaging.email&quot;);
36309          msg.body.htmlBody = &quot;&lt;html>&lt;body>&lt;img src='myimage.png'>&lt;/body>&lt;/html>&quot;;
36310          msg.body.inlineAttachments = [new tizen.MessageAttachment(&quot;images/myimage.png&quot;)];
36311      }
36312  }
36313
36314  tizen.messaging.getMessageServices(&quot;messaging.email&quot;, serviceListCB);
36315
36316  </Code>
36317         </descriptive>
36318         <Type type="array">
36319           <Type name="MessageAttachment"/>
36320         </Type>
36321         <SetRaises>
36322           <RaiseException name="WebAPIException"/>
36323         </SetRaises>
36324       </Attribute>
36325     </Interface>
36326     <Interface name="MessageAttachment" id="::Messaging::MessageAttachment">
36327       <webidl>  [Constructor(DOMString filePath, optional DOMString? mimeType)]
36328   interface MessageAttachment {
36329     
36330     readonly attribute <ref>MessageAttachmentId</ref>? id;
36331     
36332     readonly attribute <ref>MessageId</ref>? messageId;
36333     
36334     readonly attribute DOMString? mimeType;
36335     
36336     readonly attribute DOMString? filePath;
36337   };</webidl>
36338       <descriptive>
36339           <brief>
36340  This interface defines the content and attributes of a message attachment.
36341           </brief>
36342           <version>
36343  1.0
36344           </version>
36345       </descriptive>
36346       <ExtendedAttributeList>
36347         <ExtendedAttribute name="Constructor">
36348           <webidl>Constructor(DOMString filePath, optional DOMString? mimeType)</webidl>
36349           <ArgumentList>
36350             <Argument name="filePath">
36351               <Type type="DOMString"/>
36352             </Argument>
36353             <Argument optional="optional" name="mimeType">
36354               <Type type="DOMString" nullable="nullable"/>
36355             </Argument>
36356           </ArgumentList>
36357         </ExtendedAttribute>
36358       </ExtendedAttributeList>
36359       <Attribute readonly="readonly" name="id" id="::Messaging::MessageAttachment::id">
36360         <webidl>    readonly attribute <ref>MessageAttachmentId</ref>? id;</webidl>
36361         <descriptive>
36362             <brief>
36363  The ID of an attachment.
36364             </brief>
36365            <description>
36366             <p>
36367 It holds the identifier of the attachment within its parent message.
36368             </p>
36369             <p>
36370 By default, this attribute is set to <var>null</var>.
36371             </p>
36372            </description>
36373             <version>
36374  1.0
36375             </version>
36376         </descriptive>
36377         <Type name="MessageAttachmentId" nullable="nullable"/>
36378       </Attribute>
36379       <Attribute readonly="readonly" name="messageId" id="::Messaging::MessageAttachment::messageId">
36380         <webidl>    readonly attribute <ref>MessageId</ref>? messageId;</webidl>
36381         <descriptive>
36382             <brief>
36383  The ID of a parent message.
36384             </brief>
36385            <description>
36386             <p>
36387 By default, this attribute is set to <var>null</var>.
36388             </p>
36389            </description>
36390             <version>
36391  1.0
36392             </version>
36393         </descriptive>
36394         <Type name="MessageId" nullable="nullable"/>
36395       </Attribute>
36396       <Attribute readonly="readonly" name="mimeType" id="::Messaging::MessageAttachment::mimeType">
36397         <webidl>    readonly attribute DOMString? mimeType;</webidl>
36398         <descriptive>
36399             <brief>
36400  The attachment MIME type.
36401             </brief>
36402            <description>
36403             <p>
36404 It describes the MIME type of an attachment, for example; &quot;text/html&quot;.
36405             </p>
36406             <p>
36407 By default, this attribute is set to <var>null</var>.
36408             </p>
36409            </description>
36410             <version>
36411  1.0
36412             </version>
36413         </descriptive>
36414         <Type type="DOMString" nullable="nullable"/>
36415       </Attribute>
36416       <Attribute readonly="readonly" name="filePath" id="::Messaging::MessageAttachment::filePath">
36417         <webidl>    readonly attribute DOMString? filePath;</webidl>
36418         <descriptive>
36419             <brief>
36420  The location path to a loaded attachment file.
36421             </brief>
36422            <description>
36423             <p>
36424 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.
36425             </p>
36426            </description>
36427             <version>
36428  1.0
36429             </version>
36430         </descriptive>
36431         <Type type="DOMString" nullable="nullable"/>
36432       </Attribute>
36433     </Interface>
36434     <Interface name="Messaging" id="::Messaging::Messaging">
36435       <webidl>  [NoInterfaceObject] interface Messaging {
36436
36437     void getMessageServices(<ref>MessageServiceTag</ref> messageServiceType,
36438                             <ref>MessageServiceArraySuccessCallback</ref> successCallback,
36439                             optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
36440   };</webidl>
36441       <descriptive>
36442           <brief>
36443  This interface retrieves messaging services.
36444           </brief>
36445          <description>
36446           <p>
36447 Fetches all existing messaging services by type or a messaging service of a given type
36448 for concrete account.
36449           </p>
36450          </description>
36451           <version>
36452  1.0
36453           </version>
36454           <Code> // Define the success callback.
36455  function serviceListCB(services) {
36456    if (services.length > 0) {
36457      var msg = new tizen.Message(&quot;messaging.sms&quot;);
36458    }
36459  }
36460
36461  // Define error callback.
36462  function errorCallback(error) {
36463    console.log(&quot;Cannot get messaging service &quot; + error.message);
36464  }
36465
36466  tizen.messaging.getMessageServices(&quot;messaging.sms&quot;, serviceListCB,
36467                                      errorCallback);
36468  </Code>
36469       </descriptive>
36470       <ExtendedAttributeList>
36471         <ExtendedAttribute name="NoInterfaceObject">
36472           <webidl>NoInterfaceObject</webidl>
36473         </ExtendedAttribute>
36474       </ExtendedAttributeList>
36475       <Operation name="getMessageServices" id="::Messaging::Messaging::getMessageServices">
36476         <webidl>    void getMessageServices(<ref>MessageServiceTag</ref> messageServiceType,
36477                             <ref>MessageServiceArraySuccessCallback</ref> successCallback,
36478                             optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
36479         <descriptive>
36480             <brief>
36481  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.
36482             </brief>
36483            <description>
36484             <p>
36485 The errorCallback is launched with these error types:
36486             </p>
36487             <ul>
36488               <li>
36489 InvalidValuesError - If any of the input parameters contain an invalid value, the encoding is not valid or onsuccess is null. 
36490 Please note that to allow developers to ignore errors, errorCallback accepts null as a valid value.              </li>
36491               <li>
36492 UnknownError - In any other error case.              </li>
36493             </ul>
36494            </description>
36495             <version>
36496  1.0
36497             </version>
36498             <Code> // Define the error callback.
36499  function errorCallback(error) {
36500    console.log(&quot;Cannot get messaging service &quot; + error.message);
36501  }
36502
36503  // Define the success callback.
36504  function serviceListCB(services) {
36505    console.log(&quot;Found &quot; + services.length + &quot;email services&quot;);
36506  }
36507
36508  tizen.messaging.getMessageServices(&quot;messaging.email&quot;, serviceListCB,
36509                                       errorCallback);
36510  </Code>
36511         </descriptive>
36512         <Type type="void"/>
36513         <ArgumentList>
36514           <Argument name="messageServiceType">
36515             <descriptive>
36516                 <description><p>
36517  Type of the services to be retrieved.
36518                 </p></description>
36519             </descriptive>
36520             <Type name="MessageServiceTag"/>
36521           </Argument>
36522           <Argument name="successCallback">
36523             <descriptive>
36524                 <description><p>
36525  The method invoked when the services are successfully retrieved.
36526                 </p></description>
36527             </descriptive>
36528             <Type name="MessageServiceArraySuccessCallback"/>
36529           </Argument>
36530           <Argument optional="optional" name="errorCallback">
36531             <descriptive>
36532                 <description><p>
36533  The method invoked when an error occurs.
36534                 </p></description>
36535             </descriptive>
36536             <Type name="ErrorCallback" nullable="nullable"/>
36537           </Argument>
36538         </ArgumentList>
36539         <Raises>
36540           <RaiseException name="WebAPIException">
36541             <descriptive>
36542                 <description><p>
36543  with error type TypeMismatchError, if any input parameter
36544 is not compatible with the expected type for that parameter.
36545                 </p></description>
36546                 <description><p>
36547  with error type NotSupportedError, if this feature is not supported.
36548                 </p></description>
36549             </descriptive>
36550           </RaiseException>
36551         </Raises>
36552       </Operation>
36553     </Interface>
36554     <Interface name="MessageServiceArraySuccessCallback" id="::Messaging::MessageServiceArraySuccessCallback">
36555       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface MessageServiceArraySuccessCallback {
36556
36557     void onsuccess(<ref>MessageService</ref>[] services);
36558
36559   };</webidl>
36560       <descriptive>
36561           <brief>
36562  Defines callback(s) for retrieving message services.
36563           </brief>
36564           <version>
36565  1.0
36566           </version>
36567       </descriptive>
36568       <ExtendedAttributeList>
36569         <ExtendedAttribute name="Callback" value="FunctionOnly">
36570           <webidl>Callback</webidl>
36571         </ExtendedAttribute>
36572         <ExtendedAttribute name="NoInterfaceObject">
36573           <webidl> NoInterfaceObject</webidl>
36574         </ExtendedAttribute>
36575       </ExtendedAttributeList>
36576       <Operation name="onsuccess" id="::Messaging::MessageServiceArraySuccessCallback::onsuccess">
36577         <webidl>    void onsuccess(<ref>MessageService</ref>[] services);</webidl>
36578         <descriptive>
36579             <brief>
36580  Called when finding message services is successful.
36581             </brief>
36582             <version>
36583  1.0
36584             </version>
36585         </descriptive>
36586         <Type type="void"/>
36587         <ArgumentList>
36588           <Argument name="services">
36589             <descriptive>
36590                 <description><p>
36591  Array of available <em>MessageService</em> objects on the device.
36592                 </p></description>
36593             </descriptive>
36594             <Type type="array">
36595               <Type name="MessageService"/>
36596             </Type>
36597           </Argument>
36598         </ArgumentList>
36599       </Operation>
36600     </Interface>
36601     <Interface name="MessageService" id="::Messaging::MessageService">
36602       <webidl>  [NoInterfaceObject] interface MessageService {
36603
36604     readonly attribute DOMString id;
36605
36606     readonly attribute <ref>MessageServiceTag</ref> type;
36607
36608     readonly attribute DOMString name;
36609                     
36610     void sendMessage(<ref>Message</ref> message,
36611                      optional <ref>MessageRecipientsCallback</ref>? successCallback,
36612                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
36613
36614     void loadMessageBody(<ref>Message</ref> message,
36615                          <ref>MessageBodySuccessCallback</ref> successCallback,
36616                          optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
36617
36618     void loadMessageAttachment(<ref>MessageAttachment</ref> attachment,
36619                                <ref>MessageAttachmentSuccessCallback</ref> successCallback,
36620                                optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
36621
36622     long sync(optional <ref>SuccessCallback</ref>? successCallback,
36623               optional <ref>ErrorCallback</ref>? errorCallback,
36624               optional unsigned long? limit) raises(<ref>WebAPIException</ref>);
36625
36626     long syncFolder(<ref>MessageFolder</ref> folder,
36627                     optional <ref>SuccessCallback</ref>? successCallback,
36628                     optional <ref>ErrorCallback</ref>? errorCallback,
36629                     optional unsigned long? limit) raises(<ref>WebAPIException</ref>);
36630
36631     void stopSync(long opId) raises(<ref>WebAPIException</ref>);
36632
36633     readonly attribute <ref>MessageStorage</ref> messageStorage getraises(<ref>WebAPIException</ref>);
36634   };</webidl>
36635       <descriptive>
36636           <brief>
36637  This interface allows a web application to manipulate and send messages and supports the message creating, sending, and fetching capabilities.
36638           </brief>
36639          <description>
36640           <p>
36641 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.
36642           </p>
36643           <p>
36644 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.
36645           </p>
36646           <p>
36647 The interface allows fetching of the message body for a given message using loadMessageBody() method.
36648           </p>
36649          </description>
36650           <version>
36651  1.0
36652           </version>
36653           <Code> // Define the success callback.
36654  function messageSent(recipients) {
36655    console.log(&quot;The SMS has been sent&quot;);
36656  }
36657
36658  // Define the error callback.
36659  function messageFailed(error) {
36660    console.log(&quot;The SMS could not be sent &quot; + error.message);
36661  }
36662
36663  // Define service error callback.
36664  function serviceErrorCB(error) {
36665    console.log(&quot;Cannot get messaging service &quot; + error.message);
36666  }
36667
36668  // Define the success callback.
36669  function serviceListCB(services) {
36670    if (services.length > 0) {
36671      // SMS sending example
36672      var msg = new tizen.Message(&quot;messaging.sms&quot;, {plainBody:&quot;I will arrive in 10 minutes.&quot;,
36673                                   to:[&quot;+34666666666&quot;]});
36674      // Send request
36675      services[0].sendMessage(msg, messageSent, messageFailed);
36676    }
36677  }
36678
36679  tizen.messaging.getMessageServices(&quot;messaging.sms&quot;,
36680                                     serviceListCB,
36681                                     serviceErrorCB);
36682  </Code>
36683       </descriptive>
36684       <ExtendedAttributeList>
36685         <ExtendedAttribute name="NoInterfaceObject">
36686           <webidl>NoInterfaceObject</webidl>
36687         </ExtendedAttribute>
36688       </ExtendedAttributeList>
36689       <Attribute readonly="readonly" name="id" id="::Messaging::MessageService::id">
36690         <webidl>    readonly attribute DOMString id;</webidl>
36691         <descriptive>
36692             <brief>
36693  The unique identifier of this Messaging service. 
36694             </brief>
36695             <version>
36696  1.0.
36697             </version>
36698         </descriptive>
36699         <Type type="DOMString"/>
36700       </Attribute>
36701       <Attribute readonly="readonly" name="type" id="::Messaging::MessageService::type">
36702         <webidl>    readonly attribute <ref>MessageServiceTag</ref> type;</webidl>
36703         <descriptive>
36704             <brief>
36705  The tag supported by this messaging service.
36706             </brief>
36707             <version>
36708  1.0
36709             </version>
36710         </descriptive>
36711         <Type name="MessageServiceTag"/>
36712       </Attribute>
36713       <Attribute readonly="readonly" name="name" id="::Messaging::MessageService::name">
36714         <webidl>    readonly attribute DOMString name;</webidl>
36715         <descriptive>
36716             <brief>
36717  The messaging service name taken from the messaging service
36718             </brief>
36719             <version>
36720  1.0.
36721             </version>
36722         </descriptive>
36723         <Type type="DOMString"/>
36724       </Attribute>
36725       <Operation name="sendMessage" id="::Messaging::MessageService::sendMessage">
36726         <webidl>    void sendMessage(<ref>Message</ref> message,
36727                      optional <ref>MessageRecipientsCallback</ref>? successCallback,
36728                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
36729         <descriptive>
36730             <brief>
36731  Sends a specified message.
36732             </brief>
36733            <description>
36734             <p>
36735 For messaging technologies in which the message is sent individually to every recipient(such as SMS), individual notification must be supported as follows:
36736             </p>
36737             <p>
36738 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.
36739 These error types may be passed, depending on the error conditions:
36740             </p>
36741             <ul>
36742               <li>
36743  NetworkError - If the network connection is not accessible.              </li>
36744               <li>
36745  InvalidValuesError - If any of the input parameters contains an invalid value.              </li>
36746               <li>
36747  UnknownError - If any other error occurs.              </li>
36748             </ul>
36749             <p>
36750 The error message contains the name of the recipient who has failed to receive the sent message.
36751             </p>
36752             <p>
36753 When the operation is fully completed (that is, the implementation has the
36754 result of the send operation for all recipients), the onsuccess() 
36755 method of the successCallback will be invoked with an array of recipients who received 
36756 the sent message, as input parameter.
36757             </p>
36758            </description>
36759             <version>
36760  1.0
36761             </version>
36762             <privilegelevel>
36763  public
36764             </privilegelevel>
36765             <privilege>
36766  http://tizen.org/privilege/messaging.write
36767             </privilege>
36768             <Code> // Define the success callback
36769  function messageSent(recipients) {
36770    for (var i = 0; i &#60; recipients.length; i++) {
36771      console.log(&quot;The SMS has been sent to &quot; + recipients[i]);
36772    }
36773  }
36774
36775  // Define the error callback.
36776  function messageFailed(error) {
36777    console.log(&quot;The SMS could not be sent &quot; + error.message);
36778  }
36779
36780  // Define the success callback.
36781  function serviceListCB(services) {
36782    if (services.length > 0) {
36783      // SMS sending example
36784      var msg = new tizen.Message(&quot;messaging.sms&quot;, {plainBody: &quot;I will arrive in 10 minutes.&quot;,
36785                                  to: [&quot;+34666666666&quot;, &quot;+34888888888&quot;]});
36786      // Send request
36787      services[0].sendMessage(msg, messageSent, messageFailed);
36788    }
36789  }
36790  tizen.messaging.getMessageServices(&quot;messaging.sms&quot;, serviceListCB);
36791  </Code>
36792         </descriptive>
36793         <Type type="void"/>
36794         <ArgumentList>
36795           <Argument name="message">
36796             <descriptive>
36797                 <description><p>
36798  The message to be sent.
36799                 </p></description>
36800             </descriptive>
36801             <Type name="Message"/>
36802           </Argument>
36803           <Argument optional="optional" name="successCallback">
36804             <descriptive>
36805                 <description><p>
36806  The method to be invoked when the message is successfully sent.
36807                 </p></description>
36808             </descriptive>
36809             <Type name="MessageRecipientsCallback" nullable="nullable"/>
36810           </Argument>
36811           <Argument optional="optional" name="errorCallback">
36812             <descriptive>
36813                 <description><p>
36814  The method to be invoked when the sending request has failed.
36815                 </p></description>
36816             </descriptive>
36817             <Type name="ErrorCallback" nullable="nullable"/>
36818           </Argument>
36819         </ArgumentList>
36820         <Raises>
36821           <RaiseException name="WebAPIException">
36822             <descriptive>
36823                 <description><p>
36824  with error type TypeMismatchError, if any input parameter
36825 is not compatible with the expected type for that parameter.
36826                 </p></description>
36827                 <description><p>
36828  with error type SecurityError, if the application does not have the privilege to call this method.
36829                 </p></description>
36830                 <description><p>
36831  with error type NotSupportedError, if this feature is not supported.
36832                 </p></description>
36833             </descriptive>
36834           </RaiseException>
36835         </Raises>
36836       </Operation>
36837       <Operation name="loadMessageBody" id="::Messaging::MessageService::loadMessageBody">
36838         <webidl>    void loadMessageBody(<ref>Message</ref> message,
36839                          <ref>MessageBodySuccessCallback</ref> successCallback,
36840                          optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
36841         <descriptive>
36842             <brief>
36843  Loads the body for a specified message.
36844             </brief>
36845            <description>
36846             <p>
36847 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.
36848 If the message body is already loaded, the onsuccess() method of the successCallback will be invoked immediately.
36849             </p>
36850             <p>
36851 The errorCallback is launched with these error types:
36852             </p>
36853             <ul>
36854               <li>
36855  InvalidValuesError - If any of the input parameters contains an invalid value.              </li>
36856               <li>
36857  UnknownError - If any other error occurs.              </li>
36858             </ul>
36859            </description>
36860             <version>
36861  1.0
36862             </version>
36863             <privilegelevel>
36864  public
36865             </privilegelevel>
36866             <privilege>
36867  http://tizen.org/privilege/messaging.write
36868             </privilege>
36869             <Code> // Assume messaging service is initialized.
36870  var service; 
36871  // Define the success body loaded callback.
36872  function successCallback(message) {
36873    console.log (&quot;body for message: &quot; + message.subject + &quot;from: &quot; + message.from + &quot;loaded.&quot;);
36874  }
36875  // Define error callback.
36876  function errorCallback(error) {
36877    console.log(&quot;Cannot load message body&quot; + error.message);
36878  }
36879
36880  function messageQueryCallback(messages) {
36881    for (var i = 0; i &#60; messages.length; i++) {
36882      var message = messages[i];
36883      if (!message.body.loaded) {
36884         service.loadMessageBody(message, successCallback, errorCallback);
36885      }
36886    }
36887  }
36888
36889  service.messageStorage.findMessages(new tizen.AttributeFilter(&quot;type&quot;, &quot;EXACTLY&quot;, &quot;messaging.email&quot;), messageQueryCallback);
36890  </Code>
36891         </descriptive>
36892         <Type type="void"/>
36893         <ArgumentList>
36894           <Argument name="message">
36895             <descriptive>
36896                 <description><p>
36897  Message with the body to be loaded.
36898                 </p></description>
36899             </descriptive>
36900             <Type name="Message"/>
36901           </Argument>
36902           <Argument name="successCallback">
36903             <descriptive>
36904                 <description><p>
36905  The method to be invoked when the message body is successfully loaded.
36906                 </p></description>
36907             </descriptive>
36908             <Type name="MessageBodySuccessCallback"/>
36909           </Argument>
36910           <Argument optional="optional" name="errorCallback">
36911             <descriptive>
36912                 <description><p>
36913  The method to be invoked when the loading request fails.
36914                 </p></description>
36915             </descriptive>
36916             <Type name="ErrorCallback" nullable="nullable"/>
36917           </Argument>
36918         </ArgumentList>
36919         <Raises>
36920           <RaiseException name="WebAPIException">
36921             <descriptive>
36922                 <description><p>
36923  with error type TypeMismatchError, if any input parameter
36924 is not compatible with the expected type for that parameter.
36925                 </p></description>
36926                 <description><p>
36927  with error type SecurityError, if the application does not have the privilege to call this method.
36928                 </p></description>
36929                 <description><p>
36930  with error type NotSupportedError, if this feature is not supported.
36931                 </p></description>
36932             </descriptive>
36933           </RaiseException>
36934         </Raises>
36935       </Operation>
36936       <Operation name="loadMessageAttachment" id="::Messaging::MessageService::loadMessageAttachment">
36937         <webidl>    void loadMessageAttachment(<ref>MessageAttachment</ref> attachment,
36938                                <ref>MessageAttachmentSuccessCallback</ref> successCallback,
36939                                optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
36940         <descriptive>
36941             <brief>
36942  Loads a specified message attachment.
36943             </brief>
36944            <description>
36945             <p>
36946 This method is used only for email services. If the message attachment is already loaded, the onsuccess() method of the successCallback is invoked immediately.
36947             </p>
36948             <p>
36949 The errorCallback is launched with these error types:
36950             </p>
36951             <ul>
36952               <li>
36953  InvalidValuesError - If any of the input parameters contains an invalid value.              </li>
36954               <li>
36955  UnknownError - If any other error occurs.              </li>
36956             </ul>
36957            </description>
36958             <version>
36959  1.0
36960             </version>
36961             <privilegelevel>
36962  public
36963             </privilegelevel>
36964             <privilege>
36965  http://tizen.org/privilege/messaging.write
36966             </privilege>
36967             <Code> // Assume messaging service is initialized.
36968  var service;
36969  // Define success body loaded callback
36970  function successCallback(attachment) {
36971    console.log(&quot;attachment&quot; + attachment.id + &quot;is loaded to:&quot; + attachment.filePath);
36972  }
36973  // Define error callback
36974  function errorCallback(error) {
36975    console.log(&quot;Cannot load message attachment&quot; + error.message);
36976  }
36977
36978  function messagesFoundCB(messages) {
36979    for (var i = 0; i &#60; messages.length; i++) {
36980      var message = messages[i];
36981      if (!message.attachments[0].loaded) {
36982         service.loadMessageAttachment(message.attachments[0], successCallback, errorCallback);
36983      }
36984    }
36985  }
36986
36987  service.messageStorage.findMessages(new tizen.AttributeFilter(&quot;hasAttachment&quot;, &quot;EXACTLY&quot;, true), messagesFoundCB);
36988  </Code>
36989         </descriptive>
36990         <Type type="void"/>
36991         <ArgumentList>
36992           <Argument name="attachment">
36993             <descriptive>
36994                 <description><p>
36995  Message attachment to be loaded.
36996                 </p></description>
36997             </descriptive>
36998             <Type name="MessageAttachment"/>
36999           </Argument>
37000           <Argument name="successCallback">
37001             <descriptive>
37002                 <description><p>
37003  The method to be invoked when the message attachment is successfully loaded.
37004                 </p></description>
37005             </descriptive>
37006             <Type name="MessageAttachmentSuccessCallback"/>
37007           </Argument>
37008           <Argument optional="optional" name="errorCallback">
37009             <descriptive>
37010                 <description><p>
37011  The method to be invoked when the loading request fails.
37012                 </p></description>
37013             </descriptive>
37014             <Type name="ErrorCallback" nullable="nullable"/>
37015           </Argument>
37016         </ArgumentList>
37017         <Raises>
37018           <RaiseException name="WebAPIException">
37019             <descriptive>
37020                 <description><p>
37021  with error type TypeMismatchError, if any input parameter
37022 is not compatible with the expected type for that parameter.
37023                 </p></description>
37024                 <description><p>
37025  with error type SecurityError, if the application does not have the privilege to call this method.
37026                 </p></description>
37027                 <description><p>
37028  with error type NotSupportedError, if this feature is not supported.
37029                 </p></description>
37030             </descriptive>
37031           </RaiseException>
37032         </Raises>
37033       </Operation>
37034       <Operation name="sync" id="::Messaging::MessageService::sync">
37035         <webidl>    long sync(optional <ref>SuccessCallback</ref>? successCallback,
37036               optional <ref>ErrorCallback</ref>? errorCallback,
37037               optional unsigned long? limit) raises(<ref>WebAPIException</ref>);</webidl>
37038         <descriptive>
37039             <brief>
37040  Synchronizes the service content with an external mail server.
37041             </brief>
37042            <description>
37043             <p>
37044 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.
37045             </p>
37046             <p>
37047 The errorCallback is launched with these error types:
37048             </p>
37049             <ul>
37050               <li>
37051  InvalidValuesError - If any of the input parameters contains an invalid value.              </li>
37052               <li>
37053  AbortError - If the operation has been stopped.              </li>
37054               <li>
37055  UnknownError - If any other error occurs.              </li>
37056             </ul>
37057            </description>
37058             <version>
37059  1.0
37060             </version>
37061             <privilegelevel>
37062  public
37063             </privilegelevel>
37064             <privilege>
37065  http://tizen.org/privilege/messaging.write
37066             </privilege>
37067             <Code> // Define the success callback.
37068  function serviceSynced() {
37069    console.log(&quot;New messages are fetched!&quot;);
37070  }
37071
37072  // Define the success callback.
37073  function servicesListSuccessCB(services) {
37074    services[0].sync(serviceSynced, null, 30);
37075    // Subscribe to MessageStorage notification
37076  }
37077  tizen.messaging.getMessageServices(&quot;messaging.email&quot;, servicesListSuccessCB);
37078  </Code>
37079         </descriptive>
37080         <Type type="long">
37081           <descriptive>
37082               <description><p>
37083  long The identifier which can be used to stop this service operation.
37084               </p></description>
37085           </descriptive>
37086         </Type>
37087         <ArgumentList>
37088           <Argument optional="optional" name="successCallback">
37089             <descriptive>
37090                 <description><p>
37091  The method to be invoked when all the actions are completed successfully.
37092                 </p></description>
37093             </descriptive>
37094             <Type name="SuccessCallback" nullable="nullable"/>
37095           </Argument>
37096           <Argument optional="optional" name="errorCallback">
37097             <descriptive>
37098                 <description><p>
37099  The method to be invoked when the request fails.
37100                 </p></description>
37101             </descriptive>
37102             <Type name="ErrorCallback" nullable="nullable"/>
37103           </Argument>
37104           <Argument optional="optional" name="limit">
37105             <descriptive>
37106                 <description><p>
37107  The maximum amount of messages retrieved within each folder.
37108                 </p></description>
37109             </descriptive>
37110             <Type type="unsigned long" nullable="nullable"/>
37111           </Argument>
37112         </ArgumentList>
37113         <Raises>
37114           <RaiseException name="WebAPIException">
37115             <descriptive>
37116                 <description><p>
37117  with error type TypeMismatchError, if any input parameter
37118 is not compatible with the expected type for that parameter.
37119                 </p></description>
37120                 <description><p>
37121  with error type SecurityError, if the application does not have the privilege to call this method.
37122                 </p></description>
37123                 <description><p>
37124  with error type NotSupportedError, if this feature is not supported.
37125                 </p></description>
37126             </descriptive>
37127           </RaiseException>
37128         </Raises>
37129       </Operation>
37130       <Operation name="syncFolder" id="::Messaging::MessageService::syncFolder">
37131         <webidl>    long syncFolder(<ref>MessageFolder</ref> folder,
37132                     optional <ref>SuccessCallback</ref>? successCallback,
37133                     optional <ref>ErrorCallback</ref>? errorCallback,
37134                     optional unsigned long? limit) raises(<ref>WebAPIException</ref>);</webidl>
37135         <descriptive>
37136             <brief>
37137  Synchronizes the folder content with an external mail server.
37138             </brief>
37139            <description>
37140             <p>
37141 This method is used only for email services. This method performs the following actions:
37142             </p>
37143             <ul>
37144               <li>
37145 Exports local changes within a given folder from device to server.              </li>
37146               <li>
37147 Retrieves the list of available messages from within the given folder.              </li>
37148             </ul>
37149             <p>
37150 Messages that are retrieved from a given folder, even if synchronizable flag for this folder is not set.
37151 The backend is responsible in deciding which data is retrieved for every message. It can be:
37152             </p>
37153             <ul>
37154               <li>
37155 Message header details              </li>
37156               <li>
37157 Whole message body              </li>
37158             </ul>
37159             <p>
37160 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.
37161             </p>
37162             <p>
37163 The errorCallback is launched with these error types:
37164             </p>
37165             <ul>
37166               <li>
37167  InvalidValuesError - If any of the input parameters contains an invalid value.              </li>
37168               <li>
37169  AbortError - If the operation is stopped.              </li>
37170               <li>
37171  UnknownError - If any other error occurs.              </li>
37172             </ul>
37173            </description>
37174             <version>
37175  1.0
37176             </version>
37177             <privilegelevel>
37178  public
37179             </privilegelevel>
37180             <privilege>
37181  http://tizen.org/privilege/messaging.write
37182             </privilege>
37183             <Code> var emailService; // Assume email service is initialized
37184   // Define the error callback.
37185  function errorCallback(err) {
37186    console.log(err.name + &quot; error: &quot; + err.message);
37187  }
37188  function serviceCallback(services) {
37189    emailService = services[0];
37190    var filter = new tizen.AttributeFilter(&quot;serviceId&quot;, &quot;EXACTLY&quot;, emailService.id);
37191
37192    emailService.messageStorage.findFolders(filter, folderQueryCallback);
37193  }
37194   
37195  // Define the success callback.
37196  function folderSynced() {
37197    console.log(&quot;New messages are fetched!&quot;);
37198  }
37199  function folderQueryCallback(folders) {
37200    console.log(folders.length + &quot; folders(s) found!&quot;);
37201    for (var i = 0; i &#60; folders.length; i++) {
37202      emailService.syncFolder (folders[i], folderSynced, null, 30);
37203    }
37204  }
37205  
37206  tizen.messaging.getMessageServices(&quot;messaging.email&quot;, serviceCallback, errorCallback);
37207  </Code>
37208         </descriptive>
37209         <Type type="long">
37210           <descriptive>
37211               <description><p>
37212  long The identifier which can be used to stop this service operation.
37213               </p></description>
37214           </descriptive>
37215         </Type>
37216         <ArgumentList>
37217           <Argument name="folder">
37218             <descriptive>
37219                 <description><p>
37220  The folder to be synchronized.
37221                 </p></description>
37222             </descriptive>
37223             <Type name="MessageFolder"/>
37224           </Argument>
37225           <Argument optional="optional" name="successCallback">
37226             <descriptive>
37227                 <description><p>
37228  The method to be invoked when all actions are completed successfully.
37229                 </p></description>
37230             </descriptive>
37231             <Type name="SuccessCallback" nullable="nullable"/>
37232           </Argument>
37233           <Argument optional="optional" name="errorCallback">
37234             <descriptive>
37235                 <description><p>
37236  The method to be invoked when the request fails.
37237                 </p></description>
37238             </descriptive>
37239             <Type name="ErrorCallback" nullable="nullable"/>
37240           </Argument>
37241           <Argument optional="optional" name="limit">
37242             <descriptive>
37243                 <description><p>
37244  The maximum amount of messages retrieved within a given folder.
37245                 </p></description>
37246             </descriptive>
37247             <Type type="unsigned long" nullable="nullable"/>
37248           </Argument>
37249         </ArgumentList>
37250         <Raises>
37251           <RaiseException name="WebAPIException">
37252             <descriptive>
37253                 <description><p>
37254  with error type TypeMismatchError, if any input parameter
37255 is not compatible with the expected type for that parameter.
37256                 </p></description>
37257                 <description><p>
37258  with error type SecurityError, if the application does not have the privilege to call this method.
37259                 </p></description>
37260                 <description><p>
37261  with error type NotSupportedError, if this feature is not supported.
37262                 </p></description>
37263             </descriptive>
37264           </RaiseException>
37265         </Raises>
37266       </Operation>
37267       <Operation name="stopSync" id="::Messaging::MessageService::stopSync">
37268         <webidl>    void stopSync(long opId) raises(<ref>WebAPIException</ref>);</webidl>
37269         <descriptive>
37270             <brief>
37271  Stops sync() and syncFoler() operation.
37272             </brief>
37273            <description>
37274             <p>
37275 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.
37276             </p>
37277             <p>
37278 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.
37279             </p>
37280            </description>
37281             <version>
37282  1.0
37283             </version>
37284         </descriptive>
37285         <Type type="void"/>
37286         <ArgumentList>
37287           <Argument name="opId">
37288             <descriptive>
37289                 <description><p>
37290   A service operation identifier.
37291                 </p></description>
37292             </descriptive>
37293             <Type type="long"/>
37294           </Argument>
37295         </ArgumentList>
37296         <Raises>
37297           <RaiseException name="WebAPIException">
37298             <descriptive>
37299                 <description><p>
37300  with error type TypeMismatchError, if any input parameter
37301 is not compatible with the expected type for that parameter.
37302                 </p></description>
37303                 <description><p>
37304  with error type InvalidValuesError, if any of the input parameters contains an invalid value.
37305                 </p></description>
37306             </descriptive>
37307           </RaiseException>
37308         </Raises>
37309       </Operation>
37310       <Attribute readonly="readonly" name="messageStorage" id="::Messaging::MessageService::messageStorage">
37311         <webidl>    readonly attribute <ref>MessageStorage</ref> messageStorage getraises(<ref>WebAPIException</ref>);</webidl>
37312         <descriptive>
37313             <brief>
37314  An attribute to access <em>MessageStorage </em>for this messaging service.
37315             </brief>
37316            <description>
37317             <p>
37318 If the backend does not support <em>MessageStorage </em>for this messaging service, a WebAPIException is raised with error type NotSupportedError.
37319             </p>
37320            </description>
37321             <version>
37322  1.0
37323             </version>
37324         </descriptive>
37325         <Type name="MessageStorage"/>
37326         <GetRaises>
37327           <RaiseException name="WebAPIException"/>
37328         </GetRaises>
37329       </Attribute>
37330     </Interface>
37331     <Interface name="MessageRecipientsCallback" id="::Messaging::MessageRecipientsCallback">
37332       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface MessageRecipientsCallback {
37333
37334     void onsuccess(DOMString[] recipients);
37335
37336    };</webidl>
37337       <descriptive>
37338           <brief>
37339  This interface specifies the methods to be called for the sendMessage() operation.
37340           </brief>
37341           <version>
37342  1.0
37343           </version>
37344       </descriptive>
37345       <ExtendedAttributeList>
37346         <ExtendedAttribute name="Callback" value="FunctionOnly">
37347           <webidl>Callback</webidl>
37348         </ExtendedAttribute>
37349         <ExtendedAttribute name="NoInterfaceObject">
37350           <webidl> NoInterfaceObject</webidl>
37351         </ExtendedAttribute>
37352       </ExtendedAttributeList>
37353       <Operation name="onsuccess" id="::Messaging::MessageRecipientsCallback::onsuccess">
37354         <webidl>    void onsuccess(DOMString[] recipients);</webidl>
37355         <descriptive>
37356             <brief>
37357  Called when the message sending is finished.
37358             </brief>
37359             <version>
37360  1.0
37361             </version>
37362         </descriptive>
37363         <Type type="void"/>
37364         <ArgumentList>
37365           <Argument name="recipients">
37366             <descriptive>
37367                 <description><p>
37368  The recipients of the message.
37369                 </p></description>
37370             </descriptive>
37371             <Type type="array">
37372               <Type type="DOMString"/>
37373             </Type>
37374           </Argument>
37375         </ArgumentList>
37376       </Operation>
37377     </Interface>
37378     <Interface name="MessageBodySuccessCallback" id="::Messaging::MessageBodySuccessCallback">
37379       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface MessageBodySuccessCallback {
37380
37381      void onsuccess(<ref>Message</ref> message);
37382   };</webidl>
37383       <descriptive>
37384           <brief>
37385  This interface specifies a success callback function that takes a message as the input argument.
37386 It is used in the loadMessageBody() asynchronous operation.
37387           </brief>
37388           <version>
37389  1.0
37390           </version>
37391       </descriptive>
37392       <ExtendedAttributeList>
37393         <ExtendedAttribute name="Callback" value="FunctionOnly">
37394           <webidl>Callback</webidl>
37395         </ExtendedAttribute>
37396         <ExtendedAttribute name="NoInterfaceObject">
37397           <webidl> NoInterfaceObject</webidl>
37398         </ExtendedAttribute>
37399       </ExtendedAttributeList>
37400       <Operation name="onsuccess" id="::Messaging::MessageBodySuccessCallback::onsuccess">
37401         <webidl>     void onsuccess(<ref>Message</ref> message);</webidl>
37402         <descriptive>
37403             <brief>
37404  Called when the asynchronous query completes successfully.
37405             </brief>
37406             <version>
37407  1.0
37408             </version>
37409         </descriptive>
37410         <Type type="void"/>
37411         <ArgumentList>
37412           <Argument name="message">
37413             <descriptive>
37414                 <description><p>
37415  The message containing the loaded body.
37416                 </p></description>
37417             </descriptive>
37418             <Type name="Message"/>
37419           </Argument>
37420         </ArgumentList>
37421       </Operation>
37422     </Interface>
37423     <Interface name="MessageAttachmentSuccessCallback" id="::Messaging::MessageAttachmentSuccessCallback">
37424       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface MessageAttachmentSuccessCallback {
37425
37426      void onsuccess(<ref>MessageAttachment</ref> attachment);
37427    };</webidl>
37428       <descriptive>
37429           <brief>
37430  This callback interface specifies a success callback function that takes the loaded attachment as the input argument.
37431 It is used in the loadMessageAttachment() asynchronous operation.
37432           </brief>
37433           <version>
37434  1.0
37435           </version>
37436       </descriptive>
37437       <ExtendedAttributeList>
37438         <ExtendedAttribute name="Callback" value="FunctionOnly">
37439           <webidl>Callback</webidl>
37440         </ExtendedAttribute>
37441         <ExtendedAttribute name="NoInterfaceObject">
37442           <webidl> NoInterfaceObject</webidl>
37443         </ExtendedAttribute>
37444       </ExtendedAttributeList>
37445       <Operation name="onsuccess" id="::Messaging::MessageAttachmentSuccessCallback::onsuccess">
37446         <webidl>     void onsuccess(<ref>MessageAttachment</ref> attachment);</webidl>
37447         <descriptive>
37448             <brief>
37449  Called when the asynchronous query completes successfully.
37450             </brief>
37451             <version>
37452  1.0
37453             </version>
37454         </descriptive>
37455         <Type type="void"/>
37456         <ArgumentList>
37457           <Argument name="attachment">
37458             <descriptive>
37459                 <description><p>
37460  The loaded attachment.
37461                 </p></description>
37462             </descriptive>
37463             <Type name="MessageAttachment"/>
37464           </Argument>
37465         </ArgumentList>
37466       </Operation>
37467     </Interface>
37468     <Interface name="MessageStorage" id="::Messaging::MessageStorage">
37469       <webidl>  [NoInterfaceObject] interface MessageStorage {
37470
37471     void addDraftMessage(<ref>Message</ref> message,
37472                          optional <ref>SuccessCallback</ref>? successCallback,
37473                          optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
37474
37475     void findMessages(<ref>AbstractFilter</ref> filter,
37476                       <ref>MessageArraySuccessCallback</ref> successCallback,
37477                       optional <ref>ErrorCallback</ref>? errorCallback,
37478                       optional <ref>SortMode</ref>? sort,
37479                       optional unsigned long? limit,
37480                       optional unsigned long? offset) raises(<ref>WebAPIException</ref>);
37481
37482     void removeMessages(<ref>Message</ref>[] messages,
37483                         optional <ref>SuccessCallback</ref>? successCallback,
37484                         optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
37485
37486     void updateMessages(<ref>Message</ref>[] messages,
37487                         optional <ref>SuccessCallback</ref>? successCallback,
37488                         optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
37489
37490     void findConversations(<ref>AbstractFilter</ref> filter,
37491                            <ref>MessageConversationArraySuccessCallback</ref> successCallback,
37492                            optional <ref>ErrorCallback</ref>? errorCallback,
37493                            optional <ref>SortMode</ref>? sort,
37494                            optional unsigned long? limit,
37495                            optional unsigned long? offset) raises(<ref>WebAPIException</ref>);
37496
37497     void removeConversations(<ref>MessageConversation</ref>[] conversations,
37498                              optional <ref>SuccessCallback</ref>? successCallback,
37499                              optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
37500
37501
37502     void findFolders(<ref>AbstractFilter</ref> filter,
37503                      <ref>MessageFolderArraySuccessCallback</ref> successCallback,
37504                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
37505
37506     long addMessagesChangeListener(<ref>MessagesChangeCallback</ref> messagesChangeCallback,
37507                                    optional <ref>AbstractFilter</ref>? filter) raises(<ref>WebAPIException</ref>);
37508
37509     long addConversationsChangeListener(<ref>MessageConversationsChangeCallback</ref> conversationsChangeCallback,
37510                                         optional <ref>AbstractFilter</ref>? filter) raises(<ref>WebAPIException</ref>);
37511
37512     long addFoldersChangeListener(<ref>MessageFoldersChangeCallback</ref> foldersChangeCallback,
37513                                   optional <ref>AbstractFilter</ref>? filter) raises(<ref>WebAPIException</ref>);
37514
37515     void removeChangeListener(long watchId) raises(<ref>WebAPIException</ref>);
37516   };</webidl>
37517       <descriptive>
37518           <brief>
37519  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.
37520           </brief>
37521          <description>
37522           <p>
37523 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.
37524           </p>
37525          </description>
37526           <version>
37527  1.0
37528           </version>
37529       </descriptive>
37530       <ExtendedAttributeList>
37531         <ExtendedAttribute name="NoInterfaceObject">
37532           <webidl>NoInterfaceObject</webidl>
37533         </ExtendedAttribute>
37534       </ExtendedAttributeList>
37535       <Operation name="addDraftMessage" id="::Messaging::MessageStorage::addDraftMessage">
37536         <webidl>    void addDraftMessage(<ref>Message</ref> message,
37537                          optional <ref>SuccessCallback</ref>? successCallback,
37538                          optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
37539         <descriptive>
37540             <brief>
37541  Adds a draft message to <em>MessageStorage</em> and these messages are stored in the Drafts folder.
37542             </brief>
37543            <description>
37544             <p>
37545 The errorCallback is launched with these error types:
37546             </p>
37547             <ul>
37548               <li>
37549  InvalidValuesError - If any of the input parameters contain an invalid value.              </li>
37550               <li>
37551  UnknownError - If any other error occurs.              </li>
37552             </ul>
37553            </description>
37554             <version>
37555  1.0
37556             </version>
37557             <privilegelevel>
37558  public
37559             </privilegelevel>
37560             <privilege>
37561  http://tizen.org/privilege/messaging.write
37562             </privilege>
37563             <Code> // Define success callback
37564  function successCallback() {
37565    console.log(&quot;Draft message added&quot;);
37566  }
37567
37568  // Define error callback
37569  function errorCallback(error) {
37570    console.log(&quot;Cannot add draft message &quot; + error.message);
37571  }
37572
37573  // Define service query success callback.
37574  function serviceListCB(services) {
37575    if (services.length > 0) {
37576      var msg = new tizen.Message(&quot;messaging.sms&quot;, {plainBody: &quot;Tizen draft SMS message.&quot;});
37577      services[0].messageStorage.addDraftMessage(msg,
37578                                                 successCallback,
37579                                                 errorCallback);
37580    }
37581  }
37582  tizen.messaging.getMessageServices(&quot;messaging.sms&quot;, serviceListCB);
37583  </Code>
37584         </descriptive>
37585         <Type type="void"/>
37586         <ArgumentList>
37587           <Argument name="message">
37588             <descriptive>
37589                 <description><p>
37590  The draft message to add to the storage.
37591                 </p></description>
37592             </descriptive>
37593             <Type name="Message"/>
37594           </Argument>
37595           <Argument optional="optional" name="successCallback">
37596             <descriptive>
37597                 <description><p>
37598  The method called when draft messages successfully added.
37599                 </p></description>
37600             </descriptive>
37601             <Type name="SuccessCallback" nullable="nullable"/>
37602           </Argument>
37603           <Argument optional="optional" name="errorCallback">
37604             <descriptive>
37605                 <description><p>
37606  The method called when an error occurs.
37607                 </p></description>
37608             </descriptive>
37609             <Type name="ErrorCallback" nullable="nullable"/>
37610           </Argument>
37611         </ArgumentList>
37612         <Raises>
37613           <RaiseException name="WebAPIException">
37614             <descriptive>
37615                 <description><p>
37616  with error type TypeMismatchError, if any input parameter
37617 is not compatible with the expected type for that parameter or if the method is invoked for an incoming message.
37618                 </p></description>
37619                 <description><p>
37620  with error type SecurityError, if the application does not have the privilege to call this method.
37621                 </p></description>
37622                 <description><p>
37623  with error type NotSupportedError, if this feature is not supported.
37624                 </p></description>
37625             </descriptive>
37626           </RaiseException>
37627         </Raises>
37628       </Operation>
37629       <Operation name="findMessages" id="::Messaging::MessageStorage::findMessages">
37630         <webidl>    void findMessages(<ref>AbstractFilter</ref> filter,
37631                       <ref>MessageArraySuccessCallback</ref> successCallback,
37632                       optional <ref>ErrorCallback</ref>? errorCallback,
37633                       optional <ref>SortMode</ref>? sort,
37634                       optional unsigned long? limit,
37635                       optional unsigned long? offset) raises(<ref>WebAPIException</ref>);</webidl>
37636         <descriptive>
37637             <brief>
37638  Finds messages from <em>MessageStorage</em>.
37639             </brief>
37640            <description>
37641             <p>
37642 The errorCallback is launched with these error types:
37643             </p>
37644             <ul>
37645               <li>
37646  InvalidValuesError - If any of the input parameters contains an invalid value.              </li>
37647               <li>
37648  UnknownError - If any other error occurs.              </li>
37649             </ul>
37650            </description>
37651             <version>
37652  1.0
37653             </version>
37654             <privilegelevel>
37655  public
37656             </privilegelevel>
37657             <privilege>
37658  http://tizen.org/privilege/messaging.read
37659             </privilege>
37660             <Code> var service; // Assume messaging service is initialized
37661  var messageStorage = service.messageStorage; 
37662  function messageArrayCB(messages) {
37663    console.log(messages.length + &quot; message(s) fetched!&quot;);
37664    for (var i = 0; i &#60; messages.length; i++) {
37665      console.log(i + &quot;. message from &quot; + messages[i].from);
37666    }
37667  }
37668
37669  // Define error callback
37670  function errorCallback(error) {
37671    console.log(&quot;Cannot query messages&quot; + error.message);
37672  }
37673
37674  var filter = new tizen.AttributeFilter(&quot;from&quot;, &quot;CONTAINS&quot;, &quot;2593&quot;);
37675  messageStorage.findMessages(filter, messageArrayCB, errorCallback);
37676  </Code>
37677         </descriptive>
37678         <Type type="void"/>
37679         <ArgumentList>
37680           <Argument name="filter">
37681             <descriptive>
37682                 <description><p>
37683  The criteria to be used when filtering.
37684                 </p></description>
37685             </descriptive>
37686             <Type name="AbstractFilter"/>
37687           </Argument>
37688           <Argument name="successCallback">
37689             <descriptive>
37690                 <description><p>
37691  The method called when the invocation ends successfully.
37692                 </p></description>
37693             </descriptive>
37694             <Type name="MessageArraySuccessCallback"/>
37695           </Argument>
37696           <Argument optional="optional" name="errorCallback">
37697             <descriptive>
37698                 <description><p>
37699  The method called when an error occurs.
37700                 </p></description>
37701             </descriptive>
37702             <Type name="ErrorCallback" nullable="nullable"/>
37703           </Argument>
37704           <Argument optional="optional" name="sort">
37705             <descriptive>
37706                 <description><p>
37707  The sorting mode for the query.
37708                 </p></description>
37709             </descriptive>
37710             <Type name="SortMode" nullable="nullable"/>
37711           </Argument>
37712           <Argument optional="optional" name="limit">
37713             <descriptive>
37714                 <description><p>
37715  The maximum limit the query result is set to as specified by the parameter (It is the same meaning as SQL LIMIT).
37716 If <var>0</var>, there is no limit set.
37717                 </p></description>
37718             </descriptive>
37719             <Type type="unsigned long" nullable="nullable"/>
37720           </Argument>
37721           <Argument optional="optional" name="offset">
37722             <descriptive>
37723                 <description><p>
37724  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.
37725                 </p></description>
37726             </descriptive>
37727             <Type type="unsigned long" nullable="nullable"/>
37728           </Argument>
37729         </ArgumentList>
37730         <Raises>
37731           <RaiseException name="WebAPIException">
37732             <descriptive>
37733                 <description><p>
37734  with error type TypeMismatchError, if any input parameter
37735 is not compatible with the expected type for that parameter.
37736                 </p></description>
37737                 <description><p>
37738  with error type SecurityError, if the application does not have the privilege to call this method.
37739                 </p></description>
37740                 <description><p>
37741  with error type NotSupportedError, if this feature is not supported.
37742                 </p></description>
37743             </descriptive>
37744           </RaiseException>
37745         </Raises>
37746       </Operation>
37747       <Operation name="removeMessages" id="::Messaging::MessageStorage::removeMessages">
37748         <webidl>    void removeMessages(<ref>Message</ref>[] messages,
37749                         optional <ref>SuccessCallback</ref>? successCallback,
37750                         optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
37751         <descriptive>
37752             <brief>
37753  Removes messages from <em>MessageStorage</em>.
37754             </brief>
37755            <description>
37756             <p>
37757 The errorCallback is launched with these error types:
37758             </p>
37759             <ul>
37760               <li>
37761 InvalidValuesError - If any of the input parameters contain an invalid value              </li>
37762               <li>
37763  UnknownError - If any other error occurs.              </li>
37764             </ul>
37765            </description>
37766             <version>
37767  1.0
37768             </version>
37769             <privilegelevel>
37770  public
37771             </privilegelevel>
37772             <privilege>
37773  http://tizen.org/privilege/messaging.write
37774             </privilege>
37775             <Code> // Define success callback
37776  var service; // Assume messaging service is initialized
37777  var messageStorage = service.messageStorage; 
37778  function successCallback() {
37779    console.log(&quot;Messages were deleted&quot;);
37780  }
37781
37782  // Define error callback
37783  function errorCallback(error) {
37784    console.log(&quot;Cannot delete messages &quot; + error.message);
37785  }
37786
37787  function messageArrayCB(messages) {
37788    if (messages.length > 0) {
37789      messageStorage.removeMessages(messages, successCallback, errorCallback);
37790    } else {
37791      console.log(&quot;No messages found&quot;);
37792    }
37793  }
37794
37795  var filter = new tizen.AttributeFilter(&quot;from&quot;, &quot;CONTAINS&quot;, &quot;2593&quot;);
37796  messageStorage.findMessages(filter, messageArrayCB);
37797  </Code>
37798         </descriptive>
37799         <Type type="void"/>
37800         <ArgumentList>
37801           <Argument name="messages">
37802             <descriptive>
37803                 <description><p>
37804  An array of messages to delete.
37805                 </p></description>
37806             </descriptive>
37807             <Type type="array">
37808               <Type name="Message"/>
37809             </Type>
37810           </Argument>
37811           <Argument optional="optional" name="successCallback">
37812             <descriptive>
37813                 <description><p>
37814  The method called when messages are successfully deleted.
37815                 </p></description>
37816             </descriptive>
37817             <Type name="SuccessCallback" nullable="nullable"/>
37818           </Argument>
37819           <Argument optional="optional" name="errorCallback">
37820             <descriptive>
37821                 <description><p>
37822  The method called when an error occurs.
37823                 </p></description>
37824             </descriptive>
37825             <Type name="ErrorCallback" nullable="nullable"/>
37826           </Argument>
37827         </ArgumentList>
37828         <Raises>
37829           <RaiseException name="WebAPIException">
37830             <descriptive>
37831                 <description><p>
37832  with error type TypeMismatchError, if any input parameter
37833 is not compatible with the expected type for that parameter.
37834                 </p></description>
37835                 <description><p>
37836  with error type SecurityError, if the application does not have the privilege to call this method.
37837                 </p></description>
37838                 <description><p>
37839  with error type NotSupportedError, if this feature is not supported.
37840                 </p></description>
37841             </descriptive>
37842           </RaiseException>
37843         </Raises>
37844       </Operation>
37845       <Operation name="updateMessages" id="::Messaging::MessageStorage::updateMessages">
37846         <webidl>    void updateMessages(<ref>Message</ref>[] messages,
37847                         optional <ref>SuccessCallback</ref>? successCallback,
37848                         optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
37849         <descriptive>
37850             <brief>
37851  Updates messages in <em>MessageStorage</em>.
37852             </brief>
37853            <description>
37854             <p>
37855 The backend must check whether the required updates can be applied and invoke the errorCallback method, if they cannot be checked.
37856 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.
37857             </p>
37858             <p>
37859 The errorCallback is launched with these error types:
37860             </p>
37861             <ul>
37862               <li>
37863  InvalidValuesError - If any of the input parameters contains an invalid value.              </li>
37864               <li>
37865  UnknownError - If any other error occurs.              </li>
37866             </ul>
37867            </description>
37868             <version>
37869  1.0
37870             </version>
37871             <privilegelevel>
37872  public
37873             </privilegelevel>
37874             <privilege>
37875  http://tizen.org/privilege/messaging.write
37876             </privilege>
37877             <Code> var service; // Assume messaging service is initialized
37878  var messageStorage = service.messageStorage; 
37879
37880  // Define success callback
37881  function successCallback() {
37882    console.log(&quot;Messages were updated&quot;);
37883  }
37884
37885  // Define error callback
37886  function errorCallback(error) {
37887    console.log(&quot;Cannot update messages &quot; + error.message);
37888  }
37889
37890  function messageArrayCB(messages) {
37891    if (messages.length > 0) {
37892      messages[0].isRead = true;
37893      messageStorage.updateMessages([messages[0]], successCallback, errorCallback);
37894    } else {
37895      console.log(&quot;No messages found&quot;);
37896    }
37897  }
37898
37899  var filter = new tizen.AttributeFilter('isRead', 'EXACTLY', false);
37900  messageStorage.findMessages(filter, messageArrayCB);
37901
37902  </Code>
37903         </descriptive>
37904         <Type type="void"/>
37905         <ArgumentList>
37906           <Argument name="messages">
37907             <descriptive>
37908                 <description><p>
37909  An array to update
37910                 </p></description>
37911             </descriptive>
37912             <Type type="array">
37913               <Type name="Message"/>
37914             </Type>
37915           </Argument>
37916           <Argument optional="optional" name="successCallback">
37917             <descriptive>
37918                 <description><p>
37919  The method called when messages are successfully updated.
37920                 </p></description>
37921             </descriptive>
37922             <Type name="SuccessCallback" nullable="nullable"/>
37923           </Argument>
37924           <Argument optional="optional" name="errorCallback">
37925             <descriptive>
37926                 <description><p>
37927  The method called when an error occurs.
37928                 </p></description>
37929             </descriptive>
37930             <Type name="ErrorCallback" nullable="nullable"/>
37931           </Argument>
37932         </ArgumentList>
37933         <Raises>
37934           <RaiseException name="WebAPIException">
37935             <descriptive>
37936                 <description><p>
37937  with error type TypeMismatchError, if any input parameter
37938 is not compatible with the expected type for that parameter.
37939                 </p></description>
37940                 <description><p>
37941  with error type SecurityError, if the application does not have the privilege to call this method.
37942                 </p></description>
37943                 <description><p>
37944  with error type NotSupportedError, if this feature is not supported.
37945                 </p></description>
37946             </descriptive>
37947           </RaiseException>
37948         </Raises>
37949       </Operation>
37950       <Operation name="findConversations" id="::Messaging::MessageStorage::findConversations">
37951         <webidl>    void findConversations(<ref>AbstractFilter</ref> filter,
37952                            <ref>MessageConversationArraySuccessCallback</ref> successCallback,
37953                            optional <ref>ErrorCallback</ref>? errorCallback,
37954                            optional <ref>SortMode</ref>? sort,
37955                            optional unsigned long? limit,
37956                            optional unsigned long? offset) raises(<ref>WebAPIException</ref>);</webidl>
37957         <descriptive>
37958             <brief>
37959  Finds conversations from <em>MessageStorage</em>.
37960             </brief>
37961            <description>
37962             <p>
37963 The errorCallback is launched with these error types:
37964             </p>
37965             <ul>
37966               <li>
37967  InvalidValuesError - If any of the input parameters contains an invalid value.              </li>
37968               <li>
37969  UnknownError - If any other error occurs.              </li>
37970             </ul>
37971            </description>
37972             <version>
37973  1.0
37974             </version>
37975             <privilegelevel>
37976  public
37977             </privilegelevel>
37978             <privilege>
37979  http://tizen.org/privilege/messaging.read
37980             </privilege>
37981             <Code> var service; // Assume messaging service is initialized
37982  var messageStorage = service.messageStorage; 
37983  function conversationsArrayCB(conversations) {
37984    console.log(conversations.length + &quot; conversation(s) found!&quot;);
37985    for (var i = 0; i &#60; conversations.length; i++) {
37986      console.log(i + &quot;. conversation preview &quot; + conversations[i].preview);
37987    }
37988  }
37989
37990  // Define error callback.
37991  function errorCallback(error) {
37992    console.log(&quot;Cannot query conversations&quot; + error.message);
37993  }
37994
37995  var filter = new tizen.AttributeFilter('from', 'CONTAINS', '2593');
37996  messageStorage.findConversations(filter, conversationsArrayCB, errorCallback);
37997  </Code>
37998         </descriptive>
37999         <Type type="void"/>
38000         <ArgumentList>
38001           <Argument name="filter">
38002             <descriptive>
38003                 <description><p>
38004  The criteria to be used when filtering.
38005                 </p></description>
38006             </descriptive>
38007             <Type name="AbstractFilter"/>
38008           </Argument>
38009           <Argument name="successCallback">
38010             <descriptive>
38011                 <description><p>
38012  The method called when the invocation ends successfully.
38013                 </p></description>
38014             </descriptive>
38015             <Type name="MessageConversationArraySuccessCallback"/>
38016           </Argument>
38017           <Argument optional="optional" name="errorCallback">
38018             <descriptive>
38019                 <description><p>
38020  The method called when an error occurs.
38021                 </p></description>
38022             </descriptive>
38023             <Type name="ErrorCallback" nullable="nullable"/>
38024           </Argument>
38025           <Argument optional="optional" name="sort">
38026             <descriptive>
38027                 <description><p>
38028  The sorting rules for the query.
38029                 </p></description>
38030             </descriptive>
38031             <Type name="SortMode" nullable="nullable"/>
38032           </Argument>
38033           <Argument optional="optional" name="limit">
38034             <descriptive>
38035                 <description><p>
38036  The maximum limit the query result is set to as specified by the parameter (It is the same meaning as SQL LIMIT).
38037 If set to <var>0</var>, there is no limit set.
38038                 </p></description>
38039             </descriptive>
38040             <Type type="unsigned long" nullable="nullable"/>
38041           </Argument>
38042           <Argument optional="optional" name="offset">
38043             <descriptive>
38044                 <description><p>
38045  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.
38046                 </p></description>
38047             </descriptive>
38048             <Type type="unsigned long" nullable="nullable"/>
38049           </Argument>
38050         </ArgumentList>
38051         <Raises>
38052           <RaiseException name="WebAPIException">
38053             <descriptive>
38054                 <description><p>
38055  with error type TypeMismatchError, if any input parameter
38056 is not compatible with the expected type for that parameter.
38057                 </p></description>
38058                 <description><p>
38059  with error type SecurityError, if the application does not have the privilege to call this method.
38060                 </p></description>
38061                 <description><p>
38062  with error type NotSupportedError, if this feature is not supported.
38063                 </p></description>
38064             </descriptive>
38065           </RaiseException>
38066         </Raises>
38067       </Operation>
38068       <Operation name="removeConversations" id="::Messaging::MessageStorage::removeConversations">
38069         <webidl>    void removeConversations(<ref>MessageConversation</ref>[] conversations,
38070                              optional <ref>SuccessCallback</ref>? successCallback,
38071                              optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
38072         <descriptive>
38073             <brief>
38074  Removes conversations from <em>MessageStorage</em>.
38075             </brief>
38076            <description>
38077             <p>
38078 The errorCallback is launched with these error types:
38079             </p>
38080             <ul>
38081               <li>
38082  InvalidValuesError - If any of the input parameters contains an invalid value.              </li>
38083               <li>
38084  UnknownError - If any other error occurs.              </li>
38085             </ul>
38086            </description>
38087             <version>
38088  1.0
38089             </version>
38090             <privilegelevel>
38091  public
38092             </privilegelevel>
38093             <privilege>
38094  http://tizen.org/privilege/messaging.write
38095             </privilege>
38096             <Code> var service; // Assume messaging service is initialized
38097  var messageStorage = service.messageStorage; 
38098  // Define success callback.
38099  function successCallback() {
38100    console.log(&quot;Conversations deleted&quot;);
38101  }
38102
38103  // Define error callback.
38104  function errorCallback(error) {
38105    console.log(&quot;Cannot delete conversations &quot; + error.message);
38106  }
38107
38108  function conversationsArrayCB(conversations) {
38109    if (conversations.length > 0) {
38110      messageStorage.removeConversations(conversations, successCallback,
38111                                                        errorCallback);
38112    } else {
38113      console.log(&quot;No conversations found&quot;);
38114    }
38115    console.log(&quot;Deleted &quot; + conversations.length + &quot; conversation(s)&quot;);
38116  }
38117
38118  // Define error callback.
38119  function queryErrorCB(error) {
38120    console.log(&quot;Cannot query conversations&quot; + error.message);
38121  }
38122
38123  var filter = new tizen.AttributeFilter('from', 'CONTAINS', '2593');
38124  messageStorage.findConversations(filter, conversationsArrayCB,
38125                                           queryErrorCB);
38126  </Code>
38127         </descriptive>
38128         <Type type="void"/>
38129         <ArgumentList>
38130           <Argument name="conversations">
38131             <descriptive>
38132                 <description><p>
38133  An array of conversations to delete.
38134                 </p></description>
38135             </descriptive>
38136             <Type type="array">
38137               <Type name="MessageConversation"/>
38138             </Type>
38139           </Argument>
38140           <Argument optional="optional" name="successCallback">
38141             <descriptive>
38142                 <description><p>
38143  The method called when conversations are successfully deleted.
38144                 </p></description>
38145             </descriptive>
38146             <Type name="SuccessCallback" nullable="nullable"/>
38147           </Argument>
38148           <Argument optional="optional" name="errorCallback">
38149             <descriptive>
38150                 <description><p>
38151  The method called when an error occurs.
38152                 </p></description>
38153             </descriptive>
38154             <Type name="ErrorCallback" nullable="nullable"/>
38155           </Argument>
38156         </ArgumentList>
38157         <Raises>
38158           <RaiseException name="WebAPIException">
38159             <descriptive>
38160                 <description><p>
38161  with error type TypeMismatchError, if any input parameter
38162 is not compatible with the expected type for that parameter.
38163                 </p></description>
38164                 <description><p>
38165  with error type SecurityError, if the application does not have the privilege to call this method.
38166                 </p></description>
38167                 <description><p>
38168  with error type NotSupportedError, if this feature is not supported.
38169                 </p></description>
38170             </descriptive>
38171           </RaiseException>
38172         </Raises>
38173       </Operation>
38174       <Operation name="findFolders" id="::Messaging::MessageStorage::findFolders">
38175         <webidl>    void findFolders(<ref>AbstractFilter</ref> filter,
38176                      <ref>MessageFolderArraySuccessCallback</ref> successCallback,
38177                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
38178         <descriptive>
38179             <brief>
38180  Queries folders from MessageStorage.
38181             </brief>
38182            <description>
38183             <p>
38184 The errorCallback is launched with these error types:
38185             </p>
38186             <ul>
38187               <li>
38188  InvalidValuesError: If any of the input parameters contains an invalid value.              </li>
38189               <li>
38190  UnknownError: In any other error case.               </li>
38191             </ul>
38192            </description>
38193             <version>
38194  1.0
38195             </version>
38196             <privilegelevel>
38197  public
38198             </privilegelevel>
38199             <privilege>
38200  http://tizen.org/privilege/messaging.read
38201             </privilege>
38202             <Code> var service; // Assume messaging service is initialized
38203  var messageStorage = service.messageStorage; 
38204  function folderArrayCB(folders) {
38205    console.log(folders.length + &quot; folders(s) found!&quot;);
38206    for (var i = 0; i &#60; folders.length; i++) {
38207      console.log(i + &quot;, folder: &quot; + folders[i].name);
38208    }
38209  }
38210  var filter = new tizen.AttributeFilter(&quot;serviceId&quot;, &quot;EXACTLY&quot;, service.id);
38211  messageStorage.findFolders(filter, folderArrayCB);
38212  </Code>
38213         </descriptive>
38214         <Type type="void"/>
38215         <ArgumentList>
38216           <Argument name="filter">
38217             <descriptive>
38218                 <description><p>
38219  The criteria used when filtering.
38220                 </p></description>
38221             </descriptive>
38222             <Type name="AbstractFilter"/>
38223           </Argument>
38224           <Argument name="successCallback">
38225             <descriptive>
38226                 <description><p>
38227  The method called when the invocation ends successfully.
38228                 </p></description>
38229             </descriptive>
38230             <Type name="MessageFolderArraySuccessCallback"/>
38231           </Argument>
38232           <Argument optional="optional" name="errorCallback">
38233             <descriptive>
38234                 <description><p>
38235  The method called when an error occurs.
38236                 </p></description>
38237             </descriptive>
38238             <Type name="ErrorCallback" nullable="nullable"/>
38239           </Argument>
38240         </ArgumentList>
38241         <Raises>
38242           <RaiseException name="WebAPIException">
38243             <descriptive>
38244                 <description><p>
38245  with error type TypeMismatchError, if any input parameter
38246 is not compatible with the expected type for that parameter.
38247                 </p></description>
38248                 <description><p>
38249  with error type SecurityError, if the application does not have the privilege to call this method.
38250                 </p></description>
38251                 <description><p>
38252  with error type NotSupportedError, if this feature is not supported.
38253                 </p></description>
38254             </descriptive>
38255           </RaiseException>
38256         </Raises>
38257       </Operation>
38258       <Operation name="addMessagesChangeListener" id="::Messaging::MessageStorage::addMessagesChangeListener">
38259         <webidl>    long addMessagesChangeListener(<ref>MessagesChangeCallback</ref> messagesChangeCallback,
38260                                    optional <ref>AbstractFilter</ref>? filter) raises(<ref>WebAPIException</ref>);</webidl>
38261         <descriptive>
38262             <brief>
38263  Adds a listener to subscribe to notification for MessageStorage changes.
38264             </brief>
38265            <description>
38266             <p>
38267 The errorCallback is launched with these error types:
38268             </p>
38269             <ul>
38270               <li>
38271  InvalidValuesError - If any of the input parameters contains an invalid value.              </li>
38272               <li>
38273  UnknownError - If any other error occurs.               </li>
38274             </ul>
38275            </description>
38276             <version>
38277  1.0
38278             </version>
38279             <privilegelevel>
38280  public
38281             </privilegelevel>
38282             <privilege>
38283  http://tizen.org/privilege/messaging.read
38284             </privilege>
38285             <Code> var service; // Assume messaging service is initialized
38286  var messageStorage = service.messageStorage; 
38287  var messageChangeCallback = {
38288        messagesupdated: function(messages) {
38289          console.log(messages.length + &quot; message(s) updated&quot;);},
38290        messagesadded: function(messages) {
38291          console.log(messages.length + &quot; message(s) added&quot;);},
38292        messagesremoved: function(messages) {
38293          console.log(messages.length + &quot; message(s) removed&quot;);}
38294  };
38295
38296  messageStorage.addMessagesChangeListener(messageChangeCallback);
38297  </Code>
38298         </descriptive>
38299         <Type type="long">
38300           <descriptive>
38301               <description><p>
38302  long The subscription identifier.
38303               </p></description>
38304           </descriptive>
38305         </Type>
38306         <ArgumentList>
38307           <Argument name="messagesChangeCallback">
38308             <descriptive>
38309                 <description><p>
38310  Callback that is called when the MessageStorage is changed.
38311                 </p></description>
38312             </descriptive>
38313             <Type name="MessagesChangeCallback"/>
38314           </Argument>
38315           <Argument optional="optional" name="filter">
38316             <descriptive>
38317                 <description><p>
38318  The criteria to be used when filtering.
38319                 </p></description>
38320             </descriptive>
38321             <Type name="AbstractFilter" nullable="nullable"/>
38322           </Argument>
38323         </ArgumentList>
38324         <Raises>
38325           <RaiseException name="WebAPIException">
38326             <descriptive>
38327                 <description><p>
38328  with error type TypeMismatchError, if any input parameter
38329 is not compatible with the expected type for that parameter.
38330                 </p></description>
38331                 <description><p>
38332  with error type SecurityError, if the application does not have the privilege to call this method.
38333                 </p></description>
38334                 <description><p>
38335  with error type NotSupportedError, if this feature is not supported.
38336                 </p></description>
38337             </descriptive>
38338           </RaiseException>
38339         </Raises>
38340       </Operation>
38341       <Operation name="addConversationsChangeListener" id="::Messaging::MessageStorage::addConversationsChangeListener">
38342         <webidl>    long addConversationsChangeListener(<ref>MessageConversationsChangeCallback</ref> conversationsChangeCallback,
38343                                         optional <ref>AbstractFilter</ref>? filter) raises(<ref>WebAPIException</ref>);</webidl>
38344         <descriptive>
38345             <brief>
38346  Adds a listener to subscribe to notifications for MessageConversation changes.
38347             </brief>
38348            <description>
38349             <p>
38350 The errorCallback is launched with these error types:
38351             </p>
38352             <ul>
38353               <li>
38354  InvalidValuesError - If any of the input parameters contains an invalid value.              </li>
38355               <li>
38356  UnknownError - If any other error occurs.              </li>
38357             </ul>
38358            </description>
38359             <version>
38360  1.0
38361             </version>
38362             <privilegelevel>
38363  public
38364             </privilegelevel>
38365             <privilege>
38366  http://tizen.org/privilege/messaging.read
38367             </privilege>
38368             <Code> var service; // Assume messaging service is initialized
38369  var messageStorage = service.messageStorage; 
38370  var conversationChangeCB = {
38371        conversationsupdated: function(conversations) {
38372          console.log(conversations.length + &quot; conversations(s) updated&quot;);},
38373        conversationsadded: function(conversations) {
38374          console.log(conversations.length + &quot; conversations(s) added&quot;);},
38375        conversationsremoved: function(conversations) {
38376          console.log(conversations.length + &quot; conversations(s) removed&quot;);}
38377  };
38378
38379  messageStorage.addConversationsChangeListener(conversationChangeCB);
38380  </Code>
38381         </descriptive>
38382         <Type type="long">
38383           <descriptive>
38384               <description><p>
38385  long The subscription identifier.
38386               </p></description>
38387           </descriptive>
38388         </Type>
38389         <ArgumentList>
38390           <Argument name="conversationsChangeCallback">
38391             <descriptive>
38392                 <description><p>
38393  Callback that is called when the MessageStorage is changed.
38394                 </p></description>
38395             </descriptive>
38396             <Type name="MessageConversationsChangeCallback"/>
38397           </Argument>
38398           <Argument optional="optional" name="filter">
38399             <descriptive>
38400                 <description><p>
38401  The criteria to be used when filtering.
38402                 </p></description>
38403             </descriptive>
38404             <Type name="AbstractFilter" nullable="nullable"/>
38405           </Argument>
38406         </ArgumentList>
38407         <Raises>
38408           <RaiseException name="WebAPIException">
38409             <descriptive>
38410                 <description><p>
38411  with error type TypeMismatchError, if any input parameter
38412 is not compatible with the expected type for that parameter.
38413                 </p></description>
38414                 <description><p>
38415  with error type SecurityError, if the application does not have the privilege to call this method.
38416                 </p></description>
38417                 <description><p>
38418  with error type NotSupportedError, if this feature is not supported.
38419                 </p></description>
38420             </descriptive>
38421           </RaiseException>
38422         </Raises>
38423       </Operation>
38424       <Operation name="addFoldersChangeListener" id="::Messaging::MessageStorage::addFoldersChangeListener">
38425         <webidl>    long addFoldersChangeListener(<ref>MessageFoldersChangeCallback</ref> foldersChangeCallback,
38426                                   optional <ref>AbstractFilter</ref>? filter) raises(<ref>WebAPIException</ref>);</webidl>
38427         <descriptive>
38428             <brief>
38429  Adds a listener to subscribe to notifications for MessageFolder changes.
38430             </brief>
38431            <description>
38432             <p>
38433 The errorCallback is launched with these error types:
38434             </p>
38435             <ul>
38436               <li>
38437  InvalidValuesError - If any of the input parameters contains an invalid value.              </li>
38438               <li>
38439  UnknownError - If any other error occurs.              </li>
38440             </ul>
38441            </description>
38442             <version>
38443  1.0
38444             </version>
38445             <privilegelevel>
38446  public
38447             </privilegelevel>
38448             <privilege>
38449  http://tizen.org/privilege/messaging.read
38450             </privilege>
38451             <Code> var service; // Assume messaging service is initialized
38452  var messageStorage = service.messageStorage; 
38453  var folderChangeCB = {
38454        foldersupdated: function(folders) {
38455          console.log(folders.length + &quot; folders(s) updated&quot;);},
38456        foldersadded: function(folders) {
38457          console.log(folders.length + &quot; folders(s) added&quot;);},
38458        foldersremoved: function(folders) {
38459          console.log(folders.length + &quot; folders(s) removed&quot;);}
38460  };
38461
38462  messageStorage.addFoldersChangeListener(folderChangeCB);
38463  </Code>
38464         </descriptive>
38465         <Type type="long">
38466           <descriptive>
38467               <description><p>
38468  long The subscription identifier.
38469               </p></description>
38470           </descriptive>
38471         </Type>
38472         <ArgumentList>
38473           <Argument name="foldersChangeCallback">
38474             <descriptive>
38475                 <description><p>
38476  Callback that is called when the MessageStorage is changed.
38477                 </p></description>
38478             </descriptive>
38479             <Type name="MessageFoldersChangeCallback"/>
38480           </Argument>
38481           <Argument optional="optional" name="filter">
38482             <descriptive>
38483                 <description><p>
38484  The criteria to be used when filtering.
38485                 </p></description>
38486             </descriptive>
38487             <Type name="AbstractFilter" nullable="nullable"/>
38488           </Argument>
38489         </ArgumentList>
38490         <Raises>
38491           <RaiseException name="WebAPIException">
38492             <descriptive>
38493                 <description><p>
38494  with error type TypeMismatchError, if any input parameter
38495 is not compatible with the expected type for that parameter.
38496                 </p></description>
38497                 <description><p>
38498  with error type SecurityError, if the application does not have the privilege to call this method.
38499                 </p></description>
38500                 <description><p>
38501  with error type NotSupportedError, if this feature is not supported.
38502                 </p></description>
38503             </descriptive>
38504           </RaiseException>
38505         </Raises>
38506       </Operation>
38507       <Operation name="removeChangeListener" id="::Messaging::MessageStorage::removeChangeListener">
38508         <webidl>    void removeChangeListener(long watchId) raises(<ref>WebAPIException</ref>);</webidl>
38509         <descriptive>
38510             <brief>
38511  Removes a listener to unsubscribe from receiving message notifications.
38512             </brief>
38513            <description>
38514             <p>
38515 The errorCallback is launched with these error types:
38516             </p>
38517             <ul>
38518               <li>
38519  InvalidValuesError - If any of the input parameters contains an invalid value.              </li>
38520               <li>
38521  UnknownError - If any other error occurs.              </li>
38522             </ul>
38523             <p>
38524 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.
38525 If the <em>subscriptionId argument does not correspond to a valid subscription, the method will return without any further action.
38526 </em>            </p>
38527            </description>
38528             <version>
38529  1.0
38530             </version>
38531             <privilegelevel>
38532  public
38533             </privilegelevel>
38534             <privilege>
38535  http://tizen.org/privilege/messaging.read
38536             </privilege>
38537             <Code> var watchId;
38538  var service; // Assume messaging service is initialized
38539  var messageStorage = service.messageStorage; 
38540  var folderChangeCB = {
38541        foldersupdated: function(folders) {
38542          console.log(folders.length + &quot; folders(s) updated. Cancel watching.&quot;);
38543          messageStorage.removeChangeListener(watchId); },
38544        foldersadded: function(folders) {
38545          console.log(folders.length + &quot; folders(s) added. Cancel watching.&quot;);
38546          messageStorage.removeChangeListener(watchId); },
38547        foldersremoved: function(folders) {
38548          console.log(folders.length + &quot; folders(s) removed. Cancel watching.&quot;);
38549          messageStorage.removeChangeListener(watchId);}
38550  };
38551
38552  watchId = messageStorage.addFoldersChangeListener(folderChangeCB);
38553
38554  </Code>
38555         </descriptive>
38556         <Type type="void"/>
38557         <ArgumentList>
38558           <Argument name="watchId">
38559             <descriptive>
38560                 <description><p>
38561  An identifier of the subscription returned by addMessagesChangeListener, addConversationsChangeListener or
38562 addFoldersChangeListener methods.
38563                 </p></description>
38564             </descriptive>
38565             <Type type="long"/>
38566           </Argument>
38567         </ArgumentList>
38568         <Raises>
38569           <RaiseException name="WebAPIException">
38570             <descriptive>
38571                 <description><p>
38572  with error type TypeMismatchError, if any input parameter
38573 is not compatible with the expected type for that parameter.
38574                 </p></description>
38575                 <description><p>
38576  with error type SecurityError, if the application does not have the privilege to call this method.
38577                 </p></description>
38578                 <description><p>
38579  with error type NotSupportedError, if this feature is not supported.
38580                 </p></description>
38581             </descriptive>
38582           </RaiseException>
38583         </Raises>
38584       </Operation>
38585     </Interface>
38586     <Interface name="MessageArraySuccessCallback" id="::Messaging::MessageArraySuccessCallback">
38587       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface MessageArraySuccessCallback {
38588
38589     void onsuccess(<ref>Message</ref>[] messages);
38590   };</webidl>
38591       <descriptive>
38592           <brief>
38593  findMessages specific success callback.
38594           </brief>
38595          <description>
38596           <p>
38597 This callback interface specifies a success callback function,
38598 taking a list of messages that satisfy the filtering criteria as the input argument.
38599 It is used in the findMessages asynchronous operation.
38600           </p>
38601          </description>
38602           <version>
38603  1.0
38604           </version>
38605       </descriptive>
38606       <ExtendedAttributeList>
38607         <ExtendedAttribute name="Callback" value="FunctionOnly">
38608           <webidl>Callback</webidl>
38609         </ExtendedAttribute>
38610         <ExtendedAttribute name="NoInterfaceObject">
38611           <webidl> NoInterfaceObject</webidl>
38612         </ExtendedAttribute>
38613       </ExtendedAttributeList>
38614       <Operation name="onsuccess" id="::Messaging::MessageArraySuccessCallback::onsuccess">
38615         <webidl>    void onsuccess(<ref>Message</ref>[] messages);</webidl>
38616         <descriptive>
38617             <brief>
38618  Method invoked when an asynchronous query completes successfully.
38619             </brief>
38620             <version>
38621  1.0
38622             </version>
38623         </descriptive>
38624         <Type type="void"/>
38625         <ArgumentList>
38626           <Argument name="messages">
38627             <descriptive>
38628                 <description><p>
38629  Array of messages that satisfy the query.
38630                 </p></description>
38631             </descriptive>
38632             <Type type="array">
38633               <Type name="Message"/>
38634             </Type>
38635           </Argument>
38636         </ArgumentList>
38637       </Operation>
38638     </Interface>
38639     <Interface name="MessageConversationArraySuccessCallback" id="::Messaging::MessageConversationArraySuccessCallback">
38640       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface MessageConversationArraySuccessCallback {
38641
38642     void onsuccess(<ref>MessageConversation</ref>[] conversations);
38643   };</webidl>
38644       <descriptive>
38645           <brief>
38646  findConversations specific success callback.
38647           </brief>
38648          <description>
38649           <p>
38650 This callback interface specifies a success callback function,
38651 taking a list of conversations that satisfy the filtering criteria as the input argument.
38652 It is used in the findConversations asynchronous operation.
38653           </p>
38654          </description>
38655           <version>
38656  1.0
38657           </version>
38658       </descriptive>
38659       <ExtendedAttributeList>
38660         <ExtendedAttribute name="Callback" value="FunctionOnly">
38661           <webidl>Callback</webidl>
38662         </ExtendedAttribute>
38663         <ExtendedAttribute name="NoInterfaceObject">
38664           <webidl> NoInterfaceObject</webidl>
38665         </ExtendedAttribute>
38666       </ExtendedAttributeList>
38667       <Operation name="onsuccess" id="::Messaging::MessageConversationArraySuccessCallback::onsuccess">
38668         <webidl>    void onsuccess(<ref>MessageConversation</ref>[] conversations);</webidl>
38669         <descriptive>
38670             <brief>
38671  Method invoked when an asynchronous query completes successfully.
38672             </brief>
38673             <version>
38674  1.0
38675             </version>
38676         </descriptive>
38677         <Type type="void"/>
38678         <ArgumentList>
38679           <Argument name="conversations">
38680             <descriptive>
38681                 <description><p>
38682  Array of conversations that satisfy the query.
38683                 </p></description>
38684             </descriptive>
38685             <Type type="array">
38686               <Type name="MessageConversation"/>
38687             </Type>
38688           </Argument>
38689         </ArgumentList>
38690       </Operation>
38691     </Interface>
38692     <Interface name="MessageFolderArraySuccessCallback" id="::Messaging::MessageFolderArraySuccessCallback">
38693       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface MessageFolderArraySuccessCallback {
38694
38695     void onsuccess(<ref>MessageFolder</ref>[] folders);
38696   };</webidl>
38697       <descriptive>
38698           <brief>
38699  findFolders specific success callback.
38700           </brief>
38701          <description>
38702           <p>
38703 This callback interface specifies a success callback function,
38704 taking a list of folders that satisfy the filtering criteria as the input argument.
38705 It is used in the findFolders asynchronous operation.
38706           </p>
38707          </description>
38708           <version>
38709  1.0
38710           </version>
38711       </descriptive>
38712       <ExtendedAttributeList>
38713         <ExtendedAttribute name="Callback" value="FunctionOnly">
38714           <webidl>Callback</webidl>
38715         </ExtendedAttribute>
38716         <ExtendedAttribute name="NoInterfaceObject">
38717           <webidl> NoInterfaceObject</webidl>
38718         </ExtendedAttribute>
38719       </ExtendedAttributeList>
38720       <Operation name="onsuccess" id="::Messaging::MessageFolderArraySuccessCallback::onsuccess">
38721         <webidl>    void onsuccess(<ref>MessageFolder</ref>[] folders);</webidl>
38722         <descriptive>
38723             <brief>
38724  Method invoked when an asynchronous query completes successfully.
38725             </brief>
38726             <version>
38727  1.0
38728             </version>
38729         </descriptive>
38730         <Type type="void"/>
38731         <ArgumentList>
38732           <Argument name="folders">
38733             <descriptive>
38734                 <description><p>
38735  Array of folders that satisfy the query.
38736                 </p></description>
38737             </descriptive>
38738             <Type type="array">
38739               <Type name="MessageFolder"/>
38740             </Type>
38741           </Argument>
38742         </ArgumentList>
38743       </Operation>
38744     </Interface>
38745     <Interface name="MessagesChangeCallback" id="::Messaging::MessagesChangeCallback">
38746       <webidl>  [Callback, NoInterfaceObject] interface MessagesChangeCallback {
38747
38748     void messagesadded(<ref>Message</ref>[] addedMessages);
38749
38750     void messagesupdated(<ref>Message</ref>[] updatedMessages);
38751
38752     void messagesremoved(<ref>Message</ref>[] removedMessages);
38753   };</webidl>
38754       <descriptive>
38755           <brief>
38756  watchMessagesChanges callback.
38757           </brief>
38758          <description>
38759           <p>
38760 This callback interface specifies a callback as a set of functions that will be
38761 invoked when messages from MessageStorage change. Each function takes a list of messages as the input argument.
38762           </p>
38763          </description>
38764           <version>
38765  1.0
38766           </version>
38767       </descriptive>
38768       <ExtendedAttributeList>
38769         <ExtendedAttribute name="Callback">
38770           <webidl>Callback</webidl>
38771         </ExtendedAttribute>
38772         <ExtendedAttribute name="NoInterfaceObject">
38773           <webidl> NoInterfaceObject</webidl>
38774         </ExtendedAttribute>
38775       </ExtendedAttributeList>
38776       <Operation name="messagesadded" id="::Messaging::MessagesChangeCallback::messagesadded">
38777         <webidl>    void messagesadded(<ref>Message</ref>[] addedMessages);</webidl>
38778         <descriptive>
38779             <brief>
38780  Method invoked when messages are added to the MessageStorage.
38781             </brief>
38782             <version>
38783  1.0
38784             </version>
38785         </descriptive>
38786         <Type type="void"/>
38787         <ArgumentList>
38788           <Argument name="addedMessages">
38789             <descriptive>
38790                 <description><p>
38791  Array of added messages.
38792                 </p></description>
38793             </descriptive>
38794             <Type type="array">
38795               <Type name="Message"/>
38796             </Type>
38797           </Argument>
38798         </ArgumentList>
38799       </Operation>
38800       <Operation name="messagesupdated" id="::Messaging::MessagesChangeCallback::messagesupdated">
38801         <webidl>    void messagesupdated(<ref>Message</ref>[] updatedMessages);</webidl>
38802         <descriptive>
38803             <brief>
38804  Method invoked when messages are updated in MessageStorage.
38805             </brief>
38806             <version>
38807  1.0
38808             </version>
38809         </descriptive>
38810         <Type type="void"/>
38811         <ArgumentList>
38812           <Argument name="updatedMessages">
38813             <descriptive>
38814                 <description><p>
38815  Array of updated messages.
38816                 </p></description>
38817             </descriptive>
38818             <Type type="array">
38819               <Type name="Message"/>
38820             </Type>
38821           </Argument>
38822         </ArgumentList>
38823       </Operation>
38824       <Operation name="messagesremoved" id="::Messaging::MessagesChangeCallback::messagesremoved">
38825         <webidl>    void messagesremoved(<ref>Message</ref>[] removedMessages);</webidl>
38826         <descriptive>
38827             <brief>
38828  Method invoked when messages are removed from MessageStorage.
38829             </brief>
38830             <version>
38831  1.0
38832             </version>
38833         </descriptive>
38834         <Type type="void"/>
38835         <ArgumentList>
38836           <Argument name="removedMessages">
38837             <descriptive>
38838                 <description><p>
38839  Array of removed messages. It contains only MessageId attribute.
38840                 </p></description>
38841             </descriptive>
38842             <Type type="array">
38843               <Type name="Message"/>
38844             </Type>
38845           </Argument>
38846         </ArgumentList>
38847       </Operation>
38848     </Interface>
38849     <Interface name="MessageConversationsChangeCallback" id="::Messaging::MessageConversationsChangeCallback">
38850       <webidl>  [Callback, NoInterfaceObject] interface MessageConversationsChangeCallback {
38851
38852     void conversationsadded(<ref>MessageConversation</ref>[] addedConversations);
38853
38854     void conversationsupdated(<ref>MessageConversation</ref>[] updatedConversations);
38855
38856     void conversationsremoved(<ref>MessageConversation</ref>[] removedConversations);
38857   };</webidl>
38858       <descriptive>
38859           <brief>
38860  watchConversationsChanges callback.
38861           </brief>
38862          <description>
38863           <p>
38864 This callback interface specifies a callback as a set of functions that will be
38865 invoked when conversations from MessageStorage change. Each function takes a list of conversations as the input argument.
38866           </p>
38867          </description>
38868           <version>
38869  1.0
38870           </version>
38871       </descriptive>
38872       <ExtendedAttributeList>
38873         <ExtendedAttribute name="Callback">
38874           <webidl>Callback</webidl>
38875         </ExtendedAttribute>
38876         <ExtendedAttribute name="NoInterfaceObject">
38877           <webidl> NoInterfaceObject</webidl>
38878         </ExtendedAttribute>
38879       </ExtendedAttributeList>
38880       <Operation name="conversationsadded" id="::Messaging::MessageConversationsChangeCallback::conversationsadded">
38881         <webidl>    void conversationsadded(<ref>MessageConversation</ref>[] addedConversations);</webidl>
38882         <descriptive>
38883             <brief>
38884  Method invoked when conversations are added to MessageStorage.
38885             </brief>
38886             <version>
38887  1.0
38888             </version>
38889         </descriptive>
38890         <Type type="void"/>
38891         <ArgumentList>
38892           <Argument name="addedConversations">
38893             <descriptive>
38894                 <description><p>
38895  Array of added conversations.
38896                 </p></description>
38897             </descriptive>
38898             <Type type="array">
38899               <Type name="MessageConversation"/>
38900             </Type>
38901           </Argument>
38902         </ArgumentList>
38903       </Operation>
38904       <Operation name="conversationsupdated" id="::Messaging::MessageConversationsChangeCallback::conversationsupdated">
38905         <webidl>    void conversationsupdated(<ref>MessageConversation</ref>[] updatedConversations);</webidl>
38906         <descriptive>
38907             <brief>
38908  Method invoked when conversations are updated in MessageStorage.
38909             </brief>
38910             <version>
38911  1.0
38912             </version>
38913         </descriptive>
38914         <Type type="void"/>
38915         <ArgumentList>
38916           <Argument name="updatedConversations">
38917             <descriptive>
38918                 <description><p>
38919  Array of updated conversations.
38920                 </p></description>
38921             </descriptive>
38922             <Type type="array">
38923               <Type name="MessageConversation"/>
38924             </Type>
38925           </Argument>
38926         </ArgumentList>
38927       </Operation>
38928       <Operation name="conversationsremoved" id="::Messaging::MessageConversationsChangeCallback::conversationsremoved">
38929         <webidl>    void conversationsremoved(<ref>MessageConversation</ref>[] removedConversations);</webidl>
38930         <descriptive>
38931             <brief>
38932  Method invoked when conversations are removed from MessageStorage.
38933             </brief>
38934             <version>
38935  1.0
38936             </version>
38937         </descriptive>
38938         <Type type="void"/>
38939         <ArgumentList>
38940           <Argument name="removedConversations">
38941             <descriptive>
38942                 <description><p>
38943  Array of removed conversations. It contains only MessageConvId attribute.
38944                 </p></description>
38945             </descriptive>
38946             <Type type="array">
38947               <Type name="MessageConversation"/>
38948             </Type>
38949           </Argument>
38950         </ArgumentList>
38951       </Operation>
38952     </Interface>
38953     <Interface name="MessageFoldersChangeCallback" id="::Messaging::MessageFoldersChangeCallback">
38954       <webidl>  [Callback, NoInterfaceObject] interface MessageFoldersChangeCallback {
38955  
38956     void foldersadded(<ref>MessageFolder</ref>[] addedFolders);
38957
38958     void foldersupdated(<ref>MessageFolder</ref>[] updatedFolders);
38959
38960     void foldersremoved(<ref>MessageFolder</ref>[] removedFolders);
38961   };</webidl>
38962       <descriptive>
38963           <brief>
38964  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.
38965           </brief>
38966           <version>
38967  1.0
38968           </version>
38969       </descriptive>
38970       <ExtendedAttributeList>
38971         <ExtendedAttribute name="Callback">
38972           <webidl>Callback</webidl>
38973         </ExtendedAttribute>
38974         <ExtendedAttribute name="NoInterfaceObject">
38975           <webidl> NoInterfaceObject</webidl>
38976         </ExtendedAttribute>
38977       </ExtendedAttributeList>
38978       <Operation name="foldersadded" id="::Messaging::MessageFoldersChangeCallback::foldersadded">
38979         <webidl>    void foldersadded(<ref>MessageFolder</ref>[] addedFolders);</webidl>
38980         <descriptive>
38981             <brief>
38982  Called when folders are added to <em>MessageStorage</em>.
38983             </brief>
38984             <version>
38985  1.0
38986             </version>
38987         </descriptive>
38988         <Type type="void"/>
38989         <ArgumentList>
38990           <Argument name="addedFolders">
38991             <descriptive>
38992                 <description><p>
38993  An array of added folders.
38994                 </p></description>
38995             </descriptive>
38996             <Type type="array">
38997               <Type name="MessageFolder"/>
38998             </Type>
38999           </Argument>
39000         </ArgumentList>
39001       </Operation>
39002       <Operation name="foldersupdated" id="::Messaging::MessageFoldersChangeCallback::foldersupdated">
39003         <webidl>    void foldersupdated(<ref>MessageFolder</ref>[] updatedFolders);</webidl>
39004         <descriptive>
39005             <brief>
39006  Called when folders are updated in <em>MessageStorage</em>.
39007             </brief>
39008             <version>
39009  1.0
39010             </version>
39011         </descriptive>
39012         <Type type="void"/>
39013         <ArgumentList>
39014           <Argument name="updatedFolders">
39015             <descriptive>
39016                 <description><p>
39017  An array of updated folders.
39018                 </p></description>
39019             </descriptive>
39020             <Type type="array">
39021               <Type name="MessageFolder"/>
39022             </Type>
39023           </Argument>
39024         </ArgumentList>
39025       </Operation>
39026       <Operation name="foldersremoved" id="::Messaging::MessageFoldersChangeCallback::foldersremoved">
39027         <webidl>    void foldersremoved(<ref>MessageFolder</ref>[] removedFolders);</webidl>
39028         <descriptive>
39029             <brief>
39030  Called when folders are removed from <em>MessageStorage</em>.
39031             </brief>
39032             <version>
39033  1.0
39034             </version>
39035         </descriptive>
39036         <Type type="void"/>
39037         <ArgumentList>
39038           <Argument name="removedFolders">
39039             <descriptive>
39040                 <description><p>
39041  Array of removed folders. It contains only MessageFolderId attribute.
39042                 </p></description>
39043             </descriptive>
39044             <Type type="array">
39045               <Type name="MessageFolder"/>
39046             </Type>
39047           </Argument>
39048         </ArgumentList>
39049       </Operation>
39050     </Interface>
39051     <Interface name="MessageConversation" id="::Messaging::MessageConversation">
39052       <webidl>  [NoInterfaceObject] interface MessageConversation {
39053
39054     readonly attribute <ref>MessageConvId</ref> id;
39055
39056     readonly attribute <ref>MessageServiceTag</ref> type;
39057
39058     readonly attribute Date timestamp;
39059      
39060     readonly attribute unsigned long messageCount;
39061
39062     readonly attribute unsigned long unreadMessages;
39063
39064     readonly attribute DOMString preview;
39065
39066     readonly attribute DOMString subject;
39067
39068     readonly attribute boolean isRead;
39069
39070     readonly attribute DOMString from;
39071
39072     readonly attribute DOMString[] to;
39073
39074     readonly attribute DOMString[] cc;
39075
39076     readonly attribute DOMString[] bcc;
39077
39078     readonly attribute <ref>MessageId</ref> lastMessageId;
39079   };</webidl>
39080       <descriptive>
39081           <brief>
39082  This interface defines the message conversation (also known as the thread of messages).
39083           </brief>
39084          <description>
39085           <p>
39086 This interface allows a web application to get the set of properties linked to a conversation.
39087 This interface provides only read-only attributes.
39088           </p>
39089          </description>
39090           <version>
39091  1.0
39092           </version>
39093       </descriptive>
39094       <ExtendedAttributeList>
39095         <ExtendedAttribute name="NoInterfaceObject">
39096           <webidl>NoInterfaceObject</webidl>
39097         </ExtendedAttribute>
39098       </ExtendedAttributeList>
39099       <Attribute readonly="readonly" name="id" id="::Messaging::MessageConversation::id">
39100         <webidl>    readonly attribute <ref>MessageConvId</ref> id;</webidl>
39101         <descriptive>
39102             <brief>
39103  The conversation identifier.
39104             </brief>
39105            <description>
39106             <p>
39107 The ID is locally unique and persistent property, assigned by the device or the Web runtime (WRT).
39108             </p>
39109            </description>
39110             <version>
39111  1.0
39112             </version>
39113         </descriptive>
39114         <Type name="MessageConvId"/>
39115       </Attribute>
39116       <Attribute readonly="readonly" name="type" id="::Messaging::MessageConversation::type">
39117         <webidl>    readonly attribute <ref>MessageServiceTag</ref> type;</webidl>
39118         <descriptive>
39119             <brief>
39120  The type of a given conversation.
39121             </brief>
39122             <version>
39123  1.0
39124             </version>
39125         </descriptive>
39126         <Type name="MessageServiceTag"/>
39127       </Attribute>
39128       <Attribute readonly="readonly" name="timestamp" id="::Messaging::MessageConversation::timestamp">
39129         <webidl>    readonly attribute Date timestamp;</webidl>
39130         <descriptive>
39131             <brief>
39132  The timestamp of the latest message in a conversation.
39133             </brief>
39134            <description>
39135             <p>
39136 This property is set up by the device or the Web runtime environment.
39137             </p>
39138            </description>
39139             <version>
39140  1.0
39141             </version>
39142         </descriptive>
39143         <Type type="Date"/>
39144       </Attribute>
39145       <Attribute readonly="readonly" name="messageCount" id="::Messaging::MessageConversation::messageCount">
39146         <webidl>    readonly attribute unsigned long messageCount;</webidl>
39147         <descriptive>
39148             <brief>
39149  The count of messages in a conversation.
39150             </brief>
39151             <version>
39152  1.0
39153             </version>
39154         </descriptive>
39155         <Type type="unsigned long"/>
39156       </Attribute>
39157       <Attribute readonly="readonly" name="unreadMessages" id="::Messaging::MessageConversation::unreadMessages">
39158         <webidl>    readonly attribute unsigned long unreadMessages;</webidl>
39159         <descriptive>
39160             <brief>
39161  The count of unread messages in a conversation.
39162             </brief>
39163             <version>
39164  1.0
39165             </version>
39166         </descriptive>
39167         <Type type="unsigned long"/>
39168       </Attribute>
39169       <Attribute readonly="readonly" name="preview" id="::Messaging::MessageConversation::preview">
39170         <webidl>    readonly attribute DOMString preview;</webidl>
39171         <descriptive>
39172             <brief>
39173  A preview of the latest message in a conversation.
39174             </brief>
39175             <version>
39176  1.0
39177             </version>
39178         </descriptive>
39179         <Type type="DOMString"/>
39180       </Attribute>
39181       <Attribute readonly="readonly" name="subject" id="::Messaging::MessageConversation::subject">
39182         <webidl>    readonly attribute DOMString subject;</webidl>
39183         <descriptive>
39184             <brief>
39185  The subject of a conversation (applicable for group chats, MMS, email).
39186             </brief>
39187             <version>
39188  1.0
39189             </version>
39190         </descriptive>
39191         <Type type="DOMString"/>
39192       </Attribute>
39193       <Attribute readonly="readonly" name="isRead" id="::Messaging::MessageConversation::isRead">
39194         <webidl>    readonly attribute boolean isRead;</webidl>
39195         <descriptive>
39196             <brief>
39197  An attribute to indicate whether the latest message in a conversation has been read or not.
39198             </brief>
39199            <description>
39200             <p>
39201 This property is set to <var>true</var> if the message has been read, else it is set to <var>false</var>.
39202             </p>
39203            </description>
39204             <version>
39205  1.0
39206             </version>
39207         </descriptive>
39208         <Type type="boolean"/>
39209       </Attribute>
39210       <Attribute readonly="readonly" name="from" id="::Messaging::MessageConversation::from">
39211         <webidl>    readonly attribute DOMString from;</webidl>
39212         <descriptive>
39213             <brief>
39214  The source address (or source phone number) of the latest message in the conversation.
39215             </brief>
39216            <description>
39217             <p>
39218 This property is set up by the device or the Web runtime environment.
39219             </p>
39220            </description>
39221             <version>
39222  1.0
39223             </version>
39224         </descriptive>
39225         <Type type="DOMString"/>
39226       </Attribute>
39227       <Attribute readonly="readonly" name="to" id="::Messaging::MessageConversation::to">
39228         <webidl>    readonly attribute DOMString[] to;</webidl>
39229         <descriptive>
39230             <brief>
39231  The destination of the latest message in a conversation.
39232             </brief>
39233             <version>
39234  1.0
39235             </version>
39236         </descriptive>
39237         <Type type="array">
39238           <Type type="DOMString"/>
39239         </Type>
39240       </Attribute>
39241       <Attribute readonly="readonly" name="cc" id="::Messaging::MessageConversation::cc">
39242         <webidl>    readonly attribute DOMString[] cc;</webidl>
39243         <descriptive>
39244             <brief>
39245  The carbon copy (cc) address of the latest message in a conversation.
39246             </brief>
39247            <description>
39248             <p>
39249 This property is used only for email.
39250             </p>
39251            </description>
39252             <version>
39253  1.0
39254             </version>
39255         </descriptive>
39256         <Type type="array">
39257           <Type type="DOMString"/>
39258         </Type>
39259       </Attribute>
39260       <Attribute readonly="readonly" name="bcc" id="::Messaging::MessageConversation::bcc">
39261         <webidl>    readonly attribute DOMString[] bcc;</webidl>
39262         <descriptive>
39263             <brief>
39264  The blind carbon copy (bcc) address of the latest message in a conversation.
39265             </brief>
39266            <description>
39267             <p>
39268 This property is used only for email.
39269             </p>
39270            </description>
39271             <version>
39272  1.0
39273             </version>
39274         </descriptive>
39275         <Type type="array">
39276           <Type type="DOMString"/>
39277         </Type>
39278       </Attribute>
39279       <Attribute readonly="readonly" name="lastMessageId" id="::Messaging::MessageConversation::lastMessageId">
39280         <webidl>    readonly attribute <ref>MessageId</ref> lastMessageId;</webidl>
39281         <descriptive>
39282             <brief>
39283  The identifier of a latest message in a conversation.
39284             </brief>
39285            <description>
39286             <p>
39287 This property is set up by the device or the Web runtime environment.
39288             </p>
39289            </description>
39290             <version>
39291  1.0
39292             </version>
39293         </descriptive>
39294         <Type name="MessageId"/>
39295       </Attribute>
39296     </Interface>
39297     <Interface name="MessageFolder" id="::Messaging::MessageFolder">
39298       <webidl>  [NoInterfaceObject] interface MessageFolder {
39299
39300     readonly attribute <ref>MessageFolderId</ref> id;
39301
39302     readonly attribute <ref>MessageFolderId</ref> parentId;
39303
39304     readonly attribute DOMString serviceId;
39305
39306     readonly attribute <ref>MessageServiceTag</ref> contentType;
39307
39308     attribute DOMString name setraises(<ref>WebAPIException</ref>);
39309
39310     readonly attribute DOMString path;
39311
39312     readonly attribute DOMString type;
39313
39314     attribute boolean synchronizable setraises(<ref>WebAPIException</ref>);
39315   };</webidl>
39316       <descriptive>
39317           <brief>
39318  This interface defines the email folder.
39319           </brief>
39320          <description>
39321           <p>
39322 This interface allows a web application to get the set of properties that are linked to an email folder.
39323           </p>
39324           <p>
39325 The concept of folders is present in several email protocols, such as IMAP, Mail For Exchange.
39326           </p>
39327           <p>
39328 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.
39329           </p>
39330          </description>
39331           <version>
39332  1.0
39333           </version>
39334       </descriptive>
39335       <ExtendedAttributeList>
39336         <ExtendedAttribute name="NoInterfaceObject">
39337           <webidl>NoInterfaceObject</webidl>
39338         </ExtendedAttribute>
39339       </ExtendedAttributeList>
39340       <Attribute readonly="readonly" name="id" id="::Messaging::MessageFolder::id">
39341         <webidl>    readonly attribute <ref>MessageFolderId</ref> id;</webidl>
39342         <descriptive>
39343             <brief>
39344  The folder identifier.
39345 The ID is locally unique and persistent property, assigned by the device or the Web runtime (WRT).
39346             </brief>
39347             <version>
39348  1.0
39349             </version>
39350         </descriptive>
39351         <Type name="MessageFolderId"/>
39352       </Attribute>
39353       <Attribute readonly="readonly" name="parentId" id="::Messaging::MessageFolder::parentId">
39354         <webidl>    readonly attribute <ref>MessageFolderId</ref> parentId;</webidl>
39355         <descriptive>
39356             <brief>
39357  The identifier for the parent folder of  a specified folder.
39358             </brief>
39359            <description>
39360             <p>
39361 If this folder is a root folder, the parent folder ID is <var>null</var>.
39362             </p>
39363            </description>
39364             <version>
39365  1.0
39366             </version>
39367         </descriptive>
39368         <Type name="MessageFolderId"/>
39369       </Attribute>
39370       <Attribute readonly="readonly" name="serviceId" id="::Messaging::MessageFolder::serviceId">
39371         <webidl>    readonly attribute DOMString serviceId;</webidl>
39372         <descriptive>
39373             <brief>
39374  The identifier of the service to which a specified folder belongs.
39375             </brief>
39376             <version>
39377  1.0.
39378             </version>
39379         </descriptive>
39380         <Type type="DOMString"/>
39381       </Attribute>
39382       <Attribute readonly="readonly" name="contentType" id="::Messaging::MessageFolder::contentType">
39383         <webidl>    readonly attribute <ref>MessageServiceTag</ref> contentType;</webidl>
39384         <descriptive>
39385             <brief>
39386  The type of the messages contained within a folder.
39387             </brief>
39388             <version>
39389  1.0
39390             </version>
39391         </descriptive>
39392         <Type name="MessageServiceTag"/>
39393       </Attribute>
39394       <Attribute name="name" id="::Messaging::MessageFolder::name">
39395         <webidl>    attribute DOMString name setraises(<ref>WebAPIException</ref>);</webidl>
39396         <descriptive>
39397             <brief>
39398  The visible name of a folder.
39399             </brief>
39400            <description>
39401             <p>
39402 Can be modified. By default, it contains the folder name from the server.
39403             </p>
39404             <p>
39405 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.
39406             </p>
39407            </description>
39408             <version>
39409  1.0
39410             </version>
39411         </descriptive>
39412         <Type type="DOMString"/>
39413         <SetRaises>
39414           <RaiseException name="WebAPIException"/>
39415         </SetRaises>
39416       </Attribute>
39417       <Attribute readonly="readonly" name="path" id="::Messaging::MessageFolder::path">
39418         <webidl>    readonly attribute DOMString path;</webidl>
39419         <descriptive>
39420             <brief>
39421  The whole path of a remote folder on the server.
39422             </brief>
39423            <description>
39424             <p>
39425 If the current Messaging service does not support remote folders on the server,
39426 this attribute will be empty.
39427             </p>
39428            </description>
39429             <version>
39430  1.0
39431             </version>
39432         </descriptive>
39433         <Type type="DOMString"/>
39434       </Attribute>
39435       <Attribute readonly="readonly" name="type" id="::Messaging::MessageFolder::type">
39436         <webidl>    readonly attribute DOMString type;</webidl>
39437         <descriptive>
39438             <brief>
39439  The standard type of a folder.
39440             </brief>
39441            <description>
39442             <p>
39443 It can be one of the following values:
39444             </p>
39445             <ul>
39446               <li>
39447 INBOX              </li>
39448               <li>
39449 OUTBOX              </li>
39450               <li>
39451 DRAFTS              </li>
39452               <li>
39453 SENTBOX              </li>
39454             </ul>
39455             <p>
39456 If this folder is not a standard folder, an empty value must be returned.
39457             </p>
39458             <p>
39459 This property is unique for each type within one Messaging service.
39460             </p>
39461            </description>
39462             <version>
39463  1.0
39464             </version>
39465         </descriptive>
39466         <Type type="DOMString"/>
39467       </Attribute>
39468       <Attribute name="synchronizable" id="::Messaging::MessageFolder::synchronizable">
39469         <webidl>    attribute boolean synchronizable setraises(<ref>WebAPIException</ref>);</webidl>
39470         <descriptive>
39471             <brief>
39472  An attribute to show whether this folder should be synchronized or not.
39473             </brief>
39474            <description>
39475             <p>
39476 This attribute affects the behavior of the MessageService.sync() method.
39477             </p>
39478            </description>
39479             <version>
39480  1.0
39481             </version>
39482         </descriptive>
39483         <Type type="boolean"/>
39484         <SetRaises>
39485           <RaiseException name="WebAPIException"/>
39486         </SetRaises>
39487       </Attribute>
39488     </Interface>
39489   </Module>
39490   <Module name="NetworkBearerSelection" id="::NetworkBearerSelection">
39491     <webidl>module NetworkBearerSelection {
39492
39493   enum NetworkType { &quot;CELLULAR&quot;, &quot;UNKNOWN&quot; };
39494
39495   [NoInterfaceObject] interface NetworkBearerSelectionObject {
39496     readonly attribute <ref>NetworkBearerSelection</ref> networkbearerselection;
39497   };
39498   <ref>Tizen</ref> implements <ref>NetworkBearerSelectionObject</ref>;
39499
39500   [NoInterfaceObject] interface NetworkBearerSelection {
39501
39502     void requestRouteToHost(<ref>NetworkType</ref> networkType,
39503                             DOMString domainName,
39504                             <ref>NetworkSuccessCallback</ref> successCallback,
39505                             optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
39506
39507     void releaseRouteToHost(<ref>NetworkType</ref> networkType,
39508                             DOMString domainName,
39509                             <ref>SuccessCallback</ref> successCallback,
39510                             optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
39511   };
39512   
39513   [Callback, NoInterfaceObject] interface NetworkSuccessCallback {
39514     void onsuccess();
39515
39516     void ondisconnected();    
39517   };    
39518 };</webidl>
39519     <descriptive>
39520         <brief>
39521  This specification defines interfaces and methods providing Web applications to access the devices.
39522         </brief>
39523        <description>
39524         <p>
39525 This API provides interfaces and methods for users to set network bearer selection.
39526         </p>
39527        </description>
39528         <version>
39529  2.1
39530         </version>
39531         <def-api-feature identifier="http://tizen.org/feature/network.telephony">
39532           <descriptive>
39533            <description>
39534             <p>
39535  
39536 To guarantee this application running on a device with telephony feature, define below in the config file: 
39537             </p>
39538            </description>
39539           </descriptive>
39540         </def-api-feature>
39541     </descriptive>
39542     <Enum name="NetworkType" id="::NetworkBearerSelection::NetworkType">
39543       <webidl>  enum NetworkType { &quot;CELLULAR&quot;, &quot;UNKNOWN&quot; };</webidl>
39544       <descriptive>
39545           <brief>
39546  An enumerator that defines the type of a network.
39547           </brief>
39548           <version>
39549  2.1
39550           </version>
39551       </descriptive>
39552       <EnumValue stringvalue="CELLULAR">
39553         <webidl> &quot;CELLULAR</webidl>
39554       </EnumValue>
39555       <EnumValue stringvalue="UNKNOWN">
39556         <webidl> &quot;UNKNOWN</webidl>
39557       </EnumValue>
39558     </Enum>
39559     <Interface name="NetworkBearerSelectionObject" id="::NetworkBearerSelection::NetworkBearerSelectionObject">
39560       <webidl>  [NoInterfaceObject] interface NetworkBearerSelectionObject {
39561     readonly attribute <ref>NetworkBearerSelection</ref> networkbearerselection;
39562   };</webidl>
39563       <descriptive>
39564           <brief>
39565  Defines what is instantiated the Tizen object from the Tizen Platform.
39566           </brief>
39567          <description>
39568           <p>
39569 There is a <em>tizen.networkbearerselection </em>object that allows accessing the functionality of the Networkbearerselection API.
39570           </p>
39571          </description>
39572           <version>
39573  2.1
39574           </version>
39575       </descriptive>
39576       <ExtendedAttributeList>
39577         <ExtendedAttribute name="NoInterfaceObject">
39578           <webidl>NoInterfaceObject</webidl>
39579         </ExtendedAttribute>
39580       </ExtendedAttributeList>
39581       <Attribute readonly="readonly" name="networkbearerselection" id="::NetworkBearerSelection::NetworkBearerSelectionObject::networkbearerselection">
39582         <webidl>    readonly attribute <ref>NetworkBearerSelection</ref> networkbearerselection;</webidl>
39583         <Type name="NetworkBearerSelection"/>
39584       </Attribute>
39585     </Interface>
39586     <Implements name1="Tizen" name2="NetworkBearerSelectionObject">
39587       <webidl>  <ref>Tizen</ref> implements <ref>NetworkBearerSelectionObject</ref>;</webidl>
39588     </Implements>
39589     <Interface name="NetworkBearerSelection" id="::NetworkBearerSelection::NetworkBearerSelection">
39590       <webidl>  [NoInterfaceObject] interface NetworkBearerSelection {
39591
39592     void requestRouteToHost(<ref>NetworkType</ref> networkType,
39593                             DOMString domainName,
39594                             <ref>NetworkSuccessCallback</ref> successCallback,
39595                             optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
39596
39597     void releaseRouteToHost(<ref>NetworkType</ref> networkType,
39598                             DOMString domainName,
39599                             <ref>SuccessCallback</ref> successCallback,
39600                             optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
39601   };</webidl>
39602       <descriptive>
39603           <brief>
39604  This entry interface provides methods to query the network bearer selection.
39605           </brief>
39606          <description>
39607           <p>
39608 This API offers methods for network bearer selection.
39609           </p>
39610          </description>
39611           <version>
39612  2.1
39613           </version>
39614       </descriptive>
39615       <ExtendedAttributeList>
39616         <ExtendedAttribute name="NoInterfaceObject">
39617           <webidl>NoInterfaceObject</webidl>
39618         </ExtendedAttribute>
39619       </ExtendedAttributeList>
39620       <Operation name="requestRouteToHost" id="::NetworkBearerSelection::NetworkBearerSelection::requestRouteToHost">
39621         <webidl>    void requestRouteToHost(<ref>NetworkType</ref> networkType,
39622                             DOMString domainName,
39623                             <ref>NetworkSuccessCallback</ref> successCallback,
39624                             optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
39625         <descriptive>
39626             <brief>
39627  Requests a specific network connection.
39628             </brief>
39629            <description>
39630             <p>
39631 The function must asynchronously acquire success or fail.
39632             </p>
39633             <p>
39634 When called, it starts a request process defined with these set of steps:
39635             </p>
39636             <ul>
39637               <li>
39638 1. Open &quot;networkType&quot; network connection.              </li>
39639               <li>
39640 2. Resolve &quot;domainName&quot; to IP.              </li>
39641               <li>
39642 3. Change the routing path bound to domainName's IP to use the specific network type.              </li>
39643               <li>
39644 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>
39645             </ul>
39646            </description>
39647             <version>
39648  2.1
39649             </version>
39650             <Code> var statuscb = {
39651    onsuccess: function() { console.log(&quot;onsuccess func is called&quot;); },
39652    ondisconnected: function() { console.log(&quot;ondisconnected func is called&quot;); } 
39653  };
39654  function ecb(e) { console.log(&quot;error callback is called : &quot; + e.message + &quot; : &quot; + e.code); }
39655  tizen.networkbearerselection.requestRouteToHost(&quot;CELLULAR&quot;, &quot;www.tizen.org&quot;, statuscb, ecb);
39656          
39657 </Code>
39658             <privilegelevel>
39659  partner
39660             </privilegelevel>
39661             <privilege>
39662  http://tizen.org/privilege/networkbearerselection
39663             </privilege>
39664         </descriptive>
39665         <Type type="void"/>
39666         <ArgumentList>
39667           <Argument name="networkType">
39668             <descriptive>
39669                 <description><p>
39670  The network type.
39671                 </p></description>
39672             </descriptive>
39673             <Type name="NetworkType"/>
39674           </Argument>
39675           <Argument name="domainName">
39676             <descriptive>
39677                 <description><p>
39678  The domain name.
39679                 </p></description>
39680             </descriptive>
39681             <Type type="DOMString"/>
39682           </Argument>
39683           <Argument name="successCallback">
39684             <descriptive>
39685                 <description><p>
39686  To be invoked if data network connection is connected or not.
39687                 </p></description>
39688             </descriptive>
39689             <Type name="NetworkSuccessCallback"/>
39690           </Argument>
39691           <Argument optional="optional" name="errorCallback">
39692             <descriptive>
39693                 <description><p>
39694  To be invoked if the request is failed.
39695                 </p></description>
39696             </descriptive>
39697             <Type name="ErrorCallback" nullable="nullable"/>
39698           </Argument>
39699         </ArgumentList>
39700         <Raises>
39701           <RaiseException name="WebAPIException">
39702             <descriptive>
39703                 <description><p>
39704  with error type NotSupportedError, if this feature is not supported.
39705                 </p></description>
39706                 <description><p>
39707  with error type SecurityError, if the application does not have the privilege to call this method.
39708                 </p></description>
39709                 <description><p>
39710  with error type UnknownError, if any other error occurs.
39711                 </p></description>
39712             </descriptive>
39713           </RaiseException>
39714         </Raises>
39715       </Operation>
39716       <Operation name="releaseRouteToHost" id="::NetworkBearerSelection::NetworkBearerSelection::releaseRouteToHost">
39717         <webidl>    void releaseRouteToHost(<ref>NetworkType</ref> networkType,
39718                             DOMString domainName,
39719                             <ref>SuccessCallback</ref> successCallback,
39720                             optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
39721         <descriptive>
39722             <brief>
39723  Releases a specific network connection.
39724             </brief>
39725            <description>
39726             <p>
39727 The function must asynchronously acquire success or fail.
39728             </p>
39729             <p>
39730 When called, it closes a network connection.
39731             </p>
39732            </description>
39733             <version>
39734  2.1
39735             </version>
39736             <Code> function scb() { console.log(&quot;success callback is called&quot;); }
39737  function ecb(e) { console.log(&quot;error callback is called : &quot; + e.message + &quot; : &quot; + e.code); }
39738  var statuscb = {
39739    onsuccess: function() { 
39740      console.log(&quot;onsuccess func is called&quot;); 
39741      tizen.networkbearerselection.releaseRouteToHost(&quot;CELLULAR&quot;, &quot;www.google.com&quot;, scb, ecb);
39742    },
39743    ondisconnected: function() { console.log(&quot;ondisconnected func is called&quot;); } 
39744  };
39745  tizen.networkbearerselection.requestRouteToHost(&quot;CELLULAR&quot;, &quot;www.google.com&quot;, statuscb, ecb);
39746           
39747 </Code>
39748             <privilegelevel>
39749  partner
39750             </privilegelevel>
39751             <privilege>
39752  http://tizen.org/privilege/networkbearerselection
39753             </privilege>
39754         </descriptive>
39755         <Type type="void"/>
39756         <ArgumentList>
39757           <Argument name="networkType">
39758             <descriptive>
39759                 <description><p>
39760  The network type.
39761                 </p></description>
39762             </descriptive>
39763             <Type name="NetworkType"/>
39764           </Argument>
39765           <Argument name="domainName">
39766             <descriptive>
39767                 <description><p>
39768  The domain name.
39769                 </p></description>
39770             </descriptive>
39771             <Type type="DOMString"/>
39772           </Argument>
39773           <Argument name="successCallback">
39774             <descriptive>
39775                 <description><p>
39776  To be invoked if data network connection is released.
39777                 </p></description>
39778             </descriptive>
39779             <Type name="SuccessCallback"/>
39780           </Argument>
39781           <Argument optional="optional" name="errorCallback">
39782             <descriptive>
39783                 <description><p>
39784  To be invoked if the release is failed.
39785                 </p></description>
39786             </descriptive>
39787             <Type name="ErrorCallback" nullable="nullable"/>
39788           </Argument>
39789         </ArgumentList>
39790         <Raises>
39791           <RaiseException name="WebAPIException">
39792             <descriptive>
39793                 <description><p>
39794  with error type NotSupportedError, if this feature is not supported.
39795                 </p></description>
39796                 <description><p>
39797  with error type SecurityError, if the application does not have the privilege to call this method.
39798                 </p></description>
39799                 <description><p>
39800  with error type UnknownError, if any other error occurs.
39801                 </p></description>
39802             </descriptive>
39803           </RaiseException>
39804         </Raises>
39805       </Operation>
39806     </Interface>
39807     <Interface name="NetworkSuccessCallback" id="::NetworkBearerSelection::NetworkSuccessCallback">
39808       <webidl>  [Callback, NoInterfaceObject] interface NetworkSuccessCallback {
39809     void onsuccess();
39810
39811     void ondisconnected();    
39812   };</webidl>
39813       <descriptive>
39814           <brief>
39815  This interface provides a success callback specific to NetworkBearerSelection.
39816           </brief>
39817          <description>
39818           <p>
39819 It is used in asynchronous operations with requestRouteToHost().
39820           </p>
39821          </description>
39822           <version>
39823  2.1
39824           </version>
39825       </descriptive>
39826       <ExtendedAttributeList>
39827         <ExtendedAttribute name="Callback">
39828           <webidl>Callback</webidl>
39829         </ExtendedAttribute>
39830         <ExtendedAttribute name="NoInterfaceObject">
39831           <webidl> NoInterfaceObject</webidl>
39832         </ExtendedAttribute>
39833       </ExtendedAttributeList>
39834       <Operation name="onsuccess" id="::NetworkBearerSelection::NetworkSuccessCallback::onsuccess">
39835         <webidl>    void onsuccess();</webidl>
39836         <descriptive>
39837             <brief>
39838  Called when a network is connected successfully.
39839             </brief>
39840             <version>
39841  2.1
39842             </version>
39843         </descriptive>
39844         <Type type="void"/>
39845         <ArgumentList/>
39846       </Operation>
39847       <Operation name="ondisconnected" id="::NetworkBearerSelection::NetworkSuccessCallback::ondisconnected">
39848         <webidl>    void ondisconnected();</webidl>
39849         <descriptive>
39850             <brief>
39851  Called when a network is disconnected.
39852             </brief>
39853             <version>
39854  2.1
39855             </version>
39856         </descriptive>
39857         <Type type="void"/>
39858         <ArgumentList/>
39859       </Operation>
39860     </Interface>
39861   </Module>
39862   <Module name="NFC" id="::NFC">
39863     <webidl>module NFC {
39864   enum NDEFRecordTextEncoding { &quot;UTF8&quot;, &quot;UTF16&quot; };
39865
39866   enum NFCTagType { &quot;GENERIC_TARGET&quot;, &quot;ISO14443_A&quot;, &quot;ISO14443_4A&quot;, &quot;ISO14443_3A&quot;,
39867   &quot;MIFARE_MINI&quot;, &quot;MIFARE_1K&quot;, &quot;MIFARE_4K&quot;, &quot;MIFARE_ULTRA&quot;, &quot;MIFARE_DESFIRE&quot;,
39868   &quot;ISO14443_B&quot;, &quot;ISO14443_4B&quot;, &quot;ISO14443_BPRIME&quot;, &quot;FELICA&quot;, &quot;JEWEL&quot;, &quot;ISO15693&quot;,
39869   &quot;UNKNOWN_TARGET&quot; };
39870   
39871   [NoInterfaceObject] interface NFCManagerObject {
39872     readonly attribute <ref>NFCManager</ref> nfc;
39873   };
39874   <ref>Tizen</ref> implements <ref>NFCManagerObject</ref>;
39875
39876   [NoInterfaceObject] interface NFCManager {
39877     const short NFC_RECORD_TNF_EMPTY = 0;
39878     const short NFC_RECORD_TNF_WELL_KNOWN = 1;
39879     const short NFC_RECORD_TNF_MIME_MEDIA = 2;
39880     const short NFC_RECORD_TNF_URI = 3;
39881     const short NFC_RECORD_TNF_EXTERNAL_RTD = 4;
39882     const short NFC_RECORD_TNF_UNKNOWN = 5;
39883     const short NFC_RECORD_TNF_UNCHANGED = 6;
39884
39885     <ref>NFCAdapter</ref> getDefaultAdapter() raises(<ref>WebAPIException</ref>);
39886
39887     void setExclusiveMode(boolean mode) raises(<ref>WebAPIException</ref>);
39888   };
39889
39890
39891   [NoInterfaceObject] interface NFCAdapter {
39892     readonly attribute boolean powered ;
39893
39894
39895     void setPowered(boolean state,
39896                     optional <ref>SuccessCallback</ref>? successCallback,
39897                     optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
39898
39899
39900     void setTagListener(<ref>NFCTagDetectCallback</ref> detectCallback,
39901                         optional <ref>NFCTagType</ref>[]? tagFilter) raises(<ref>WebAPIException</ref>);
39902
39903     void setPeerListener(<ref>NFCPeerDetectCallback</ref> detectCallback) raises(<ref>WebAPIException</ref>);
39904
39905     void unsetTagListener() raises(<ref>WebAPIException</ref>);
39906
39907     void unsetPeerListener() raises(<ref>WebAPIException</ref>);
39908
39909     <ref>NDEFMessage</ref>? getCachedMessage() raises(<ref>WebAPIException</ref>);
39910
39911   };
39912
39913
39914   [NoInterfaceObject] interface NFCTag {
39915     readonly attribute <ref>NFCTagType</ref> type;
39916
39917     readonly attribute boolean isSupportedNDEF;
39918
39919     readonly attribute long ndefSize;
39920
39921     readonly attribute object properties;
39922
39923     readonly attribute boolean isConnected;
39924
39925
39926      void readNDEF(<ref>NDEFMessageReadCallback</ref> readCallback,
39927                   optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
39928
39929     void writeNDEF(<ref>NDEFMessage</ref> ndefMessage,
39930                    optional <ref>SuccessCallback</ref>? successCallback,
39931                    optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
39932
39933     void transceive(byte[] data,
39934                     <ref>ByteArraySuccessCallback</ref> dataCallback,
39935                     optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
39936   };
39937
39938
39939   [NoInterfaceObject] interface NFCPeer {
39940     readonly attribute boolean isConnected;
39941     
39942     void setReceiveNDEFListener(<ref>NDEFMessageReadCallback</ref> successCallback) raises(<ref>WebAPIException</ref>);
39943
39944     void unsetReceiveNDEFListener() raises(<ref>WebAPIException</ref>);
39945
39946     void sendNDEF(<ref>NDEFMessage</ref> ndefMessage,
39947                   optional <ref>SuccessCallback</ref>? successCallback,
39948                   optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
39949
39950   };
39951
39952   [Constructor(),
39953    Constructor(<ref>NDEFRecord</ref>[] ndefRecords),
39954    Constructor(byte[] rawData)]
39955   interface NDEFMessage {
39956     readonly attribute long recordCount;
39957     
39958     attribute <ref>NDEFRecord</ref>[] records;
39959
39960     byte[] toByte() raises(<ref>WebAPIException</ref>);
39961   };
39962
39963   [Constructor(short tnf, byte[] type, byte[] payload, optional byte[]? id),
39964    Constructor(byte[] raw_data)]
39965   interface NDEFRecord {
39966     readonly attribute short tnf;
39967
39968     readonly attribute byte[] type;
39969
39970     readonly attribute byte[] id;
39971     
39972     readonly attribute byte[] payload;
39973   };
39974
39975   [Constructor(DOMString text, DOMString languageCode, optional DOMString? encoding)]
39976   interface NDEFRecordText : <ref>NDEFRecord</ref> {
39977     readonly attribute DOMString text;
39978     
39979     readonly attribute DOMString languageCode;
39980     
39981     readonly attribute <ref>NDEFRecordTextEncoding</ref> encoding;
39982   };
39983
39984   [Constructor(DOMString uri)]
39985   interface NDEFRecordURI : <ref>NDEFRecord</ref> {
39986     readonly attribute DOMString uri;
39987   };
39988   [Constructor(DOMString mimeType, byte[] data)]
39989   interface NDEFRecordMedia : <ref>NDEFRecord</ref> {
39990     readonly attribute DOMString mimeType;
39991   };
39992
39993  
39994   [Callback, NoInterfaceObject] interface NFCTagDetectCallback {
39995     void onattach(<ref>NFCTag</ref> nfcTag);
39996     void ondetach();
39997   };
39998
39999   [Callback, NoInterfaceObject] interface NFCPeerDetectCallback {
40000     void onattach(<ref>NFCPeer</ref> nfcPeer);
40001     void ondetach();
40002   };
40003
40004   [Callback=FunctionOnly, NoInterfaceObject] interface NDEFMessageReadCallback {
40005     void onsuccess(<ref>NDEFMessage</ref> ndefMessage);
40006   };
40007
40008   [Callback=FunctionOnly, NoInterfaceObject] interface ByteArraySuccessCallback {
40009     void onsuccess(byte[] data);
40010   };
40011
40012 };</webidl>
40013     <descriptive>
40014         <brief>
40015   This interface specifies a protocol for simple wireless interconnection of 
40016 closely coupled devices operating at 13.56 MHz using Near Field Communication (NFC),
40017 which is an international standard (ISO/IEC 18092). 
40018 To know more, see <a href="http://www.nfc-forum.org/specs/spec_list/">Technical Specifications</a>.
40019         </brief>
40020        <description>
40021         <p>
40022 There are three groups of application scenarios for NFC:
40023         </p>
40024         <ul>
40025           <li>
40026 Exchanging some digital information or data by holding a device close to a wireless tag.          </li>
40027           <li>
40028 Exchanging some information or data between two devices by holding them close to each other.          </li>
40029           <li>
40030 Making payments by holding mobile phones close to point of sales terminals instead of swiping smart cards.          </li>
40031         </ul>
40032         <p>
40033 For more information on the NFC features, see <a href="../../org.tizen.web.appprogramming/html/guide/communication_guide/nfc.htm">NFC Guide</a>.
40034         </p>
40035        </description>
40036         <version>
40037  1.0
40038         </version>
40039         <def-api-feature identifier="http://tizen.org/feature/network.nfc">
40040           <descriptive>
40041            <description>
40042             <p>
40043 To guarantee this application running on a device with NFC feature, define below in the config file: 
40044             </p>
40045            </description>
40046           </descriptive>
40047         </def-api-feature>
40048     </descriptive>
40049     <Enum name="NDEFRecordTextEncoding" id="::NFC::NDEFRecordTextEncoding">
40050       <webidl>  enum NDEFRecordTextEncoding { &quot;UTF8&quot;, &quot;UTF16&quot; };</webidl>
40051       <descriptive>
40052           <brief>
40053  An enumerator that defines an encoding format for an NDEF record text.
40054           </brief>
40055           <version>
40056  1.0
40057           </version>
40058       </descriptive>
40059       <EnumValue stringvalue="UTF8">
40060         <webidl> &quot;UTF8</webidl>
40061       </EnumValue>
40062       <EnumValue stringvalue="UTF16">
40063         <webidl> &quot;UTF16</webidl>
40064       </EnumValue>
40065     </Enum>
40066     <Enum name="NFCTagType" id="::NFC::NFCTagType">
40067       <webidl>  enum NFCTagType { &quot;GENERIC_TARGET&quot;, &quot;ISO14443_A&quot;, &quot;ISO14443_4A&quot;, &quot;ISO14443_3A&quot;,
40068   &quot;MIFARE_MINI&quot;, &quot;MIFARE_1K&quot;, &quot;MIFARE_4K&quot;, &quot;MIFARE_ULTRA&quot;, &quot;MIFARE_DESFIRE&quot;,
40069   &quot;ISO14443_B&quot;, &quot;ISO14443_4B&quot;, &quot;ISO14443_BPRIME&quot;, &quot;FELICA&quot;, &quot;JEWEL&quot;, &quot;ISO15693&quot;,
40070   &quot;UNKNOWN_TARGET&quot; };</webidl>
40071       <descriptive>
40072           <brief>
40073  An enumerator that defines the type of NFC tag.
40074           </brief>
40075          <description>
40076           <p>
40077 The following values are supported:
40078           </p>
40079           <ul>
40080             <li>
40081 GENERIC_TARGET            </li>
40082             <li>
40083 ISO14443_A            </li>
40084             <li>
40085 ISO14443_4A            </li>
40086             <li>
40087 ISO14443_3A            </li>
40088             <li>
40089 MIFARE_MINI            </li>
40090             <li>
40091 MIFARE_1K            </li>
40092             <li>
40093 MIFARE_4K            </li>
40094             <li>
40095 MIFARE_ULTRA            </li>
40096             <li>
40097 MIFARE_DESFIRE            </li>
40098             <li>
40099 ISO14443_B            </li>
40100             <li>
40101 ISO14443_4B            </li>
40102             <li>
40103 ISO14443_BPRIME            </li>
40104             <li>
40105 FELICA            </li>
40106             <li>
40107 JEWEL            </li>
40108             <li>
40109 ISO15693            </li>
40110             <li>
40111 UNKNOWN_TARGET            </li>
40112           </ul>
40113          </description>
40114           <version>
40115  1.0
40116           </version>
40117       </descriptive>
40118       <EnumValue stringvalue="GENERIC_TARGET">
40119         <webidl> &quot;GENERIC_TARGET</webidl>
40120       </EnumValue>
40121       <EnumValue stringvalue="ISO14443_A">
40122         <webidl> &quot;ISO14443_A</webidl>
40123       </EnumValue>
40124       <EnumValue stringvalue="ISO14443_4A">
40125         <webidl> &quot;ISO14443_4A</webidl>
40126       </EnumValue>
40127       <EnumValue stringvalue="ISO14443_3A">
40128         <webidl> &quot;ISO14443_3A</webidl>
40129       </EnumValue>
40130       <EnumValue stringvalue="MIFARE_MINI">
40131         <webidl>  &quot;MIFARE_MINI</webidl>
40132       </EnumValue>
40133       <EnumValue stringvalue="MIFARE_1K">
40134         <webidl> &quot;MIFARE_1K</webidl>
40135       </EnumValue>
40136       <EnumValue stringvalue="MIFARE_4K">
40137         <webidl> &quot;MIFARE_4K</webidl>
40138       </EnumValue>
40139       <EnumValue stringvalue="MIFARE_ULTRA">
40140         <webidl> &quot;MIFARE_ULTRA</webidl>
40141       </EnumValue>
40142       <EnumValue stringvalue="MIFARE_DESFIRE">
40143         <webidl> &quot;MIFARE_DESFIRE</webidl>
40144       </EnumValue>
40145       <EnumValue stringvalue="ISO14443_B">
40146         <webidl>  &quot;ISO14443_B</webidl>
40147       </EnumValue>
40148       <EnumValue stringvalue="ISO14443_4B">
40149         <webidl> &quot;ISO14443_4B</webidl>
40150       </EnumValue>
40151       <EnumValue stringvalue="ISO14443_BPRIME">
40152         <webidl> &quot;ISO14443_BPRIME</webidl>
40153       </EnumValue>
40154       <EnumValue stringvalue="FELICA">
40155         <webidl> &quot;FELICA</webidl>
40156       </EnumValue>
40157       <EnumValue stringvalue="JEWEL">
40158         <webidl> &quot;JEWEL</webidl>
40159       </EnumValue>
40160       <EnumValue stringvalue="ISO15693">
40161         <webidl> &quot;ISO15693</webidl>
40162       </EnumValue>
40163       <EnumValue stringvalue="UNKNOWN_TARGET">
40164         <webidl>  &quot;UNKNOWN_TARGET</webidl>
40165       </EnumValue>
40166     </Enum>
40167     <Interface name="NFCManagerObject" id="::NFC::NFCManagerObject">
40168       <webidl>  [NoInterfaceObject] interface NFCManagerObject {
40169     readonly attribute <ref>NFCManager</ref> nfc;
40170   };</webidl>
40171       <descriptive>
40172           <brief>
40173  This interface defines what is instantiated by the <em>Tizen</em> object from the Tizen Platform.
40174 There will be a <em>tizen.nfc </em>object that allows access to the functionality of the NFC API.
40175           </brief>
40176           <version>
40177  1.0
40178           </version>
40179       </descriptive>
40180       <ExtendedAttributeList>
40181         <ExtendedAttribute name="NoInterfaceObject">
40182           <webidl>NoInterfaceObject</webidl>
40183         </ExtendedAttribute>
40184       </ExtendedAttributeList>
40185       <Attribute readonly="readonly" name="nfc" id="::NFC::NFCManagerObject::nfc">
40186         <webidl>    readonly attribute <ref>NFCManager</ref> nfc;</webidl>
40187         <Type name="NFCManager"/>
40188       </Attribute>
40189     </Interface>
40190     <Implements name1="Tizen" name2="NFCManagerObject">
40191       <webidl>  <ref>Tizen</ref> implements <ref>NFCManagerObject</ref>;</webidl>
40192     </Implements>
40193     <Interface name="NFCManager" id="::NFC::NFCManager">
40194       <webidl>  [NoInterfaceObject] interface NFCManager {
40195     const short NFC_RECORD_TNF_EMPTY = 0;
40196     const short NFC_RECORD_TNF_WELL_KNOWN = 1;
40197     const short NFC_RECORD_TNF_MIME_MEDIA = 2;
40198     const short NFC_RECORD_TNF_URI = 3;
40199     const short NFC_RECORD_TNF_EXTERNAL_RTD = 4;
40200     const short NFC_RECORD_TNF_UNKNOWN = 5;
40201     const short NFC_RECORD_TNF_UNCHANGED = 6;
40202
40203     <ref>NFCAdapter</ref> getDefaultAdapter() raises(<ref>WebAPIException</ref>);
40204
40205     void setExclusiveMode(boolean mode) raises(<ref>WebAPIException</ref>);
40206   };</webidl>
40207       <descriptive>
40208           <brief>
40209  Accesses to the NFC tag/target.
40210           </brief>
40211          <description>
40212           <p>
40213 It provides access to the API functionalities through the tizen.nfc interface.
40214           </p>
40215          </description>
40216           <version>
40217  1.0
40218           </version>
40219       </descriptive>
40220       <ExtendedAttributeList>
40221         <ExtendedAttribute name="NoInterfaceObject">
40222           <webidl>NoInterfaceObject</webidl>
40223         </ExtendedAttribute>
40224       </ExtendedAttributeList>
40225       <Const name="NFC_RECORD_TNF_EMPTY" value="0" id="::NFC::NFCManager::NFC_RECORD_TNF_EMPTY">
40226         <webidl>    const short NFC_RECORD_TNF_EMPTY = 0;</webidl>
40227         <descriptive>
40228             <brief>
40229  A constant to indicate empty format of NDEF record's type field.
40230             </brief>
40231             <version>
40232  1.0
40233             </version>
40234         </descriptive>
40235         <Type type="short"/>
40236       </Const>
40237       <Const name="NFC_RECORD_TNF_WELL_KNOWN" value="1" id="::NFC::NFCManager::NFC_RECORD_TNF_WELL_KNOWN">
40238         <webidl>    const short NFC_RECORD_TNF_WELL_KNOWN = 1;</webidl>
40239         <descriptive>
40240             <brief>
40241  A constant to indicate Record Type Definition (RTD) format of NDEF record's type field.
40242             </brief>
40243             <version>
40244  1.0
40245             </version>
40246         </descriptive>
40247         <Type type="short"/>
40248       </Const>
40249       <Const name="NFC_RECORD_TNF_MIME_MEDIA" value="2" id="::NFC::NFCManager::NFC_RECORD_TNF_MIME_MEDIA">
40250         <webidl>    const short NFC_RECORD_TNF_MIME_MEDIA = 2;</webidl>
40251         <descriptive>
40252             <brief>
40253  A constant to indicate MIME media types format in RFC 2046 [RFC 2046] of NDEF record's type field.
40254             </brief>
40255             <version>
40256  1.0
40257             </version>
40258         </descriptive>
40259         <Type type="short"/>
40260       </Const>
40261       <Const name="NFC_RECORD_TNF_URI" value="3" id="::NFC::NFCManager::NFC_RECORD_TNF_URI">
40262         <webidl>    const short NFC_RECORD_TNF_URI = 3;</webidl>
40263         <descriptive>
40264             <brief>
40265  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.
40266             </brief>
40267             <version>
40268  1.0
40269             </version>
40270         </descriptive>
40271         <Type type="short"/>
40272       </Const>
40273       <Const name="NFC_RECORD_TNF_EXTERNAL_RTD" value="4" id="::NFC::NFCManager::NFC_RECORD_TNF_EXTERNAL_RTD">
40274         <webidl>    const short NFC_RECORD_TNF_EXTERNAL_RTD = 4;</webidl>
40275         <descriptive>
40276             <brief>
40277  A constant to indicate NFC forum external type [NFC RTD] format in RFC 2046 [RFC 2046] of NDEF record's type field.
40278             </brief>
40279             <version>
40280  1.0
40281             </version>
40282         </descriptive>
40283         <Type type="short"/>
40284       </Const>
40285       <Const name="NFC_RECORD_TNF_UNKNOWN" value="5" id="::NFC::NFCManager::NFC_RECORD_TNF_UNKNOWN">
40286         <webidl>    const short NFC_RECORD_TNF_UNKNOWN = 5;</webidl>
40287         <descriptive>
40288             <brief>
40289  A constant to indicate unknown type format in RFC 2046 [RFC 2046] of NDEF record's type field.
40290             </brief>
40291             <version>
40292  1.0
40293             </version>
40294         </descriptive>
40295         <Type type="short"/>
40296       </Const>
40297       <Const name="NFC_RECORD_TNF_UNCHANGED" value="6" id="::NFC::NFCManager::NFC_RECORD_TNF_UNCHANGED">
40298         <webidl>    const short NFC_RECORD_TNF_UNCHANGED = 6;</webidl>
40299         <descriptive>
40300             <brief>
40301  A constant to indicate whether the payload is an intermediate or final chunk of a chunked NDEF record.
40302             </brief>
40303             <version>
40304  1.0
40305             </version>
40306         </descriptive>
40307         <Type type="short"/>
40308       </Const>
40309       <Operation name="getDefaultAdapter" id="::NFC::NFCManager::getDefaultAdapter">
40310         <webidl>    <ref>NFCAdapter</ref> getDefaultAdapter() raises(<ref>WebAPIException</ref>);</webidl>
40311         <descriptive>
40312             <brief>
40313  Gets the default NFC adapter of the device.
40314             </brief>
40315             <version>
40316  1.0
40317             </version>
40318             <privilege>
40319  http://tizen.org/privilege/nfc.common
40320             </privilege>
40321             <privilegelevel>
40322  public
40323             </privilegelevel>
40324             <Code> try {
40325   var adapter = tizen.nfc.getDefaultAdapter() ;
40326  } catch (err) {
40327   console.log (err.name +&quot;: &quot; + err.message);
40328  }
40329  </Code>
40330         </descriptive>
40331         <Type name="NFCAdapter">
40332           <descriptive>
40333               <description><p>
40334  NFCAdapter The default NFCAdapter object.
40335               </p></description>
40336           </descriptive>
40337         </Type>
40338         <ArgumentList/>
40339         <Raises>
40340           <RaiseException name="WebAPIException">
40341             <descriptive>
40342                 <description><p>
40343  with error type SecurityError, if the application does not have the privilege to call this method.
40344                 </p></description>
40345                 <description><p>
40346  with error type UnknownError in any other error case.
40347                 </p></description>
40348             </descriptive>
40349           </RaiseException>
40350         </Raises>
40351       </Operation>
40352       <Operation name="setExclusiveMode" id="::NFC::NFCManager::setExclusiveMode">
40353         <webidl>    void setExclusiveMode(boolean mode) raises(<ref>WebAPIException</ref>);</webidl>
40354         <descriptive>
40355             <brief>
40356  Gives priority to the current application for NFC operations over other applications when it is in the foreground.
40357             </brief>
40358            <description>
40359             <p>
40360 If the current application has the priority and is on the foreground, the system stops sending
40361 application control requests that are used to pick an application to handle a request about NFC.
40362 Such a request is usually sent, for example, when detecting an NFC tag or receiving an NDEF message
40363 from a connected NFC peer-to-peer target.
40364             </p>
40365             <p>
40366 When the current application moves to the background, it loses the priority.
40367             </p>
40368             <p>
40369 The exclusive mode can only be set when NFC is on. If NFC is off, the mode is ignored.
40370             </p>
40371            </description>
40372             <version>
40373  2.1
40374             </version>
40375             <privilege>
40376  http://tizen.org/privilege/nfc.common
40377             </privilege>
40378             <privilegelevel>
40379  public
40380             </privilegelevel>
40381             <Code> try {
40382    tizen.nfc.setExclusiveMode(true) ;
40383  } catch (err) {
40384    console.log (err.name + &quot;: &quot; + err.message);
40385  }
40386  </Code>
40387         </descriptive>
40388         <Type type="void"/>
40389         <ArgumentList>
40390           <Argument name="mode">
40391             <descriptive>
40392                 <description><p>
40393  The value of exclusive mode.
40394                 </p></description>
40395             </descriptive>
40396             <Type type="boolean"/>
40397           </Argument>
40398         </ArgumentList>
40399         <Raises>
40400           <RaiseException name="WebAPIException">
40401             <descriptive>
40402                 <description><p>
40403  with error type SecurityError, if the application does not have the privilege to call this method.
40404                 </p></description>
40405                 <description><p>
40406  with error type UnknownError in any other error case.
40407                 </p></description>
40408             </descriptive>
40409           </RaiseException>
40410         </Raises>
40411       </Operation>
40412     </Interface>
40413     <Interface name="NFCAdapter" id="::NFC::NFCAdapter">
40414       <webidl>  [NoInterfaceObject] interface NFCAdapter {
40415     readonly attribute boolean powered ;
40416
40417
40418     void setPowered(boolean state,
40419                     optional <ref>SuccessCallback</ref>? successCallback,
40420                     optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
40421
40422
40423     void setTagListener(<ref>NFCTagDetectCallback</ref> detectCallback,
40424                         optional <ref>NFCTagType</ref>[]? tagFilter) raises(<ref>WebAPIException</ref>);
40425
40426     void setPeerListener(<ref>NFCPeerDetectCallback</ref> detectCallback) raises(<ref>WebAPIException</ref>);
40427
40428     void unsetTagListener() raises(<ref>WebAPIException</ref>);
40429
40430     void unsetPeerListener() raises(<ref>WebAPIException</ref>);
40431
40432     <ref>NDEFMessage</ref>? getCachedMessage() raises(<ref>WebAPIException</ref>);
40433
40434   };</webidl>
40435       <descriptive>
40436           <brief>
40437  This interface provides access to control the adapter by offering methods to control local NFC behaviors, such as turning on/off an adapter.
40438           </brief>
40439           <version>
40440  1.0
40441           </version>
40442       </descriptive>
40443       <ExtendedAttributeList>
40444         <ExtendedAttribute name="NoInterfaceObject">
40445           <webidl>NoInterfaceObject</webidl>
40446         </ExtendedAttribute>
40447       </ExtendedAttributeList>
40448       <Attribute readonly="readonly" name="powered" id="::NFC::NFCAdapter::powered">
40449         <webidl>    readonly attribute boolean powered ;</webidl>
40450         <descriptive>
40451             <brief>
40452  The state of the NFC adapter.
40453             </brief>
40454             <version>
40455  1.0
40456             </version>
40457         </descriptive>
40458         <Type type="boolean"/>
40459       </Attribute>
40460       <Operation name="setPowered" id="::NFC::NFCAdapter::setPowered">
40461         <webidl>    void setPowered(boolean state,
40462                     optional <ref>SuccessCallback</ref>? successCallback,
40463                     optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
40464         <descriptive>
40465             <brief>
40466  Sets the power of an NFC adapter to either a on state or a off state.
40467             </brief>
40468            <description>
40469             <p>
40470 The ErrorCallback is launched with these error types:
40471             </p>
40472             <ul>
40473               <li>
40474  ServiceNotAvailableError - If the NFC device is busy.              </li>
40475               <li>
40476  UnknownError - If any other error occurs.              </li>
40477             </ul>
40478            </description>
40479             <version>
40480  1.0
40481             </version>
40482             <privilege>
40483  http://tizen.org/privilege/nfc.admin
40484             </privilege>
40485             <privilegelevel>
40486  public
40487             </privilegelevel>
40488             <Code> var gNfcAdapter;
40489  var onPowerOn = function(){ // Called when NFC adapter is powered on
40490    try {
40491      console.log(&quot;Power on succeed&quot;);
40492      // Implement NFC communication routines ...
40493      gNfcAdapter.setPowered(
40494          false, // Disable NFC adapter
40495          function () {console.log(&quot;Power off succeed&quot;); }, // Handle success
40496          function () {console.log(&quot;Power off failed&quot;); }); // Handle failure
40497    } catch (err) {
40498      console.log (err.name + &quot;: &quot; + err.message);
40499    }
40500  };
40501  try {
40502    gNfcAdapter = tizen.nfc.getDefaultAdapter();
40503    if (!gNfcAdapter.powered) {
40504      gNfcAdapter.setPowered(
40505          true, // Enable NFC adapter
40506          onPowerOn,                                     // Handle succes
40507          function () {console.log(&quot;Power on failed&quot;)}); // Handle failure
40508    } else {
40509      onPowerOn();
40510    }
40511  } catch (err) {
40512    console.log (err.name + &quot;: &quot; + err.message);
40513  }
40514  </Code>
40515         </descriptive>
40516         <Type type="void"/>
40517         <ArgumentList>
40518           <Argument name="state">
40519             <descriptive>
40520                 <description><p>
40521  The state of NFC adapter, <var>true</var> means on, <var>false</var> means off
40522                 </p></description>
40523             </descriptive>
40524             <Type type="boolean"/>
40525           </Argument>
40526           <Argument optional="optional" name="successCallback">
40527             <descriptive>
40528                 <description><p>
40529  The method to call when NFC adapter is 
40530 enabled or disabled successfully.
40531                 </p></description>
40532             </descriptive>
40533             <Type name="SuccessCallback" nullable="nullable"/>
40534           </Argument>
40535           <Argument optional="optional" name="errorCallback">
40536             <descriptive>
40537                 <description><p>
40538  The method to call when an error occurs.
40539                 </p></description>
40540             </descriptive>
40541             <Type name="ErrorCallback" nullable="nullable"/>
40542           </Argument>
40543         </ArgumentList>
40544         <Raises>
40545           <RaiseException name="WebAPIException">
40546             <descriptive>
40547                 <description><p>
40548  with error type TypeMismatchError, if the input parameter
40549 is not compatible with the expected type for that parameter.
40550                 </p></description>
40551                 <description><p>
40552  with error type SecurityError, if this functionality is not allowed
40553                 </p></description>
40554             </descriptive>
40555           </RaiseException>
40556         </Raises>
40557       </Operation>
40558       <Operation name="setTagListener" id="::NFC::NFCAdapter::setTagListener">
40559         <webidl>    void setTagListener(<ref>NFCTagDetectCallback</ref> detectCallback,
40560                         optional <ref>NFCTagType</ref>[]? tagFilter) raises(<ref>WebAPIException</ref>);</webidl>
40561         <descriptive>
40562             <brief>
40563  Registers a callback function to invoke when an NFC tag is detected.
40564             </brief>
40565            <description>
40566             <p>
40567 If the registration completes successfully, the detectCallback must be
40568 invoked when NFC tag is detected. 
40569             </p>
40570             <p>
40571 If no tagFilter is passed, it shall consider the default tagFilter, that is to set all tag types.
40572             </p>
40573            </description>
40574             <version>
40575  1.0
40576             </version>
40577             <privilege>
40578  http://tizen.org/privilege/nfc.tag
40579             </privilege>
40580             <privilegelevel>
40581  public
40582             </privilegelevel>
40583             <Code> var adapter = tizen.nfc.getDefaultAdapter();
40584  var onSuccessCB = {onattach : function(nfcTag) {
40585      console.log(&quot;NFC Tag's type is &quot; + nfcTag.type);
40586    }, ondetach : function() {
40587      console.log(&quot;NFC Tag is detached&quot;);
40588    }};
40589  adapter.setTagListener(onSuccessCB);
40590  </Code>
40591         </descriptive>
40592         <Type type="void"/>
40593         <ArgumentList>
40594           <Argument name="detectCallback">
40595             <descriptive>
40596                 <description><p>
40597  The method to invoke when a NFC tag is successfully detected.
40598                 </p></description>
40599             </descriptive>
40600             <Type name="NFCTagDetectCallback"/>
40601           </Argument>
40602           <Argument optional="optional" name="tagFilter">
40603             <descriptive>
40604                 <description><p>
40605  A filter to be used when specific NFC tag is detected.
40606                 </p></description>
40607             </descriptive>
40608             <Type type="array" nullable="nullable">
40609               <Type name="NFCTagType"/>
40610             </Type>
40611           </Argument>
40612         </ArgumentList>
40613         <Raises>
40614           <RaiseException name="WebAPIException">
40615             <descriptive>
40616                 <description><p>
40617  with error type TypeMismatchError, if the input parameter
40618 is not compatible with the expected type for that parameter.
40619                 </p></description>
40620                 <description><p>
40621  with error type SecurityError, if the application does not have the privilege to call this method.
40622                 </p></description>
40623                 <description><p>
40624  with error type ServiceNotAvailableError, if the NFC service is not available.
40625                 </p></description>
40626                 <description><p>
40627  with error type UnknownError in any other error case.
40628                 </p></description>
40629             </descriptive>
40630           </RaiseException>
40631         </Raises>
40632       </Operation>
40633       <Operation name="setPeerListener" id="::NFC::NFCAdapter::setPeerListener">
40634         <webidl>    void setPeerListener(<ref>NFCPeerDetectCallback</ref> detectCallback) raises(<ref>WebAPIException</ref>);</webidl>
40635         <descriptive>
40636             <brief>
40637  Registers a callback function to be invoked when NFC peer-to-peer target is detected.
40638             </brief>
40639            <description>
40640             <p>
40641 If the registration completes successfully, the detectCallback must be
40642 invoked when NFC peer-to-peer target is detected. 
40643             </p>
40644            </description>
40645             <version>
40646  1.0
40647             </version>
40648             <privilege>
40649  http://tizen.org/privilege/nfc.p2p
40650             </privilege>
40651             <privilegelevel>
40652  public
40653             </privilegelevel>
40654             <Code> var adapter = tizen.nfc.getDefaultAdapter();
40655  var onSuccessCB = {onattach : function(nfcPeer) {
40656      console.log(&quot;NFC Target is detected&quot;);
40657    }, ondetach : function() {
40658      console.log(&quot;NFC Target is detached&quot;);
40659    }};
40660  adapter.setPeerListener(onSuccessCB);
40661  </Code>
40662         </descriptive>
40663         <Type type="void"/>
40664         <ArgumentList>
40665           <Argument name="detectCallback">
40666             <descriptive>
40667                 <description><p>
40668  The method to invoke when a NFC peer-to-peer target is successfully detected.
40669                 </p></description>
40670             </descriptive>
40671             <Type name="NFCPeerDetectCallback"/>
40672           </Argument>
40673         </ArgumentList>
40674         <Raises>
40675           <RaiseException name="WebAPIException">
40676             <descriptive>
40677                 <description><p>
40678  with error type TypeMismatchError, if the input parameter
40679 is not compatible with the expected type for that parameter.
40680                 </p></description>
40681                 <description><p>
40682  with error type SecurityError, if the application does not have the privilege to call this method.
40683                 </p></description>
40684                 <description><p>
40685  with error type ServiceNotAvailableError, if the NFC service is not available.
40686                 </p></description>
40687                 <description><p>
40688  with error type UnknownError in any other error case.
40689                 </p></description>
40690             </descriptive>
40691           </RaiseException>
40692         </Raises>
40693       </Operation>
40694       <Operation name="unsetTagListener" id="::NFC::NFCAdapter::unsetTagListener">
40695         <webidl>    void unsetTagListener() raises(<ref>WebAPIException</ref>);</webidl>
40696         <descriptive>
40697             <brief>
40698  Unregisters the listener for detecting an NFC tag.
40699             </brief>
40700             <version>
40701  1.0
40702             </version>
40703             <privilege>
40704  http://tizen.org/privilege/nfc.tag
40705             </privilege>
40706             <privilegelevel>
40707  public
40708             </privilegelevel>
40709             <Code> var adapter = tizen.nfc.getDefaultAdapter();
40710
40711  // Receives NFCTag
40712  var onSuccessCB = {onattach : function(nfcTag) {
40713      console.log(&quot;NFC Tag's type is &quot; + nfcTag.type);
40714    }, ondetach : function() {
40715      console.log(&quot;NFC Tag is detached&quot;);
40716    }};
40717
40718  // Unregister the listener
40719  function unsetListen() {
40720    adapter.unsetTagListener();
40721  }
40722
40723  // Registers to be notified when NFC tag is detected.
40724  adapter.setTagListener(onSuccessCB)
40725  </Code>
40726         </descriptive>
40727         <Type type="void"/>
40728         <ArgumentList/>
40729         <Raises>
40730           <RaiseException name="WebAPIException">
40731             <descriptive>
40732                 <description><p>
40733  with error type SecurityError, if the application does not have the privilege to call this method.
40734                 </p></description>
40735                 <description><p>
40736  with error type ServiceNotAvailableError, if the NFC service is not available.
40737                 </p></description>
40738                 <description><p>
40739  with error type UnknownError in any other error case.
40740                 </p></description>
40741             </descriptive>
40742           </RaiseException>
40743         </Raises>
40744       </Operation>
40745       <Operation name="unsetPeerListener" id="::NFC::NFCAdapter::unsetPeerListener">
40746         <webidl>    void unsetPeerListener() raises(<ref>WebAPIException</ref>);</webidl>
40747         <descriptive>
40748             <brief>
40749  Unregisters the listener for detecting an NFC peer-to-peer target.
40750             </brief>
40751             <version>
40752  1.0
40753             </version>
40754             <privilege>
40755  http://tizen.org/privilege/nfc.p2p
40756             </privilege>
40757             <privilegelevel>
40758  public
40759             </privilegelevel>
40760             <Code> var adapter = tizen.nfc.getDefaultAdapter();
40761
40762  // Receives an NFC peer.
40763  var onSuccessCB = {onattach : function(nfcPeer) {
40764      console.log(&quot;NFC Target is detected&quot;);
40765    }, ondetach : function() {
40766      console.log(&quot;NFC Target is detached&quot;);
40767    }};
40768
40769  // Unregisters the listener.
40770  function unsetListen() {
40771    adapter.unsetPeerListener();
40772  }
40773
40774  // Registers to be notified when NFC peer-to-peer target is detected.
40775  adapter.setPeerListener(onSuccessCB)
40776  </Code>
40777         </descriptive>
40778         <Type type="void"/>
40779         <ArgumentList/>
40780         <Raises>
40781           <RaiseException name="WebAPIException">
40782             <descriptive>
40783                 <description><p>
40784  with error type SecurityError, if the application does not have the privilege to call this method.
40785                 </p></description>
40786                 <description><p>
40787  with error type ServiceNotAvailableError, if the NFC service is not available.
40788                 </p></description>
40789                 <description><p>
40790  with error type UnknownError in any other error case.
40791                 </p></description>
40792             </descriptive>
40793           </RaiseException>
40794         </Raises>
40795       </Operation>
40796       <Operation name="getCachedMessage" id="::NFC::NFCAdapter::getCachedMessage">
40797         <webidl>    <ref>NDEFMessage</ref>? getCachedMessage() raises(<ref>WebAPIException</ref>);</webidl>
40798         <descriptive>
40799             <brief>
40800  Gets the NDEF message cached when the tag is detected.
40801             </brief>
40802            <description>
40803             <p>
40804 If the operation completes successfully, the NDEF Message that was last read
40805 should be returned. 
40806             </p>
40807            </description>
40808             <version>
40809  1.0
40810             </version>
40811             <privilege>
40812  http://tizen.org/privilege/nfc.common
40813             </privilege>
40814             <privilegelevel>
40815  public
40816             </privilegelevel>
40817             <Code> // Gets the cached message
40818  var cachedMessage = tizen.nfc.getDefaultAdapter().getCachedMessage();
40819  </Code>
40820         </descriptive>
40821         <Type name="NDEFMessage" nullable="nullable">
40822           <descriptive>
40823               <description><p>
40824  The NDEF Message that was last read.
40825               </p></description>
40826           </descriptive>
40827         </Type>
40828         <ArgumentList/>
40829         <Raises>
40830           <RaiseException name="WebAPIException">
40831             <descriptive>
40832                 <description><p>
40833  with error type SecurityError, if the application does not have the privilege to call this method.
40834                 </p></description>
40835                 <description><p>
40836  with error type UnknownError in any other error case.
40837                 </p></description>
40838             </descriptive>
40839           </RaiseException>
40840         </Raises>
40841       </Operation>
40842     </Interface>
40843     <Interface name="NFCTag" id="::NFC::NFCTag">
40844       <webidl>  [NoInterfaceObject] interface NFCTag {
40845     readonly attribute <ref>NFCTagType</ref> type;
40846
40847     readonly attribute boolean isSupportedNDEF;
40848
40849     readonly attribute long ndefSize;
40850
40851     readonly attribute object properties;
40852
40853     readonly attribute boolean isConnected;
40854
40855
40856      void readNDEF(<ref>NDEFMessageReadCallback</ref> readCallback,
40857                   optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
40858
40859     void writeNDEF(<ref>NDEFMessage</ref> ndefMessage,
40860                    optional <ref>SuccessCallback</ref>? successCallback,
40861                    optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
40862
40863     void transceive(byte[] data,
40864                     <ref>ByteArraySuccessCallback</ref> dataCallback,
40865                     optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
40866   };</webidl>
40867       <descriptive>
40868           <brief>
40869  This interface provides accesses to the NFC tag.
40870           </brief>
40871           <version>
40872  1.0
40873           </version>
40874       </descriptive>
40875       <ExtendedAttributeList>
40876         <ExtendedAttribute name="NoInterfaceObject">
40877           <webidl>NoInterfaceObject</webidl>
40878         </ExtendedAttribute>
40879       </ExtendedAttributeList>
40880       <Attribute readonly="readonly" name="type" id="::NFC::NFCTag::type">
40881         <webidl>    readonly attribute <ref>NFCTagType</ref> type;</webidl>
40882         <descriptive>
40883             <brief>
40884  The type of the NFC tag.
40885             </brief>
40886             <version>
40887  1.0
40888             </version>
40889         </descriptive>
40890         <Type name="NFCTagType"/>
40891       </Attribute>
40892       <Attribute readonly="readonly" name="isSupportedNDEF" id="::NFC::NFCTag::isSupportedNDEF">
40893         <webidl>    readonly attribute boolean isSupportedNDEF;</webidl>
40894         <descriptive>
40895             <brief>
40896  An attribute to check if the NFC Tag supports NDEF format.
40897             </brief>
40898             <version>
40899  1.0
40900             </version>
40901         </descriptive>
40902         <Type type="boolean"/>
40903       </Attribute>
40904       <Attribute readonly="readonly" name="ndefSize" id="::NFC::NFCTag::ndefSize">
40905         <webidl>    readonly attribute long ndefSize;</webidl>
40906         <descriptive>
40907             <brief>
40908  The size of NDEF message stored in the tag.
40909             </brief>
40910             <version>
40911  1.0
40912             </version>
40913         </descriptive>
40914         <Type type="long"/>
40915       </Attribute>
40916       <Attribute readonly="readonly" name="properties" id="::NFC::NFCTag::properties">
40917         <webidl>    readonly attribute object properties;</webidl>
40918         <descriptive>
40919             <brief>
40920  The value is all tag information.
40921             </brief>
40922            <description>
40923             <p>
40924 It is pairs of key and value.
40925 The array's index is the pair's key and value is its value.
40926             </p>
40927            </description>
40928             <Code> var adapter = tizen.nfc.getDefaultAdapter();
40929  var onSuccessCB = {onattach : function(nfcTag) {
40930      console.log(&quot;NFC Tag's type is &quot; + nfcTag.type);
40931      for(var i in nfcTag.properties) {
40932        console.log(&quot;key:&quot; + i + &quot; value:&quot; + nfcTag.properties[i]);
40933      }
40934    }, ondetach : function() {
40935      console.log(&quot;NFC Tag is detached&quot;);
40936    }};
40937  adapter.setTagListener(onSuccessCB);
40938
40939  </Code>
40940             <version>
40941  1.0
40942             </version>
40943         </descriptive>
40944         <Type type="object"/>
40945       </Attribute>
40946       <Attribute readonly="readonly" name="isConnected" id="::NFC::NFCTag::isConnected">
40947         <webidl>    readonly attribute boolean isConnected;</webidl>
40948         <descriptive>
40949             <brief>
40950  The value is necessary to check if this tag is connected.
40951             </brief>
40952             <version>
40953  1.0
40954             </version>
40955         </descriptive>
40956         <Type type="boolean"/>
40957       </Attribute>
40958       <Operation name="readNDEF" id="::NFC::NFCTag::readNDEF">
40959         <webidl>     void readNDEF(<ref>NDEFMessageReadCallback</ref> readCallback,
40960                   optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
40961         <descriptive>
40962             <brief>
40963  Reads the NDEF data from the NFC tag.
40964             </brief>
40965            <description>
40966             <p>
40967 The ErrorCallback is launched with these error types:
40968             </p>
40969             <ul>
40970               <li>
40971  ServiceNotAvailableError - If the NFC service is not available.              </li>
40972               <li>
40973  UnknownError - If any other error occurs.              </li>
40974             </ul>
40975            </description>
40976             <version>
40977  1.0
40978             </version>
40979             <privilege>
40980  http://tizen.org/privilege/nfc.tag
40981             </privilege>
40982             <privilegelevel>
40983  public
40984             </privilegelevel>
40985         </descriptive>
40986         <Type type="void"/>
40987         <ArgumentList>
40988           <Argument name="readCallback">
40989             <descriptive>
40990                 <description><p>
40991  The method invoked in case of successfully reading the NDEF Data.
40992                 </p></description>
40993             </descriptive>
40994             <Type name="NDEFMessageReadCallback"/>
40995           </Argument>
40996           <Argument optional="optional" name="errorCallback">
40997             <descriptive>
40998                 <description><p>
40999  The method invoked in case of any error during reading the NDEF Data.
41000                 </p></description>
41001             </descriptive>
41002             <Type name="ErrorCallback" nullable="nullable"/>
41003           </Argument>
41004         </ArgumentList>
41005         <Raises>
41006           <RaiseException name="WebAPIException">
41007             <descriptive>
41008                 <description><p>
41009  with error type TypeMismatchError, if the input parameter
41010 is not compatible with the expected type for that parameter.
41011                 </p></description>
41012                 <description><p>
41013  with error type SecurityError, if the application does not have the privilege to call this method.
41014                 </p></description>
41015                 <description><p>
41016  with error type NotSupportedError, if current Tag doesn't support NDEF format.
41017                 </p></description>
41018             </descriptive>
41019           </RaiseException>
41020         </Raises>
41021       </Operation>
41022       <Operation name="writeNDEF" id="::NFC::NFCTag::writeNDEF">
41023         <webidl>    void writeNDEF(<ref>NDEFMessage</ref> ndefMessage,
41024                    optional <ref>SuccessCallback</ref>? successCallback,
41025                    optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
41026         <descriptive>
41027             <brief>
41028  Writes the NDEF data to the NFC tag.
41029             </brief>
41030            <description>
41031             <p>
41032 The ErrorCallback is launched with these error types:
41033             </p>
41034             <ul>
41035               <li>
41036  InvalidValuesError: If any of the input parameters contain an invalid value.              </li>
41037               <li>
41038  ServiceNotAvailableError: If the NFC service is not available.               </li>
41039               <li>
41040  UnknownError: In any other error case.               </li>
41041             </ul>
41042            </description>
41043             <version>
41044  1.0
41045             </version>
41046             <privilege>
41047  http://tizen.org/privilege/nfc.tag
41048             </privilege>
41049             <privilegelevel>
41050  public
41051             </privilegelevel>
41052         </descriptive>
41053         <Type type="void"/>
41054         <ArgumentList>
41055           <Argument name="ndefMessage">
41056             <descriptive>
41057                 <description><p>
41058  The NDEF message to write to NFC tag.
41059                 </p></description>
41060             </descriptive>
41061             <Type name="NDEFMessage"/>
41062           </Argument>
41063           <Argument optional="optional" name="successCallback">
41064             <descriptive>
41065                 <description><p>
41066  The method invoked in case of successfully writing the NDEF Data.
41067                 </p></description>
41068             </descriptive>
41069             <Type name="SuccessCallback" nullable="nullable"/>
41070           </Argument>
41071           <Argument optional="optional" name="errorCallback">
41072             <descriptive>
41073                 <description><p>
41074  The method invoked in case of any error during writing the NDEF Data.
41075                 </p></description>
41076             </descriptive>
41077             <Type name="ErrorCallback" nullable="nullable"/>
41078           </Argument>
41079         </ArgumentList>
41080         <Raises>
41081           <RaiseException name="WebAPIException">
41082             <descriptive>
41083                 <description><p>
41084  with error type TypeMismatchError, if the input parameter
41085 is not compatible with the expected type for that parameter.
41086                 </p></description>
41087                 <description><p>
41088  with error type SecurityError, if the application does not have the privilege to call this method.
41089                 </p></description>
41090                 <description><p>
41091  with error type NotSupportedError, if current Tag doesn't support NDEF format.
41092                 </p></description>
41093             </descriptive>
41094           </RaiseException>
41095         </Raises>
41096       </Operation>
41097       <Operation name="transceive" id="::NFC::NFCTag::transceive">
41098         <webidl>    void transceive(byte[] data,
41099                     <ref>ByteArraySuccessCallback</ref> dataCallback,
41100                     optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
41101         <descriptive>
41102             <brief>
41103  Access the raw format card. The transceive function is the only way to access the raw format card (not formatted).
41104 Each tag type requires its own command to access tags.
41105 This API provides low level access of tag operation. (Note that you must know each tag technology.)
41106             </brief>
41107            <description>
41108             <p>
41109 The ErrorCallback is launched with these error types:
41110             </p>
41111             <ul>
41112               <li>
41113  InvalidValuesError - If any of the input parameters contain an invalid value.              </li>
41114               <li>
41115  ServiceNotAvailableError - If the NFC service is not available.              </li>
41116               <li>
41117  UnknownError - If any other error occurs.              </li>
41118             </ul>
41119            </description>
41120             <version>
41121  1.0
41122             </version>
41123             <privilege>
41124  http://tizen.org/privilege/nfc.tag
41125             </privilege>
41126             <privilegelevel>
41127  public
41128             </privilegelevel>
41129         </descriptive>
41130         <Type type="void"/>
41131         <ArgumentList>
41132           <Argument name="data">
41133             <descriptive>
41134                 <description><p>
41135  The raw data to transceive with the NFC tag.
41136                 </p></description>
41137             </descriptive>
41138             <Type type="array">
41139               <Type type="byte"/>
41140             </Type>
41141           </Argument>
41142           <Argument name="dataCallback">
41143             <descriptive>
41144                 <description><p>
41145  Invoked in case of successfully transceiving the raw data.
41146                 </p></description>
41147             </descriptive>
41148             <Type name="ByteArraySuccessCallback"/>
41149           </Argument>
41150           <Argument optional="optional" name="errorCallback">
41151             <descriptive>
41152                 <description><p>
41153  Invoked in case of any error during transceiving the NDEF Data.
41154                 </p></description>
41155             </descriptive>
41156             <Type name="ErrorCallback" nullable="nullable"/>
41157           </Argument>
41158         </ArgumentList>
41159         <Raises>
41160           <RaiseException name="WebAPIException">
41161             <descriptive>
41162                 <description><p>
41163  with error type TypeMismatchError, if the input parameter
41164 is not compatible with the expected type for that parameter.
41165                 </p></description>
41166                 <description><p>
41167  with error type SecurityError, if the application does not have the privilege to call this method.
41168                 </p></description>
41169             </descriptive>
41170           </RaiseException>
41171         </Raises>
41172       </Operation>
41173     </Interface>
41174     <Interface name="NFCPeer" id="::NFC::NFCPeer">
41175       <webidl>  [NoInterfaceObject] interface NFCPeer {
41176     readonly attribute boolean isConnected;
41177     
41178     void setReceiveNDEFListener(<ref>NDEFMessageReadCallback</ref> successCallback) raises(<ref>WebAPIException</ref>);
41179
41180     void unsetReceiveNDEFListener() raises(<ref>WebAPIException</ref>);
41181
41182     void sendNDEF(<ref>NDEFMessage</ref> ndefMessage,
41183                   optional <ref>SuccessCallback</ref>? successCallback,
41184                   optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
41185
41186   };</webidl>
41187       <descriptive>
41188           <brief>
41189  An interface that provides access to the NFC peer-to-peer target.
41190           </brief>
41191           <version>
41192  1.0
41193           </version>
41194       </descriptive>
41195       <ExtendedAttributeList>
41196         <ExtendedAttribute name="NoInterfaceObject">
41197           <webidl>NoInterfaceObject</webidl>
41198         </ExtendedAttribute>
41199       </ExtendedAttributeList>
41200       <Attribute readonly="readonly" name="isConnected" id="::NFC::NFCPeer::isConnected">
41201         <webidl>    readonly attribute boolean isConnected;</webidl>
41202         <descriptive>
41203             <brief>
41204  The value is necessary to check if this NFC peer-to-peer target is connected.
41205             </brief>
41206             <version>
41207  1.0
41208             </version>
41209         </descriptive>
41210         <Type type="boolean"/>
41211       </Attribute>
41212       <Operation name="setReceiveNDEFListener" id="::NFC::NFCPeer::setReceiveNDEFListener">
41213         <webidl>    void setReceiveNDEFListener(<ref>NDEFMessageReadCallback</ref> successCallback) raises(<ref>WebAPIException</ref>);</webidl>
41214         <descriptive>
41215             <brief>
41216  Registers a callback function to be invoked when an NDEF message is received from the connected NFC peer-to-peer target.
41217             </brief>
41218             <version>
41219  1.0
41220             </version>
41221             <privilege>
41222  http://tizen.org/privilege/nfc.p2p
41223             </privilege>
41224             <privilegelevel>
41225  public
41226             </privilegelevel>
41227             <Code> var adapter = tizen.nfc.getDefaultAdapter();
41228
41229  // Receives NFCPeer
41230  var onSuccessCB = {onattach : function(nfcPeer) {
41231      console.log(&quot;NFC Target is detected&quot;);
41232      nfcPeer.setReceiveNDEFListener(
41233          function(message){
41234             console.log(&quot;Receive message&quot;);
41235          });
41236    }, ondetach : function() {
41237      console.log(&quot;NFC Target is detached&quot;);
41238    }};
41239
41240  adapter.setPeerListener(onSuccessCB);
41241  </Code>
41242         </descriptive>
41243         <Type type="void"/>
41244         <ArgumentList>
41245           <Argument name="successCallback">
41246             <descriptive>
41247                 <description><p>
41248  Invoked in case of successful receiving the message.
41249                 </p></description>
41250             </descriptive>
41251             <Type name="NDEFMessageReadCallback"/>
41252           </Argument>
41253         </ArgumentList>
41254         <Raises>
41255           <RaiseException name="WebAPIException">
41256             <descriptive>
41257                 <description><p>
41258  with error type TypeMismatchError, if the input parameter
41259 is not compatible with the expected type for that parameter.
41260                 </p></description>
41261                 <description><p>
41262  with error type SecurityError, if the application does not have the privilege to call this method.
41263                 </p></description>
41264                 <description><p>
41265  with error type ServiceNotAvailableError, if the NFC service is not available.
41266                 </p></description>
41267                 <description><p>
41268  with error type UnknownError in any other error case.
41269                 </p></description>
41270             </descriptive>
41271           </RaiseException>
41272         </Raises>
41273       </Operation>
41274       <Operation name="unsetReceiveNDEFListener" id="::NFC::NFCPeer::unsetReceiveNDEFListener">
41275         <webidl>    void unsetReceiveNDEFListener() raises(<ref>WebAPIException</ref>);</webidl>
41276         <descriptive>
41277             <brief>
41278  Unregisters the listener for receiving NDEF messages from the NFC peer-to-peer target connected.
41279             </brief>
41280             <version>
41281  1.0
41282             </version>
41283             <privilege>
41284  http://tizen.org/privilege/nfc.p2p
41285             </privilege>
41286             <privilegelevel>
41287  public
41288             </privilegelevel>
41289             <Code> var adapter = tizen.nfc.getDefaultAdapter();
41290  var onSuccessCB = {onattach : function(nfcPeer) {
41291      console.log(&quot;NFC Target is detected&quot;);
41292      nfcPeer.setReceiveNDEFListener(
41293          function(message){
41294             console.log(&quot;Receive message&quot;);
41295             nfcPeer.unsetReceiveNDEFListener();
41296          });
41297    }, ondetach : function() {
41298      console.log(&quot;NFC Target is detached&quot;);
41299    }};
41300  }
41301
41302  adapter.setPeerListener(onSuccessCB);
41303  </Code>
41304         </descriptive>
41305         <Type type="void"/>
41306         <ArgumentList/>
41307         <Raises>
41308           <RaiseException name="WebAPIException">
41309             <descriptive>
41310                 <description><p>
41311  with error type SecurityError, if the application does not have the privilege to call this method.
41312                 </p></description>
41313                 <description><p>
41314  with error type ServiceNotAvailableError, if the NFC service is not available.
41315                 </p></description>
41316                 <description><p>
41317  with error type UnknownError in any other error case.
41318                 </p></description>
41319             </descriptive>
41320           </RaiseException>
41321         </Raises>
41322       </Operation>
41323       <Operation name="sendNDEF" id="::NFC::NFCPeer::sendNDEF">
41324         <webidl>    void sendNDEF(<ref>NDEFMessage</ref> ndefMessage,
41325                   optional <ref>SuccessCallback</ref>? successCallback,
41326                   optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
41327         <descriptive>
41328             <brief>
41329  Sends data to the NFC peer-to-peer target.
41330             </brief>
41331            <description>
41332             <p>
41333 The ErrorCallback is launched with these error types:
41334             </p>
41335             <ul>
41336               <li>
41337  InvalidValuesError: If any of the input parameters contain an invalid value.              </li>
41338               <li>
41339  ServiceNotAvailableError: If the NFC service is not available.               </li>
41340               <li>
41341  UnknownError: In any other error case.               </li>
41342             </ul>
41343            </description>
41344             <version>
41345  1.0
41346             </version>
41347             <privilege>
41348  http://tizen.org/privilege/nfc.p2p
41349             </privilege>
41350             <privilegelevel>
41351  public
41352             </privilegelevel>
41353         </descriptive>
41354         <Type type="void"/>
41355         <ArgumentList>
41356           <Argument name="ndefMessage">
41357             <descriptive>
41358                 <description><p>
41359  The NDEF message to send to NFC peer-to-peer target.
41360                 </p></description>
41361             </descriptive>
41362             <Type name="NDEFMessage"/>
41363           </Argument>
41364           <Argument optional="optional" name="successCallback">
41365             <descriptive>
41366                 <description><p>
41367  Invoked in case of successfully sending data to NFC peer-to-peer target.
41368                 </p></description>
41369             </descriptive>
41370             <Type name="SuccessCallback" nullable="nullable"/>
41371           </Argument>
41372           <Argument optional="optional" name="errorCallback">
41373             <descriptive>
41374                 <description><p>
41375  Invoked in case of any error during sending.
41376                 </p></description>
41377             </descriptive>
41378             <Type name="ErrorCallback" nullable="nullable"/>
41379           </Argument>
41380         </ArgumentList>
41381         <Raises>
41382           <RaiseException name="WebAPIException">
41383             <descriptive>
41384                 <description><p>
41385  with error type TypeMismatchError, if the input parameter
41386 is not compatible with the expected type for that parameter.
41387                 </p></description>
41388                 <description><p>
41389  with error type SecurityError, if the application does not have the privilege to call this method.
41390                 </p></description>
41391             </descriptive>
41392           </RaiseException>
41393         </Raises>
41394       </Operation>
41395     </Interface>
41396     <Interface name="NDEFMessage" id="::NFC::NDEFMessage">
41397       <webidl>  [Constructor(),
41398    Constructor(<ref>NDEFRecord</ref>[] ndefRecords),
41399    Constructor(byte[] rawData)]
41400   interface NDEFMessage {
41401     readonly attribute long recordCount;
41402     
41403     attribute <ref>NDEFRecord</ref>[] records;
41404
41405     byte[] toByte() raises(<ref>WebAPIException</ref>);
41406   };</webidl>
41407       <descriptive>
41408           <brief>
41409  The NDEFMessage interface. An NDEFmessage is composed of multiple NDEFRecords.
41410 The NDEFMessage must have at least one NDEFRecord.
41411           </brief>
41412           <version>
41413  1.0
41414           </version>
41415       </descriptive>
41416       <ExtendedAttributeList>
41417         <ExtendedAttribute name="Constructor">
41418           <webidl>Constructor()</webidl>
41419           <ArgumentList/>
41420         </ExtendedAttribute>
41421         <ExtendedAttribute name="Constructor">
41422           <webidl>   Constructor(<ref>NDEFRecord</ref>[] ndefRecords)</webidl>
41423           <ArgumentList>
41424             <Argument name="ndefRecords">
41425               <Type type="array">
41426                 <Type name="NDEFRecord"/>
41427               </Type>
41428             </Argument>
41429           </ArgumentList>
41430         </ExtendedAttribute>
41431         <ExtendedAttribute name="Constructor">
41432           <webidl>   Constructor(byte[] rawData)</webidl>
41433           <ArgumentList>
41434             <Argument name="rawData">
41435               <Type type="array">
41436                 <Type type="byte"/>
41437               </Type>
41438             </Argument>
41439           </ArgumentList>
41440         </ExtendedAttribute>
41441       </ExtendedAttributeList>
41442       <Attribute readonly="readonly" name="recordCount" id="::NFC::NDEFMessage::recordCount">
41443         <webidl>    readonly attribute long recordCount;</webidl>
41444         <descriptive>
41445             <brief>
41446  The number of records in the NDEFMessage.
41447             </brief>
41448             <version>
41449  1.0
41450             </version>
41451         </descriptive>
41452         <Type type="long"/>
41453       </Attribute>
41454       <Attribute name="records" id="::NFC::NDEFMessage::records">
41455         <webidl>    attribute <ref>NDEFRecord</ref>[] records;</webidl>
41456         <descriptive>
41457             <brief>
41458  The array of NDEFRecord objects in the NDEFMessage.
41459             </brief>
41460             <version>
41461  1.0
41462             </version>
41463         </descriptive>
41464         <Type type="array">
41465           <Type name="NDEFRecord"/>
41466         </Type>
41467       </Attribute>
41468       <Operation name="toByte" id="::NFC::NDEFMessage::toByte">
41469         <webidl>    byte[] toByte() raises(<ref>WebAPIException</ref>);</webidl>
41470         <descriptive>
41471             <brief>
41472  Gets the serial byte array of the NDEF message.
41473             </brief>
41474            <description>
41475             <p>
41476 If the operation completes successfully, it returns the serial byte array of the NDEF message.
41477             </p>
41478            </description>
41479             <version>
41480  1.0
41481             </version>
41482             <Code> // Gets the cached message.
41483  var cachedMessage = tizen.nfc.getDefaultAdapter().getCachedMessage();
41484  var raw = cachedMessage.toByte();
41485  </Code>
41486         </descriptive>
41487         <Type type="array">
41488           <descriptive>
41489               <description><p>
41490  byte[] The raw data in the NDEFMessage.
41491               </p></description>
41492           </descriptive>
41493           <Type type="byte"/>
41494         </Type>
41495         <ArgumentList/>
41496         <Raises>
41497           <RaiseException name="WebAPIException">
41498             <descriptive>
41499                 <description><p>
41500  with error type TypeMismatchError, if the records whose type is not NDEFRecord are included in the NDEFMessage.
41501                 </p></description>
41502                 <description><p>
41503  with error type UnknownError in any other error case.
41504                 </p></description>
41505             </descriptive>
41506           </RaiseException>
41507         </Raises>
41508       </Operation>
41509     </Interface>
41510     <Interface name="NDEFRecord" id="::NFC::NDEFRecord">
41511       <webidl>  [Constructor(short tnf, byte[] type, byte[] payload, optional byte[]? id),
41512    Constructor(byte[] raw_data)]
41513   interface NDEFRecord {
41514     readonly attribute short tnf;
41515
41516     readonly attribute byte[] type;
41517
41518     readonly attribute byte[] id;
41519     
41520     readonly attribute byte[] payload;
41521   };</webidl>
41522       <descriptive>
41523           <brief>
41524  The NDEFRecord interface.
41525           </brief>
41526           <version>
41527  1.0
41528           </version>
41529       </descriptive>
41530       <ExtendedAttributeList>
41531         <ExtendedAttribute name="Constructor">
41532           <webidl>Constructor(short tnf, byte[] type, byte[] payload, optional byte[]? id)</webidl>
41533           <ArgumentList>
41534             <Argument name="tnf">
41535               <Type type="short"/>
41536             </Argument>
41537             <Argument name="type">
41538               <Type type="array">
41539                 <Type type="byte"/>
41540               </Type>
41541             </Argument>
41542             <Argument name="payload">
41543               <Type type="array">
41544                 <Type type="byte"/>
41545               </Type>
41546             </Argument>
41547             <Argument optional="optional" name="id">
41548               <Type type="array" nullable="nullable">
41549                 <Type type="byte"/>
41550               </Type>
41551             </Argument>
41552           </ArgumentList>
41553         </ExtendedAttribute>
41554         <ExtendedAttribute name="Constructor">
41555           <webidl>   Constructor(byte[] raw_data)</webidl>
41556           <ArgumentList>
41557             <Argument name="raw_data">
41558               <Type type="array">
41559                 <Type type="byte"/>
41560               </Type>
41561             </Argument>
41562           </ArgumentList>
41563         </ExtendedAttribute>
41564       </ExtendedAttributeList>
41565       <Attribute readonly="readonly" name="tnf" id="::NFC::NDEFRecord::tnf">
41566         <webidl>    readonly attribute short tnf;</webidl>
41567         <descriptive>
41568             <brief>
41569  The value of the record type (TNF value).
41570             </brief>
41571            <description>
41572             <p>
41573 At least the following values must be supported:
41574             </p>
41575             <ul>
41576               <li>
41577 NFC_RECORD_TNF_EMPTY - The record type is empty              </li>
41578               <li>
41579 NFC_RECORD_TNF_WELL_KNOWN - Record Type Definition (RTD) format [NFC RTD]              </li>
41580               <li>
41581 NFC_RECORD_TNF_MIME_MEDIA - MIME media types in RFC 2046 [RFC 2046]              </li>
41582               <li>
41583 NFC_RECORD_TNF_URI - Absolute URI as defined in RFC 3986 [RFC 3986]              </li>
41584               <li>
41585 NFC_RECORD_TNF_EXTERNAL_RTD - NFC forum external type [NFC RTD]              </li>
41586               <li>
41587 NFC_RECORD_TNF_UNKNOWN - The payload type is unknown              </li>
41588               <li>
41589 NFC_RECORD_TNF_UNCHANGED - It means the payload is an intermediate or final chunk of a chunked NDEF record              </li>
41590             </ul>
41591            </description>
41592             <version>
41593  1.0
41594             </version>
41595         </descriptive>
41596         <Type type="short"/>
41597       </Attribute>
41598       <Attribute readonly="readonly" name="type" id="::NFC::NDEFRecord::type">
41599         <webidl>    readonly attribute byte[] type;</webidl>
41600         <descriptive>
41601             <brief>
41602  The specified type in byte array.
41603             </brief>
41604            <description>
41605             <p>
41606 The byte array contains <var>0</var> to <var>255</var> bytes.
41607             </p>
41608            </description>
41609             <version>
41610  1.0
41611             </version>
41612         </descriptive>
41613         <Type type="array">
41614           <Type type="byte"/>
41615         </Type>
41616       </Attribute>
41617       <Attribute readonly="readonly" name="id" id="::NFC::NDEFRecord::id">
41618         <webidl>    readonly attribute byte[] id;</webidl>
41619         <descriptive>
41620             <brief>
41621  The record ID.
41622             </brief>
41623            <description>
41624             <p>
41625 The byte array contains <var>0</var> to <var>255</var> bytes.
41626             </p>
41627             <p>
41628 By default, this attribute is set to an empty array.
41629             </p>
41630            </description>
41631             <version>
41632  1.0
41633             </version>
41634         </descriptive>
41635         <Type type="array">
41636           <Type type="byte"/>
41637         </Type>
41638       </Attribute>
41639       <Attribute readonly="readonly" name="payload" id="::NFC::NDEFRecord::payload">
41640         <webidl>    readonly attribute byte[] payload;</webidl>
41641         <descriptive>
41642             <brief>
41643  The record payload.
41644             </brief>
41645            <description>
41646             <p>
41647 The byte array contains <var>0</var> to <var>(2 ** 32 - 1)</var> bytes.
41648             </p>
41649            </description>
41650             <version>
41651  1.0
41652             </version>
41653             <Code> // Creates a new NDEF record.
41654  var newRecord = new tizen.NDEFRecordURI(&quot;https://www.tizen.org/&quot;);
41655  var payload = newRecord.payload;
41656  </Code>
41657         </descriptive>
41658         <Type type="array">
41659           <Type type="byte"/>
41660         </Type>
41661       </Attribute>
41662     </Interface>
41663     <Interface name="NDEFRecordText" id="::NFC::NDEFRecordText">
41664       <webidl>  [Constructor(DOMString text, DOMString languageCode, optional DOMString? encoding)]
41665   interface NDEFRecordText : <ref>NDEFRecord</ref> {
41666     readonly attribute DOMString text;
41667     
41668     readonly attribute DOMString languageCode;
41669     
41670     readonly attribute <ref>NDEFRecordTextEncoding</ref> encoding;
41671   };</webidl>
41672       <descriptive>
41673           <brief>
41674  The NDEFRecord that has the text type payload.
41675           </brief>
41676           <version>
41677  1.0
41678           </version>
41679       </descriptive>
41680       <ExtendedAttributeList>
41681         <ExtendedAttribute name="Constructor">
41682           <webidl>Constructor(DOMString text, DOMString languageCode, optional DOMString? encoding)</webidl>
41683           <ArgumentList>
41684             <Argument name="text">
41685               <Type type="DOMString"/>
41686             </Argument>
41687             <Argument name="languageCode">
41688               <Type type="DOMString"/>
41689             </Argument>
41690             <Argument optional="optional" name="encoding">
41691               <Type type="DOMString" nullable="nullable"/>
41692             </Argument>
41693           </ArgumentList>
41694         </ExtendedAttribute>
41695       </ExtendedAttributeList>
41696       <InterfaceInheritance>
41697         <Name name="NDEFRecord"/>
41698       </InterfaceInheritance>
41699       <Attribute readonly="readonly" name="text" id="::NFC::NDEFRecordText::text">
41700         <webidl>    readonly attribute DOMString text;</webidl>
41701         <descriptive>
41702             <brief>
41703  The encoded text.
41704             </brief>
41705             <version>
41706  1.0
41707             </version>
41708         </descriptive>
41709         <Type type="DOMString"/>
41710       </Attribute>
41711       <Attribute readonly="readonly" name="languageCode" id="::NFC::NDEFRecordText::languageCode">
41712         <webidl>    readonly attribute DOMString languageCode;</webidl>
41713         <descriptive>
41714             <brief>
41715  The language code string value, followed by IANA[RFC 3066] (for example, en-US, ko-KR).
41716             </brief>
41717             <version>
41718  1.0
41719             </version>
41720         </descriptive>
41721         <Type type="DOMString"/>
41722       </Attribute>
41723       <Attribute readonly="readonly" name="encoding" id="::NFC::NDEFRecordText::encoding">
41724         <webidl>    readonly attribute <ref>NDEFRecordTextEncoding</ref> encoding;</webidl>
41725         <descriptive>
41726             <brief>
41727  The encoding type. By default, this attribute is set to UTF8.
41728             </brief>
41729             <version>
41730  1.0
41731             </version>
41732         </descriptive>
41733         <Type name="NDEFRecordTextEncoding"/>
41734       </Attribute>
41735     </Interface>
41736     <Interface name="NDEFRecordURI" id="::NFC::NDEFRecordURI">
41737       <webidl>  [Constructor(DOMString uri)]
41738   interface NDEFRecordURI : <ref>NDEFRecord</ref> {
41739     readonly attribute DOMString uri;
41740   };</webidl>
41741       <descriptive>
41742           <brief>
41743  The NDEFRecord that has URI type payload.
41744           </brief>
41745           <version>
41746  1.0
41747           </version>
41748       </descriptive>
41749       <ExtendedAttributeList>
41750         <ExtendedAttribute name="Constructor">
41751           <webidl>Constructor(DOMString uri)</webidl>
41752           <ArgumentList>
41753             <Argument name="uri">
41754               <Type type="DOMString"/>
41755             </Argument>
41756           </ArgumentList>
41757         </ExtendedAttribute>
41758       </ExtendedAttributeList>
41759       <InterfaceInheritance>
41760         <Name name="NDEFRecord"/>
41761       </InterfaceInheritance>
41762       <Attribute readonly="readonly" name="uri" id="::NFC::NDEFRecordURI::uri">
41763         <webidl>    readonly attribute DOMString uri;</webidl>
41764         <descriptive>
41765             <brief>
41766  The URI string that is stored in the payload.
41767             </brief>
41768             <version>
41769  1.0
41770             </version>
41771         </descriptive>
41772         <Type type="DOMString"/>
41773       </Attribute>
41774     </Interface>
41775     <Interface name="NDEFRecordMedia" id="::NFC::NDEFRecordMedia">
41776       <webidl>  [Constructor(DOMString mimeType, byte[] data)]
41777   interface NDEFRecordMedia : <ref>NDEFRecord</ref> {
41778     readonly attribute DOMString mimeType;
41779   };</webidl>
41780       <descriptive>
41781           <brief>
41782  The NDEFRecord that has mime type payload.
41783           </brief>
41784           <version>
41785  1.0
41786           </version>
41787       </descriptive>
41788       <ExtendedAttributeList>
41789         <ExtendedAttribute name="Constructor">
41790           <webidl>Constructor(DOMString mimeType, byte[] data)</webidl>
41791           <descriptive>
41792              <description>
41793               <ul>
41794                 <li>
41795 <b>data</b> : Mime type payload. The byte array contains <var>0</var> to <var>(2 ** 32 - 1)</var> bytes.                </li>
41796               </ul>
41797              </description>
41798           </descriptive>
41799           <ArgumentList>
41800             <Argument name="mimeType">
41801               <Type type="DOMString"/>
41802             </Argument>
41803             <Argument name="data">
41804               <Type type="array">
41805                 <Type type="byte"/>
41806               </Type>
41807             </Argument>
41808           </ArgumentList>
41809         </ExtendedAttribute>
41810       </ExtendedAttributeList>
41811       <InterfaceInheritance>
41812         <Name name="NDEFRecord"/>
41813       </InterfaceInheritance>
41814       <Attribute readonly="readonly" name="mimeType" id="::NFC::NDEFRecordMedia::mimeType">
41815         <webidl>    readonly attribute DOMString mimeType;</webidl>
41816         <descriptive>
41817             <brief>
41818  The mime type [RFC 2046] (for example, text/plain, image/jpeg ).
41819             </brief>
41820             <version>
41821  1.0
41822             </version>
41823         </descriptive>
41824         <Type type="DOMString"/>
41825       </Attribute>
41826     </Interface>
41827     <Interface name="NFCTagDetectCallback" id="::NFC::NFCTagDetectCallback">
41828       <webidl>  [Callback, NoInterfaceObject] interface NFCTagDetectCallback {
41829     void onattach(<ref>NFCTag</ref> nfcTag);
41830     void ondetach();
41831   };</webidl>
41832       <descriptive>
41833           <brief>
41834  The success callback to be invoked when an NFC tag is detected or lost.
41835           </brief>
41836          <description>
41837           <p>
41838 This callback interface specifies two methods:
41839           </p>
41840           <ul>
41841             <li>
41842  onattach: invoked when an NFC tag is detected            </li>
41843             <li>
41844  ondetach: invoked when the NFC tag is lost            </li>
41845           </ul>
41846           <p>
41847 It is used in NFCAdapter.setTagListener().
41848           </p>
41849          </description>
41850           <version>
41851  1.0
41852           </version>
41853       </descriptive>
41854       <ExtendedAttributeList>
41855         <ExtendedAttribute name="Callback">
41856           <webidl>Callback</webidl>
41857         </ExtendedAttribute>
41858         <ExtendedAttribute name="NoInterfaceObject">
41859           <webidl> NoInterfaceObject</webidl>
41860         </ExtendedAttribute>
41861       </ExtendedAttributeList>
41862       <Operation name="onattach" id="::NFC::NFCTagDetectCallback::onattach">
41863         <webidl>    void onattach(<ref>NFCTag</ref> nfcTag);</webidl>
41864         <descriptive>
41865             <brief>
41866  The method invoked when a tag is attached.
41867             </brief>
41868             <version>
41869  1.0
41870             </version>
41871         </descriptive>
41872         <Type type="void"/>
41873         <ArgumentList>
41874           <Argument name="nfcTag">
41875             <descriptive>
41876                 <description><p>
41877  The attached NFC tag.
41878                 </p></description>
41879             </descriptive>
41880             <Type name="NFCTag"/>
41881           </Argument>
41882         </ArgumentList>
41883       </Operation>
41884       <Operation name="ondetach" id="::NFC::NFCTagDetectCallback::ondetach">
41885         <webidl>    void ondetach();</webidl>
41886         <descriptive>
41887             <brief>
41888  The method invoked when the connected tag is detached.
41889             </brief>
41890             <version>
41891  1.0
41892             </version>
41893         </descriptive>
41894         <Type type="void"/>
41895         <ArgumentList/>
41896       </Operation>
41897     </Interface>
41898     <Interface name="NFCPeerDetectCallback" id="::NFC::NFCPeerDetectCallback">
41899       <webidl>  [Callback, NoInterfaceObject] interface NFCPeerDetectCallback {
41900     void onattach(<ref>NFCPeer</ref> nfcPeer);
41901     void ondetach();
41902   };</webidl>
41903       <descriptive>
41904           <brief>
41905  The success callback to be invoked when an NFC peer-to-peer target is detected or lost.
41906           </brief>
41907          <description>
41908           <p>
41909 This callback interface specifies two methods:
41910           </p>
41911           <ul>
41912             <li>
41913  onattach: invoked when an NFC peer-to-peer target is detected            </li>
41914             <li>
41915  ondetach: invoked when the NFC peer-to-peer target is lost            </li>
41916           </ul>
41917           <p>
41918 It is used in NFCAdapter.setPeerListener().
41919           </p>
41920          </description>
41921           <version>
41922  1.0
41923           </version>
41924       </descriptive>
41925       <ExtendedAttributeList>
41926         <ExtendedAttribute name="Callback">
41927           <webidl>Callback</webidl>
41928         </ExtendedAttribute>
41929         <ExtendedAttribute name="NoInterfaceObject">
41930           <webidl> NoInterfaceObject</webidl>
41931         </ExtendedAttribute>
41932       </ExtendedAttributeList>
41933       <Operation name="onattach" id="::NFC::NFCPeerDetectCallback::onattach">
41934         <webidl>    void onattach(<ref>NFCPeer</ref> nfcPeer);</webidl>
41935         <descriptive>
41936             <brief>
41937  The method invoked when the NFC peer-to-peer target is attached.
41938             </brief>
41939             <version>
41940  1.0
41941             </version>
41942         </descriptive>
41943         <Type type="void"/>
41944         <ArgumentList>
41945           <Argument name="nfcPeer">
41946             <descriptive>
41947                 <description><p>
41948  The attached NFC peer-to-peer target.
41949                 </p></description>
41950             </descriptive>
41951             <Type name="NFCPeer"/>
41952           </Argument>
41953         </ArgumentList>
41954       </Operation>
41955       <Operation name="ondetach" id="::NFC::NFCPeerDetectCallback::ondetach">
41956         <webidl>    void ondetach();</webidl>
41957         <descriptive>
41958             <brief>
41959  The method invoked when the NFC peer-to-peer target connected is detached.
41960             </brief>
41961             <version>
41962  1.0
41963             </version>
41964         </descriptive>
41965         <Type type="void"/>
41966         <ArgumentList/>
41967       </Operation>
41968     </Interface>
41969     <Interface name="NDEFMessageReadCallback" id="::NFC::NDEFMessageReadCallback">
41970       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface NDEFMessageReadCallback {
41971     void onsuccess(<ref>NDEFMessage</ref> ndefMessage);
41972   };</webidl>
41973       <descriptive>
41974           <brief>
41975  The success callback to be invoked when data has been read successfully from the NFC tag or target.
41976           </brief>
41977          <description>
41978           <p>
41979 This callback interface specifies a success method with 
41980 an NDEF message as an input parameter.
41981 It is used in asynchronous
41982 operations, such as NFCTag.readNDEF() or NFCPeer.setReceiveNDEFListener().
41983           </p>
41984          </description>
41985           <version>
41986  1.0
41987           </version>
41988       </descriptive>
41989       <ExtendedAttributeList>
41990         <ExtendedAttribute name="Callback" value="FunctionOnly">
41991           <webidl>Callback</webidl>
41992         </ExtendedAttribute>
41993         <ExtendedAttribute name="NoInterfaceObject">
41994           <webidl> NoInterfaceObject</webidl>
41995         </ExtendedAttribute>
41996       </ExtendedAttributeList>
41997       <Operation name="onsuccess" id="::NFC::NDEFMessageReadCallback::onsuccess">
41998         <webidl>    void onsuccess(<ref>NDEFMessage</ref> ndefMessage);</webidl>
41999         <descriptive>
42000             <brief>
42001  The method invoked when the asynchronous call completes successfully.
42002             </brief>
42003             <version>
42004  1.0
42005             </version>
42006         </descriptive>
42007         <Type type="void"/>
42008         <ArgumentList>
42009           <Argument name="ndefMessage">
42010             <descriptive>
42011                 <description><p>
42012  NDEF message that is read from the NFC tag or target.
42013                 </p></description>
42014             </descriptive>
42015             <Type name="NDEFMessage"/>
42016           </Argument>
42017         </ArgumentList>
42018       </Operation>
42019     </Interface>
42020     <Interface name="ByteArraySuccessCallback" id="::NFC::ByteArraySuccessCallback">
42021       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface ByteArraySuccessCallback {
42022     void onsuccess(byte[] data);
42023   };</webidl>
42024       <descriptive>
42025           <brief>
42026  The success callback to be invoked when NFCTag.transceive() completes successfully.
42027           </brief>
42028          <description>
42029           <p>
42030 This callback interface specifies a success method, with
42031 a raw data as an input parameter. It is used in NFCTag.transceive().
42032           </p>
42033          </description>
42034           <version>
42035  1.0
42036           </version>
42037       </descriptive>
42038       <ExtendedAttributeList>
42039         <ExtendedAttribute name="Callback" value="FunctionOnly">
42040           <webidl>Callback</webidl>
42041         </ExtendedAttribute>
42042         <ExtendedAttribute name="NoInterfaceObject">
42043           <webidl> NoInterfaceObject</webidl>
42044         </ExtendedAttribute>
42045       </ExtendedAttributeList>
42046       <Operation name="onsuccess" id="::NFC::ByteArraySuccessCallback::onsuccess">
42047         <webidl>    void onsuccess(byte[] data);</webidl>
42048         <descriptive>
42049             <brief>
42050  The method invoked when the asynchronous call completes successfully.
42051             </brief>
42052             <version>
42053  1.0
42054             </version>
42055         </descriptive>
42056         <Type type="void"/>
42057         <ArgumentList>
42058           <Argument name="data">
42059             <descriptive>
42060                 <description><p>
42061  The raw data that is read from NFC tag or response of transceive operation.
42062                 </p></description>
42063             </descriptive>
42064             <Type type="array">
42065               <Type type="byte"/>
42066             </Type>
42067           </Argument>
42068         </ArgumentList>
42069       </Operation>
42070     </Interface>
42071   </Module>
42072   <Module name="Notification" id="::Notification">
42073     <webidl>module Notification {
42074
42075     typedef DOMString NotificationId;
42076     
42077     enum NotificationType { &quot;STATUS&quot; };
42078
42079     enum StatusNotificationType { &quot;SIMPLE&quot;, &quot;THUMBNAIL&quot;, &quot;ONGOING&quot;, &quot;PROGRESS&quot; };
42080
42081     enum NotificationProgressType { &quot;PERCENTAGE&quot;,  &quot;BYTE&quot; };
42082
42083
42084     [NoInterfaceObject] interface NotificationObject {
42085         readonly attribute <ref>NotificationManager</ref> notification;
42086     };
42087     <ref>Tizen</ref> implements <ref>NotificationObject</ref>;
42088
42089     [NoInterfaceObject] interface NotificationManager {
42090
42091     void post(<ref>Notification</ref> notification) raises(<ref>WebAPIException</ref>);
42092
42093     void update(<ref>Notification</ref> notification) raises(<ref>WebAPIException</ref>);
42094
42095     void remove(<ref>NotificationId</ref> id) raises(<ref>WebAPIException</ref>);
42096
42097     void removeAll() raises(<ref>WebAPIException</ref>);
42098
42099     <ref>Notification</ref> get(<ref>NotificationId</ref> id) raises(<ref>WebAPIException</ref>);
42100
42101     <ref>Notification</ref>[] getAll() raises(<ref>WebAPIException</ref>);
42102
42103     };
42104
42105     
42106     [NoInterfaceObject] interface Notification {
42107     
42108     
42109     readonly attribute <ref>NotificationId</ref> id;
42110
42111     readonly attribute <ref>NotificationType</ref> type;
42112
42113     readonly attribute Date postedTime;
42114
42115     attribute DOMString title;
42116
42117     attribute DOMString? content;
42118
42119     };
42120
42121        
42122     dictionary StatusNotificationInit {
42123         DOMString? content;
42124         DOMString? iconPath; 
42125         DOMString? soundPath;
42126         boolean? vibration;
42127         <ref>ApplicationControl</ref>? appControl;
42128         <ref>ApplicationId</ref>? appId;
42129         <ref>NotificationProgressType</ref>? progressType;
42130         unsigned long? progressValue;
42131         long? number;
42132         DOMString? subIconPath;
42133         <ref>NotificationDetailInfo</ref>[]? detailInfo;
42134         DOMString? ledColor;
42135         unsigned long ledOnPeriod;
42136         unsigned long ledOffPeriod;
42137         DOMString? backgroundImagePath;
42138         DOMString[]? thumbnails;
42139     };
42140     
42141    [Constructor(<ref>StatusNotificationType</ref> statusType, DOMString title, optional <ref>StatusNotificationInit</ref>? notificationInitDict)]
42142
42143
42144     interface StatusNotification : <ref>Notification</ref> {
42145
42146     readonly attribute <ref>StatusNotificationType</ref> statusType;
42147     
42148     attribute DOMString? iconPath;
42149
42150     attribute DOMString? subIconPath;
42151
42152     attribute long? number;
42153     
42154     attribute <ref>NotificationDetailInfo</ref>[]? detailInfo;
42155
42156     attribute DOMString? ledColor;
42157
42158     attribute unsigned long ledOnPeriod;
42159
42160     attribute unsigned long ledOffPeriod;
42161
42162      attribute DOMString? backgroundImagePath;
42163
42164      attribute DOMString[]? thumbnails;
42165
42166      attribute DOMString? soundPath;
42167   
42168      attribute boolean vibration;
42169
42170      attribute <ref>ApplicationControl</ref>? appControl;
42171
42172      attribute <ref>ApplicationId</ref>? appId;
42173
42174      attribute <ref>NotificationProgressType</ref> progressType;  
42175
42176      attribute unsigned long? progressValue;
42177     };
42178
42179
42180 [Constructor(DOMString mainText, optional DOMString? subText)]
42181     interface NotificationDetailInfo {
42182     attribute DOMString mainText;
42183
42184     attribute DOMString? subText;
42185     };
42186     
42187 };</webidl>
42188     <descriptive>
42189         <brief>
42190  The Notification API provides a way to notify users of events that happen in an application.
42191         </brief>
42192        <description>
42193         <p>
42194 For more information on the Notification features, see <a href="../../org.tizen.web.appprogramming/html/guide/ui_guide/notification.htm">Notification Guide</a>.
42195         </p>
42196        </description>
42197         <version>
42198  2.0
42199         </version>
42200     </descriptive>
42201     <Typedef name="NotificationId" id="::Notification::NotificationId">
42202       <webidl>    typedef DOMString NotificationId;</webidl>
42203       <descriptive>
42204           <brief>
42205  A notification ID.
42206           </brief>
42207           <version>
42208  2.0
42209           </version>
42210       </descriptive>
42211       <Type type="DOMString"/>
42212     </Typedef>
42213     <Enum name="NotificationType" id="::Notification::NotificationType">
42214       <webidl>    enum NotificationType { &quot;STATUS&quot; };</webidl>
42215       <descriptive>
42216           <brief>
42217  A notification type.
42218           </brief>
42219          <description>
42220           <p>
42221 The following notification type is supported: 
42222           </p>
42223           <ul>
42224             <li>
42225 STATUS - The posted status notification is displayed in status bar and the notification tray.
42226 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>
42227           </ul>
42228          </description>
42229           <version>
42230  2.0
42231           </version>
42232       </descriptive>
42233       <EnumValue stringvalue="STATUS">
42234         <webidl> &quot;STATUS</webidl>
42235       </EnumValue>
42236     </Enum>
42237     <Enum name="StatusNotificationType" id="::Notification::StatusNotificationType">
42238       <webidl>    enum StatusNotificationType { &quot;SIMPLE&quot;, &quot;THUMBNAIL&quot;, &quot;ONGOING&quot;, &quot;PROGRESS&quot; };</webidl>
42239       <descriptive>
42240           <brief>
42241  A status notification type.
42242           </brief>
42243          <description>
42244           <p>
42245 The following status notification types are supported: 
42246           </p>
42247           <ul>
42248             <li>
42249 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>
42250             <li>
42251 THUMBNAIL - The thumbnail status notification posts a thumbnail-format notification which includes several thumbnail image paths.
42252 The thumbnail status notification is also removed by a user selection.
42253             </li>
42254             <li>
42255 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>
42256             <li>
42257 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>
42258           </ul>
42259          </description>
42260           <version>
42261  2.0
42262           </version>
42263       </descriptive>
42264       <EnumValue stringvalue="SIMPLE">
42265         <webidl> &quot;SIMPLE</webidl>
42266       </EnumValue>
42267       <EnumValue stringvalue="THUMBNAIL">
42268         <webidl> &quot;THUMBNAIL</webidl>
42269       </EnumValue>
42270       <EnumValue stringvalue="ONGOING">
42271         <webidl> &quot;ONGOING</webidl>
42272       </EnumValue>
42273       <EnumValue stringvalue="PROGRESS">
42274         <webidl> &quot;PROGRESS</webidl>
42275       </EnumValue>
42276     </Enum>
42277     <Enum name="NotificationProgressType" id="::Notification::NotificationProgressType">
42278       <webidl>    enum NotificationProgressType { &quot;PERCENTAGE&quot;,  &quot;BYTE&quot; };</webidl>
42279       <descriptive>
42280           <brief>
42281  A notification progress type.
42282           </brief>
42283          <description>
42284           <p>
42285 Supporting notification progress types are: 
42286           </p>
42287           <ul>
42288             <li>
42289  &quot;BYTE&quot; - The progress is indicated in bytes.            </li>
42290             <li>
42291  &quot;PERCENTAGE&quot; -The progress is indicated in percentage.            </li>
42292           </ul>
42293          </description>
42294           <version>
42295  2.1
42296           </version>
42297       </descriptive>
42298       <EnumValue stringvalue="PERCENTAGE">
42299         <webidl> &quot;PERCENTAGE</webidl>
42300       </EnumValue>
42301       <EnumValue stringvalue="BYTE">
42302         <webidl>  &quot;BYTE</webidl>
42303       </EnumValue>
42304     </Enum>
42305     <Interface name="NotificationObject" id="::Notification::NotificationObject">
42306       <webidl>    [NoInterfaceObject] interface NotificationObject {
42307         readonly attribute <ref>NotificationManager</ref> notification;
42308     };</webidl>
42309       <descriptive>
42310           <brief>
42311  Defines what is instantiated by the <em>Tizen</em> object.
42312           </brief>
42313          <description>
42314           <p>
42315 There is a <em>tizen.notification</em> object that allows access to the
42316 Notification API.
42317           </p>
42318          </description>
42319           <version>
42320  2.0
42321           </version>
42322       </descriptive>
42323       <ExtendedAttributeList>
42324         <ExtendedAttribute name="NoInterfaceObject">
42325           <webidl>NoInterfaceObject</webidl>
42326         </ExtendedAttribute>
42327       </ExtendedAttributeList>
42328       <Attribute readonly="readonly" name="notification" id="::Notification::NotificationObject::notification">
42329         <webidl>        readonly attribute <ref>NotificationManager</ref> notification;</webidl>
42330         <Type name="NotificationManager"/>
42331       </Attribute>
42332     </Interface>
42333     <Implements name1="Tizen" name2="NotificationObject">
42334       <webidl>    <ref>Tizen</ref> implements <ref>NotificationObject</ref>;</webidl>
42335     </Implements>
42336     <Interface name="NotificationManager" id="::Notification::NotificationManager">
42337       <webidl>    [NoInterfaceObject] interface NotificationManager {
42338
42339     void post(<ref>Notification</ref> notification) raises(<ref>WebAPIException</ref>);
42340
42341     void update(<ref>Notification</ref> notification) raises(<ref>WebAPIException</ref>);
42342
42343     void remove(<ref>NotificationId</ref> id) raises(<ref>WebAPIException</ref>);
42344
42345     void removeAll() raises(<ref>WebAPIException</ref>);
42346
42347     <ref>Notification</ref> get(<ref>NotificationId</ref> id) raises(<ref>WebAPIException</ref>);
42348
42349     <ref>Notification</ref>[] getAll() raises(<ref>WebAPIException</ref>);
42350
42351     };</webidl>
42352       <descriptive>
42353           <brief>
42354  Notification manager interface that provides access to the API.
42355           </brief>
42356          <description>
42357           <p>
42358 This interface provides access to the notification object.
42359           </p>
42360          </description>
42361           <version>
42362  2.0
42363           </version>
42364       </descriptive>
42365       <ExtendedAttributeList>
42366         <ExtendedAttribute name="NoInterfaceObject">
42367           <webidl>NoInterfaceObject</webidl>
42368         </ExtendedAttribute>
42369       </ExtendedAttributeList>
42370       <Operation name="post" id="::Notification::NotificationManager::post">
42371         <webidl>    void post(<ref>Notification</ref> notification) raises(<ref>WebAPIException</ref>);</webidl>
42372         <descriptive>
42373             <brief>
42374  Posts a notification to display.
42375             </brief>
42376             <version>
42377  2.0
42378             </version>
42379             <privilegelevel>
42380  public
42381             </privilegelevel>
42382             <privilege>
42383  http://tizen.org/privilege/notification
42384             </privilege>
42385             <Code> try {
42386       var appControl = new tizen.ApplicationControl(
42387                        &quot;http://tizen.org/appcontrol/operation/create_content&quot;,
42388                        null,
42389                        &quot;image/jpg&quot;,
42390                        null);
42391       var notificationDict = {
42392                   content : &quot;This is a simple notification.&quot;,
42393                   iconPath : &quot;images/image1.jpg&quot;,
42394                   soundPath : &quot;music/Over the horizon.mp3&quot;, 
42395                   vibration : true, 
42396                   appControl : appControl};
42397        
42398       var notification = new tizen.StatusNotification(&quot;SIMPLE&quot;, 
42399                   &quot;Simple notification&quot;, notificationDict);
42400                        
42401       tizen.notification.post(notification);
42402  } catch (err) {
42403       console.log (err.name + &quot;: &quot; + err.message);
42404  }
42405  </Code>
42406         </descriptive>
42407         <Type type="void"/>
42408         <ArgumentList>
42409           <Argument name="notification">
42410             <descriptive>
42411                 <description><p>
42412  A notification to post.
42413                 </p></description>
42414             </descriptive>
42415             <Type name="Notification"/>
42416           </Argument>
42417         </ArgumentList>
42418         <Raises>
42419           <RaiseException name="WebAPIException">
42420             <descriptive>
42421                 <description><p>
42422  with error type TypeMismatchError, if any of the input parameter is not compatible with the expected type for that parameter.
42423                 </p></description>
42424                 <description><p>
42425  with error type InvalidValuesError, if any of the input 
42426 parameters contain an invalid value.
42427                 </p></description>
42428                 <description><p>
42429  with error type SecurityError, if the application does not have the privilege to call this method.
42430                 </p></description>
42431                 <description><p>
42432  with error type UnknownError if any other error occurs. 
42433                 </p></description>
42434             </descriptive>
42435           </RaiseException>
42436         </Raises>
42437       </Operation>
42438       <Operation name="update" id="::Notification::NotificationManager::update">
42439         <webidl>    void update(<ref>Notification</ref> notification) raises(<ref>WebAPIException</ref>);</webidl>
42440         <descriptive>
42441             <brief>
42442  Updates a previously posted notification. 
42443             </brief>
42444             <version>
42445  2.0
42446             </version>
42447             <privilegelevel>
42448  public
42449             </privilegelevel>
42450             <privilege>
42451  http://tizen.org/privilege/notification
42452             </privilege>
42453             <Code> try {
42454       // Uses a variable for the previously posted notification.
42455       notification.content = &quot;My notification&quot;;
42456       tizen.notification.update(notification); 
42457  } catch (err) {
42458       console.log (err.name + &quot;: &quot; + err.message);
42459  }
42460    
42461 </Code>
42462         </descriptive>
42463         <Type type="void"/>
42464         <ArgumentList>
42465           <Argument name="notification">
42466             <descriptive>
42467                 <description><p>
42468  A notification to update.
42469                 </p></description>
42470             </descriptive>
42471             <Type name="Notification"/>
42472           </Argument>
42473         </ArgumentList>
42474         <Raises>
42475           <RaiseException name="WebAPIException">
42476             <descriptive>
42477                 <description><p>
42478  with error type TypeMismatchError, if any of the input parameter is not compatible with the expected type for that parameter.
42479                 </p></description>
42480                 <description><p>
42481  with error type InvalidValuesError, if any of the input 
42482 parameters contain an invalid value.
42483                 </p></description>
42484                 <description><p>
42485  with error type SecurityError, if the application does not have the privilege to call this method.
42486                 </p></description>
42487                 <description><p>
42488  with error type UnknownError if any other error occurs. 
42489                 </p></description>
42490             </descriptive>
42491           </RaiseException>
42492         </Raises>
42493       </Operation>
42494       <Operation name="remove" id="::Notification::NotificationManager::remove">
42495         <webidl>    void remove(<ref>NotificationId</ref> id) raises(<ref>WebAPIException</ref>);</webidl>
42496         <descriptive>
42497             <brief>
42498  Removes a previously posted notification. 
42499             </brief>
42500             <version>
42501  2.0
42502             </version>
42503             <privilegelevel>
42504  public
42505             </privilegelevel>
42506             <privilege>
42507  http://tizen.org/privilege/notification
42508             </privilege>
42509             <Code> try {
42510       // Uses a variable for the previously posted notification.
42511       tizen.notification.remove(notification.id); 
42512  } catch (err) {
42513       console.log (err.name + &quot;: &quot; + err.message);
42514  }
42515    
42516 </Code>
42517         </descriptive>
42518         <Type type="void"/>
42519         <ArgumentList>
42520           <Argument name="id">
42521             <descriptive>
42522                 <description><p>
42523  A previously posted notification ID to remove.
42524                 </p></description>
42525             </descriptive>
42526             <Type name="NotificationId"/>
42527           </Argument>
42528         </ArgumentList>
42529         <Raises>
42530           <RaiseException name="WebAPIException">
42531             <descriptive>
42532                 <description><p>
42533  with error type TypeMismatchError, if any of the input parameter is not compatible with the expected type for that parameter.
42534                 </p></description>
42535                 <description><p>
42536  with error type NotFoundError, if NotificationId is not found in the previously posted notifications.
42537                 </p></description>
42538                 <description><p>
42539  with error type SecurityError, if the application does not have the privilege to call this method.
42540                 </p></description>
42541                 <description><p>
42542  with error type UnknownError if any other error occurs. 
42543                 </p></description>
42544             </descriptive>
42545           </RaiseException>
42546         </Raises>
42547       </Operation>
42548       <Operation name="removeAll" id="::Notification::NotificationManager::removeAll">
42549         <webidl>    void removeAll() raises(<ref>WebAPIException</ref>);</webidl>
42550         <descriptive>
42551             <brief>
42552  Removes all notifications that have been posted by the current application.
42553             </brief>
42554             <version>
42555  2.0
42556             </version>
42557             <privilegelevel>
42558  public
42559             </privilegelevel>
42560             <privilege>
42561  http://tizen.org/privilege/notification
42562             </privilege>
42563             <Code> try {
42564       tizen.notification.removeAll(); 
42565  } catch (err) {
42566       console.log (err.name + &quot;: &quot; + err.message);
42567  }
42568    
42569 </Code>
42570         </descriptive>
42571         <Type type="void"/>
42572         <ArgumentList/>
42573         <Raises>
42574           <RaiseException name="WebAPIException">
42575             <descriptive>
42576                 <description><p>
42577  with error type SecurityError, if the application does not have the privilege to call this method.
42578                 </p></description>
42579                 <description><p>
42580  with error type UnknownError if any other error occurs. 
42581                 </p></description>
42582             </descriptive>
42583           </RaiseException>
42584         </Raises>
42585       </Operation>
42586       <Operation name="get" id="::Notification::NotificationManager::get">
42587         <webidl>    <ref>Notification</ref> get(<ref>NotificationId</ref> id) raises(<ref>WebAPIException</ref>);</webidl>
42588         <descriptive>
42589             <brief>
42590  Gets a notification that has previously been posted by the current application. Note that the obtaining notification's progressType is <em>PERCENTAGE</em>            </brief>
42591             <version>
42592  2.0
42593             </version>
42594             <Code> try {
42595       // Uses a variable for the previously posted notification
42596       // Saves notification ID for future use
42597       var myId = notification.id;
42598        
42599       var myNotification = tizen.notification.get(myId); 
42600  } catch (err) {
42601       console.log (err.name + &quot;: &quot; + err.message);
42602  }
42603    
42604 </Code>
42605         </descriptive>
42606         <Type name="Notification"/>
42607         <ArgumentList>
42608           <Argument name="id">
42609             <descriptive>
42610                 <description><p>
42611  A previously posted notification ID.
42612                 </p></description>
42613             </descriptive>
42614             <Type name="NotificationId"/>
42615           </Argument>
42616         </ArgumentList>
42617         <Raises>
42618           <RaiseException name="WebAPIException">
42619             <descriptive>
42620                 <description><p>
42621  with error type NotFoundError, if NotificationId is not found in the previously posted notifications.
42622                 </p></description>
42623                 <description><p>
42624  with error type UnknownError if any other error occurs. 
42625                 </p></description>
42626             </descriptive>
42627           </RaiseException>
42628         </Raises>
42629       </Operation>
42630       <Operation name="getAll" id="::Notification::NotificationManager::getAll">
42631         <webidl>    <ref>Notification</ref>[] getAll() raises(<ref>WebAPIException</ref>);</webidl>
42632         <descriptive>
42633             <brief>
42634  Gets all notifications that have previously been posted by the current application. Note that the obtaining notification's progressType is <em>PERCENTAGE</em>            </brief>
42635             <version>
42636  2.0
42637             </version>
42638             <Code> try {
42639      var notifications = tizen.notification.getAll();
42640      var index = 0;
42641      
42642      for ( index = 0; notifications.length > index; index++ )
42643      {
42644          console.log(notifications[index].id);
42645          console.log(notifications[index].title);
42646          console.log(notifications[index].statusType);
42647          console.log(notifications[index].type);
42648          console.log(notifications[index].content);
42649          console.log(notifications[index].postedTime);
42650          console.log(notifications[index].iconPath);
42651          console.log(notifications[index].soundPath);
42652          console.log(notifications[index].vibration);
42653          console.log(notifications[index].appControl);
42654      }
42655  } catch (err) {
42656      console.log (err.name + &quot;: &quot; + err.message);
42657  }
42658  </Code>
42659         </descriptive>
42660         <Type type="array">
42661           <Type name="Notification"/>
42662         </Type>
42663         <ArgumentList/>
42664         <Raises>
42665           <RaiseException name="WebAPIException">
42666             <descriptive>
42667                 <description><p>
42668  with error type UnknownError, if any other error occurs. 
42669                 </p></description>
42670             </descriptive>
42671           </RaiseException>
42672         </Raises>
42673       </Operation>
42674     </Interface>
42675     <Interface name="Notification" id="::Notification::Notification">
42676       <webidl>    [NoInterfaceObject] interface Notification {
42677     
42678     
42679     readonly attribute <ref>NotificationId</ref> id;
42680
42681     readonly attribute <ref>NotificationType</ref> type;
42682
42683     readonly attribute Date postedTime;
42684
42685     attribute DOMString title;
42686
42687     attribute DOMString? content;
42688
42689     };</webidl>
42690       <descriptive>
42691           <brief>
42692  This interface offers common attributes to represent <em>Notification</em> object.
42693           </brief>
42694           <version>
42695  2.0
42696           </version>
42697       </descriptive>
42698       <ExtendedAttributeList>
42699         <ExtendedAttribute name="NoInterfaceObject">
42700           <webidl>NoInterfaceObject</webidl>
42701         </ExtendedAttribute>
42702       </ExtendedAttributeList>
42703       <Attribute readonly="readonly" name="id" id="::Notification::Notification::id">
42704         <webidl>    readonly attribute <ref>NotificationId</ref> id;</webidl>
42705         <descriptive>
42706             <brief>
42707  The Notification identifier. Before the notification is posted, this value is undefined.
42708             </brief>
42709             <version>
42710  2.0
42711             </version>
42712         </descriptive>
42713         <Type name="NotificationId"/>
42714       </Attribute>
42715       <Attribute readonly="readonly" name="type" id="::Notification::Notification::type">
42716         <webidl>    readonly attribute <ref>NotificationType</ref> type;</webidl>
42717         <descriptive>
42718             <brief>
42719  The Notification type.
42720             </brief>
42721             <version>
42722  2.0
42723             </version>
42724         </descriptive>
42725         <Type name="NotificationType"/>
42726       </Attribute>
42727       <Attribute readonly="readonly" name="postedTime" id="::Notification::Notification::postedTime">
42728         <webidl>    readonly attribute Date postedTime;</webidl>
42729         <descriptive>
42730             <brief>
42731  The time that the notification is posted. Before the notification is posted, this value is undefined.
42732             </brief>
42733             <version>
42734  2.0
42735             </version>
42736         </descriptive>
42737         <Type type="Date"/>
42738       </Attribute>
42739       <Attribute name="title" id="::Notification::Notification::title">
42740         <webidl>    attribute DOMString title;</webidl>
42741         <descriptive>
42742             <brief>
42743  The title to display in a notification.
42744             </brief>
42745             <version>
42746  2.0
42747             </version>
42748         </descriptive>
42749         <Type type="DOMString"/>
42750       </Attribute>
42751       <Attribute name="content" id="::Notification::Notification::content">
42752         <webidl>    attribute DOMString? content;</webidl>
42753         <descriptive>
42754             <brief>
42755  The content to display in a notification.
42756             </brief>
42757             <version>
42758  2.0
42759             </version>
42760         </descriptive>
42761         <Type type="DOMString" nullable="nullable"/>
42762       </Attribute>
42763     </Interface>
42764     <Dictionary name="StatusNotificationInit" id="::Notification::StatusNotificationInit">
42765       <webidl>    dictionary StatusNotificationInit {
42766         DOMString? content;
42767         DOMString? iconPath; 
42768         DOMString? soundPath;
42769         boolean? vibration;
42770         <ref>ApplicationControl</ref>? appControl;
42771         <ref>ApplicationId</ref>? appId;
42772         <ref>NotificationProgressType</ref>? progressType;
42773         unsigned long? progressValue;
42774         long? number;
42775         DOMString? subIconPath;
42776         <ref>NotificationDetailInfo</ref>[]? detailInfo;
42777         DOMString? ledColor;
42778         unsigned long ledOnPeriod;
42779         unsigned long ledOffPeriod;
42780         DOMString? backgroundImagePath;
42781         DOMString[]? thumbnails;
42782     };</webidl>
42783       <descriptive>
42784           <brief>
42785  The properties of StatusNotification, to pass a constructor.
42786           </brief>
42787           <version>
42788  2.0
42789           </version>
42790       </descriptive>
42791       <DictionaryMember name="content" id="::Notification::StatusNotificationInit::content">
42792         <webidl>        DOMString? content;</webidl>
42793         <Type type="DOMString" nullable="nullable"/>
42794       </DictionaryMember>
42795       <DictionaryMember name="iconPath" id="::Notification::StatusNotificationInit::iconPath">
42796         <webidl>        DOMString? iconPath;</webidl>
42797         <Type type="DOMString" nullable="nullable"/>
42798       </DictionaryMember>
42799       <DictionaryMember name="soundPath" id="::Notification::StatusNotificationInit::soundPath">
42800         <webidl>        DOMString? soundPath;</webidl>
42801         <Type type="DOMString" nullable="nullable"/>
42802       </DictionaryMember>
42803       <DictionaryMember name="vibration" id="::Notification::StatusNotificationInit::vibration">
42804         <webidl>        boolean? vibration;</webidl>
42805         <Type type="boolean" nullable="nullable"/>
42806       </DictionaryMember>
42807       <DictionaryMember name="appControl" id="::Notification::StatusNotificationInit::appControl">
42808         <webidl>        <ref>ApplicationControl</ref>? appControl;</webidl>
42809         <Type name="ApplicationControl" nullable="nullable"/>
42810       </DictionaryMember>
42811       <DictionaryMember name="appId" id="::Notification::StatusNotificationInit::appId">
42812         <webidl>        <ref>ApplicationId</ref>? appId;</webidl>
42813         <Type name="ApplicationId" nullable="nullable"/>
42814       </DictionaryMember>
42815       <DictionaryMember name="progressType" id="::Notification::StatusNotificationInit::progressType">
42816         <webidl>        <ref>NotificationProgressType</ref>? progressType;</webidl>
42817         <Type name="NotificationProgressType" nullable="nullable"/>
42818       </DictionaryMember>
42819       <DictionaryMember name="progressValue" id="::Notification::StatusNotificationInit::progressValue">
42820         <webidl>        unsigned long? progressValue;</webidl>
42821         <Type type="unsigned long" nullable="nullable"/>
42822       </DictionaryMember>
42823       <DictionaryMember name="number" id="::Notification::StatusNotificationInit::number">
42824         <webidl>        long? number;</webidl>
42825         <Type type="long" nullable="nullable"/>
42826       </DictionaryMember>
42827       <DictionaryMember name="subIconPath" id="::Notification::StatusNotificationInit::subIconPath">
42828         <webidl>        DOMString? subIconPath;</webidl>
42829         <Type type="DOMString" nullable="nullable"/>
42830       </DictionaryMember>
42831       <DictionaryMember name="detailInfo" id="::Notification::StatusNotificationInit::detailInfo">
42832         <webidl>        <ref>NotificationDetailInfo</ref>[]? detailInfo;</webidl>
42833         <Type type="array" nullable="nullable">
42834           <Type name="NotificationDetailInfo"/>
42835         </Type>
42836       </DictionaryMember>
42837       <DictionaryMember name="ledColor" id="::Notification::StatusNotificationInit::ledColor">
42838         <webidl>        DOMString? ledColor;</webidl>
42839         <Type type="DOMString" nullable="nullable"/>
42840       </DictionaryMember>
42841       <DictionaryMember name="ledOnPeriod" id="::Notification::StatusNotificationInit::ledOnPeriod">
42842         <webidl>        unsigned long ledOnPeriod;</webidl>
42843         <Type type="unsigned long"/>
42844       </DictionaryMember>
42845       <DictionaryMember name="ledOffPeriod" id="::Notification::StatusNotificationInit::ledOffPeriod">
42846         <webidl>        unsigned long ledOffPeriod;</webidl>
42847         <Type type="unsigned long"/>
42848       </DictionaryMember>
42849       <DictionaryMember name="backgroundImagePath" id="::Notification::StatusNotificationInit::backgroundImagePath">
42850         <webidl>        DOMString? backgroundImagePath;</webidl>
42851         <Type type="DOMString" nullable="nullable"/>
42852       </DictionaryMember>
42853       <DictionaryMember name="thumbnails" id="::Notification::StatusNotificationInit::thumbnails">
42854         <webidl>        DOMString[]? thumbnails;</webidl>
42855         <Type type="array" nullable="nullable">
42856           <Type type="DOMString"/>
42857         </Type>
42858       </DictionaryMember>
42859     </Dictionary>
42860     <Interface name="StatusNotification" id="::Notification::StatusNotification">
42861       <webidl>   [Constructor(<ref>StatusNotificationType</ref> statusType, DOMString title, optional <ref>StatusNotificationInit</ref>? notificationInitDict)]
42862
42863
42864     interface StatusNotification : <ref>Notification</ref> {
42865
42866     readonly attribute <ref>StatusNotificationType</ref> statusType;
42867     
42868     attribute DOMString? iconPath;
42869
42870     attribute DOMString? subIconPath;
42871
42872     attribute long? number;
42873     
42874     attribute <ref>NotificationDetailInfo</ref>[]? detailInfo;
42875
42876     attribute DOMString? ledColor;
42877
42878     attribute unsigned long ledOnPeriod;
42879
42880     attribute unsigned long ledOffPeriod;
42881
42882      attribute DOMString? backgroundImagePath;
42883
42884      attribute DOMString[]? thumbnails;
42885
42886      attribute DOMString? soundPath;
42887   
42888      attribute boolean vibration;
42889
42890      attribute <ref>ApplicationControl</ref>? appControl;
42891
42892      attribute <ref>ApplicationId</ref>? appId;
42893
42894      attribute <ref>NotificationProgressType</ref> progressType;  
42895
42896      attribute unsigned long? progressValue;
42897     };</webidl>
42898       <descriptive>
42899           <brief>
42900  This interface represents status notification and offers additional attributes to represent notification displayed in notification tray.
42901           </brief>
42902          <description>
42903           <p>
42904 All notification must have a title attribute.
42905           </p>
42906          </description>
42907           <version>
42908  2.0
42909           </version>
42910       </descriptive>
42911       <ExtendedAttributeList>
42912         <ExtendedAttribute name="Constructor">
42913           <webidl>Constructor(<ref>StatusNotificationType</ref> statusType, DOMString title, optional <ref>StatusNotificationInit</ref>? notificationInitDict)</webidl>
42914           <ArgumentList>
42915             <Argument name="statusType">
42916               <Type name="StatusNotificationType"/>
42917             </Argument>
42918             <Argument name="title">
42919               <Type type="DOMString"/>
42920             </Argument>
42921             <Argument optional="optional" name="notificationInitDict">
42922               <Type name="StatusNotificationInit" nullable="nullable"/>
42923             </Argument>
42924           </ArgumentList>
42925         </ExtendedAttribute>
42926       </ExtendedAttributeList>
42927       <InterfaceInheritance>
42928         <Name name="Notification"/>
42929       </InterfaceInheritance>
42930       <Attribute readonly="readonly" name="statusType" id="::Notification::StatusNotification::statusType">
42931         <webidl>    readonly attribute <ref>StatusNotificationType</ref> statusType;</webidl>
42932         <descriptive>
42933             <brief>
42934  The status notification type. 
42935             </brief>
42936             <version>
42937  2.0
42938             </version>
42939         </descriptive>
42940         <Type name="StatusNotificationType"/>
42941       </Attribute>
42942       <Attribute name="iconPath" id="::Notification::StatusNotification::iconPath">
42943         <webidl>    attribute DOMString? iconPath;</webidl>
42944         <descriptive>
42945             <brief>
42946  The icon path to display in the notification. 
42947             </brief>
42948             <version>
42949  2.0
42950             </version>
42951         </descriptive>
42952         <Type type="DOMString" nullable="nullable"/>
42953       </Attribute>
42954       <Attribute name="subIconPath" id="::Notification::StatusNotification::subIconPath">
42955         <webidl>    attribute DOMString? subIconPath;</webidl>
42956         <descriptive>
42957             <brief>
42958  The sub icon path to display in the notification. 
42959             </brief>
42960             <version>
42961  2.1
42962             </version>
42963         </descriptive>
42964         <Type type="DOMString" nullable="nullable"/>
42965       </Attribute>
42966       <Attribute name="number" id="::Notification::StatusNotification::number">
42967         <webidl>    attribute long? number;</webidl>
42968         <descriptive>
42969             <brief>
42970  The number of events to display in the notification. 
42971             </brief>
42972             <version>
42973  2.1
42974             </version>
42975         </descriptive>
42976         <Type type="long" nullable="nullable"/>
42977       </Attribute>
42978       <Attribute name="detailInfo" id="::Notification::StatusNotification::detailInfo">
42979         <webidl>    attribute <ref>NotificationDetailInfo</ref>[]? detailInfo;</webidl>
42980         <descriptive>
42981             <brief>
42982  Appends lines of the detail information to the notification.
42983 This attribute is available in simple status notification.
42984 By default, this attribute is initialized with an empty array.
42985 The maximum number of detail information elements in the array is 2.
42986             </brief>
42987             <version>
42988  2.1
42989             </version>
42990         </descriptive>
42991         <Type type="array" nullable="nullable">
42992           <Type name="NotificationDetailInfo"/>
42993         </Type>
42994       </Attribute>
42995       <Attribute name="ledColor" id="::Notification::StatusNotification::ledColor">
42996         <webidl>    attribute DOMString? ledColor;</webidl>
42997         <descriptive>
42998             <brief>
42999  Sets the notification LED indicator color property. 
43000 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.
43001 The LED indicator color will show its a close approximation.
43002 LED will only light on when screen is off. To turn the LED off, set &quot;#000000&quot; or null to ledColor. 
43003 This method has effects when the device has notification LED.
43004             </brief>
43005             <Code> try {
43006       var notificationDict = {
43007                   content : &quot;This is a simple notification.&quot;,
43008                   iconPath : &quot;images/image1.jpg&quot;,
43009                   soundPath : &quot;music/Over the horizon.mp3&quot;,
43010                   vibration : true,
43011                   ledColor : &quot;#FFFF00&quot;, 
43012                   ledOnPeriod: 1000,
43013                   ledOffPeriod : 500 };
43014
43015       var notification = new tizen.StatusNotification(&quot;SIMPLE&quot;,
43016                   &quot;Simple notification&quot;, notificationDict);
43017
43018       tizen.notification.post(notification);
43019  } catch (err) {
43020       console.log (err.name + &quot;: &quot; + err.message);
43021  }
43022  </Code>
43023             <version>
43024  2.2
43025             </version>
43026         </descriptive>
43027         <Type type="DOMString" nullable="nullable"/>
43028       </Attribute>
43029       <Attribute name="ledOnPeriod" id="::Notification::StatusNotification::ledOnPeriod">
43030         <webidl>    attribute unsigned long ledOnPeriod;</webidl>
43031         <descriptive>
43032             <brief>
43033  The milliseconds for which the light is on
43034 The light continuously toggles on (ledOnPeriod) and off (ledOffPeriod).
43035 By default, this attribute is set to 0
43036             </brief>
43037             <version>
43038  2.2
43039             </version>
43040         </descriptive>
43041         <Type type="unsigned long"/>
43042       </Attribute>
43043       <Attribute name="ledOffPeriod" id="::Notification::StatusNotification::ledOffPeriod">
43044         <webidl>    attribute unsigned long ledOffPeriod;</webidl>
43045         <descriptive>
43046             <brief>
43047  The milliseconds for which the light is off
43048 By default, this attribute is set to 0
43049             </brief>
43050             <version>
43051  2.2
43052             </version>
43053         </descriptive>
43054         <Type type="unsigned long"/>
43055       </Attribute>
43056       <Attribute name="backgroundImagePath" id="::Notification::StatusNotification::backgroundImagePath">
43057         <webidl>     attribute DOMString? backgroundImagePath;</webidl>
43058         <descriptive>
43059             <brief>
43060  The image path to use as the background of the notification.
43061 This attribute is available on simple or thumbnail status notifications.
43062             </brief>
43063             <version>
43064  2.1
43065             </version>
43066         </descriptive>
43067         <Type type="DOMString" nullable="nullable"/>
43068       </Attribute>
43069       <Attribute name="thumbnails" id="::Notification::StatusNotification::thumbnails">
43070         <webidl>     attribute DOMString[]? thumbnails;</webidl>
43071         <descriptive>
43072             <brief>
43073  The image paths associated with the thumbnail status notification.
43074 By default, this attribute is initialized with an empty array.
43075 The maximum number of thumbnail path elements in the array is 4.
43076             </brief>
43077             <version>
43078  2.1
43079             </version>
43080         </descriptive>
43081         <Type type="array" nullable="nullable">
43082           <Type type="DOMString"/>
43083         </Type>
43084       </Attribute>
43085       <Attribute name="soundPath" id="::Notification::StatusNotification::soundPath">
43086         <webidl>     attribute DOMString? soundPath;</webidl>
43087         <descriptive>
43088             <brief>
43089  The path of a sound file to play when the notification is shown.
43090             </brief>
43091             <version>
43092  2.0
43093             </version>
43094         </descriptive>
43095         <Type type="DOMString" nullable="nullable"/>
43096       </Attribute>
43097       <Attribute name="vibration" id="::Notification::StatusNotification::vibration">
43098         <webidl>     attribute boolean vibration;</webidl>
43099         <descriptive>
43100             <brief>
43101  Holds whether to vibrate when the notification is shown. By default, this attribute is set to false.
43102             </brief>
43103             <version>
43104  2.0
43105             </version>
43106         </descriptive>
43107         <Type type="boolean"/>
43108       </Attribute>
43109       <Attribute name="appControl" id="::Notification::StatusNotification::appControl">
43110         <webidl>     attribute <ref>ApplicationControl</ref>? appControl;</webidl>
43111         <descriptive>
43112             <brief>
43113  Holds the application control to launch an application when the notification is selected from the notification tray. 
43114             </brief>
43115             <version>
43116  2.0
43117             </version>
43118         </descriptive>
43119         <Type name="ApplicationControl" nullable="nullable"/>
43120       </Attribute>
43121       <Attribute name="appId" id="::Notification::StatusNotification::appId">
43122         <webidl>     attribute <ref>ApplicationId</ref>? appId;</webidl>
43123         <descriptive>
43124             <brief>
43125  Holds the application ID to launch when the notification is selected from the notification tray. 
43126             </brief>
43127             <version>
43128  2.0
43129             </version>
43130             <Code> try {
43131  
43132       // Gets a current application information with tizen.application.getAppInfo
43133       var myappInfo = tizen.application.getAppInfo();
43134
43135       var notificationDict = {
43136                   content : &quot;This is a simple notification.&quot;,
43137                   iconPath : &quot;images/image1.jpg&quot;,
43138                   soundPath : &quot;music/Over the horizon.mp3&quot;, 
43139                   vibration : true, 
43140                   appId : myappInfo.id };
43141        
43142       var notification = new tizen.StatusNotification(&quot;SIMPLE&quot;, 
43143                   &quot;Simple notification&quot;, notificationDict);
43144                        
43145       tizen.notification.post(notification);
43146  } catch (err) {
43147       console.log (err.name + &quot;: &quot; + err.message);
43148  }
43149  </Code>
43150         </descriptive>
43151         <Type name="ApplicationId" nullable="nullable"/>
43152       </Attribute>
43153       <Attribute name="progressType" id="::Notification::StatusNotification::progressType">
43154         <webidl>     attribute <ref>NotificationProgressType</ref> progressType;</webidl>
43155         <descriptive>
43156             <brief>
43157  Defines the type for an ongoing notification's progress. 
43158 By default, this attribute is set to PERCENTAGE.
43159             </brief>
43160             <version>
43161  2.1
43162             </version>
43163         </descriptive>
43164         <Type name="NotificationProgressType"/>
43165       </Attribute>
43166       <Attribute name="progressValue" id="::Notification::StatusNotification::progressValue">
43167         <webidl>     attribute unsigned long? progressValue;</webidl>
43168         <descriptive>
43169             <brief>
43170  Defines the current notification progress value (<em>PERCENTAGE</em> or <em>BYTE</em>), depending on the <em>progressType</em>            </brief>
43171            <description>
43172             <p>
43173 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
43174 If 0, the indeterminate progressbar will be shown.
43175 This attribute is only available for StatusNotifcation of type <em>PROGRESS</em>.
43176             </p>
43177             <p>
43178 Application should keep the progress value for its job because 
43179 the saved value in the notification status tray would be different from 
43180 exact progress value.
43181             </p>
43182             <p>
43183 Range of <em>progressValue</em>: percent (0 to 100).
43184             </p>
43185            </description>
43186             <Code> try {
43187       var appControl = new tizen.ApplicationControl(
43188       &quot;http://tizen.org/appcontrol/operation/create_content&quot;,
43189       null,
43190       &quot;image/jpg&quot;,
43191       null);
43192       
43193       var notificationDict = {
43194                   content : &quot;This is a progress notificaiton.&quot;,
43195                   iconPath : &quot;images/image2.jpg&quot;,
43196                   soundPath : &quot;music/Over the horizon.mp3&quot;, 
43197                   vibration : true, 
43198                   appControl : appControl,
43199                   progressValue : 20};
43200       // Constructs the progress notification
43201       var notification = new tizen.StatusNotification(&quot;PROGRESS&quot;, 
43202                          &quot;Progress notification&quot;, notificationDict); 
43203       // Posts the notification
43204       tizen.notification.post(notification);
43205
43206       // Updates the progress value of the notification
43207       notification.progressValue = 59;
43208       tizen.notification.update(notification);
43209
43210       
43211  } catch (err) {
43212      console.log (err.name + &quot;: &quot; + err.message);
43213  }
43214  </Code>
43215             <version>
43216  2.0
43217             </version>
43218         </descriptive>
43219         <Type type="unsigned long" nullable="nullable"/>
43220       </Attribute>
43221     </Interface>
43222     <Interface name="NotificationDetailInfo" id="::Notification::NotificationDetailInfo">
43223       <webidl>[Constructor(DOMString mainText, optional DOMString? subText)]
43224     interface NotificationDetailInfo {
43225     attribute DOMString mainText;
43226
43227     attribute DOMString? subText;
43228     };</webidl>
43229       <descriptive>
43230           <brief>
43231  The NotificationDetailInfo object that contains the detail information to the notification.
43232           </brief>
43233           <version>
43234  2.1
43235           </version>
43236           <Code> var detailInfo1 = new tizen.NotificationDetailInfo('Missed Call from James', 'Feb 11 2013');
43237  notification.detailInfo = [detailInfo1];
43238 </Code>
43239       </descriptive>
43240       <ExtendedAttributeList>
43241         <ExtendedAttribute name="Constructor">
43242           <webidl>Constructor(DOMString mainText, optional DOMString? subText)</webidl>
43243           <ArgumentList>
43244             <Argument name="mainText">
43245               <Type type="DOMString"/>
43246             </Argument>
43247             <Argument optional="optional" name="subText">
43248               <Type type="DOMString" nullable="nullable"/>
43249             </Argument>
43250           </ArgumentList>
43251         </ExtendedAttribute>
43252       </ExtendedAttributeList>
43253       <Attribute name="mainText" id="::Notification::NotificationDetailInfo::mainText">
43254         <webidl>    attribute DOMString mainText;</webidl>
43255         <descriptive>
43256             <brief>
43257  The main content of the detail information.
43258 This attribute is available on simple status notifications.
43259             </brief>
43260             <version>
43261  2.1
43262             </version>
43263         </descriptive>
43264         <Type type="DOMString"/>
43265       </Attribute>
43266       <Attribute name="subText" id="::Notification::NotificationDetailInfo::subText">
43267         <webidl>    attribute DOMString? subText;</webidl>
43268         <descriptive>
43269             <brief>
43270  The secondary content of the detail information.
43271             </brief>
43272            <description>
43273             <p>
43274 By default, this attribute is set to null.
43275             </p>
43276            </description>
43277             <version>
43278  2.1
43279             </version>
43280         </descriptive>
43281         <Type type="DOMString" nullable="nullable"/>
43282       </Attribute>
43283     </Interface>
43284   </Module>
43285   <Module name="Package" id="::Package">
43286     <webidl>module Package {&#13;
43287 &#13;
43288 &#13;
43289     typedef DOMString PackageId;&#13;
43290 &#13;
43291 &#13;
43292     [NoInterfaceObject] interface PackageManagerObject {&#13;
43293         readonly attribute <ref>PackageManager</ref> package;&#13;
43294     };&#13;
43295     <ref>Tizen</ref> implements <ref>PackageManagerObject</ref>;&#13;
43296 &#13;
43297 &#13;
43298     [NoInterfaceObject] interface PackageManager {&#13;
43299 &#13;
43300 &#13;
43301         void install(DOMString path,&#13;
43302                      <ref>PackageProgressCallback</ref> progressCallback,&#13;
43303                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);&#13;
43304 &#13;
43305 &#13;
43306         void uninstall(<ref>PackageId</ref> id, &#13;
43307                        <ref>PackageProgressCallback</ref> progressCallback,&#13;
43308                        optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);&#13;
43309 &#13;
43310 &#13;
43311 &#13;
43312 &#13;
43313         void getPackagesInfo(<ref>PackageInformationArraySuccessCallback</ref> successCallback,&#13;
43314                              optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);&#13;
43315 &#13;
43316 &#13;
43317         <ref>PackageInformation</ref> getPackageInfo(optional <ref>PackageId</ref>? id) raises(<ref>WebAPIException</ref>);&#13;
43318 &#13;
43319 &#13;
43320         void setPackageInfoEventListener(<ref>PackageInformationEventCallback</ref> eventCallback) raises(<ref>WebAPIException</ref>);&#13;
43321         &#13;
43322 &#13;
43323         void unsetPackageInfoEventListener() raises(<ref>WebAPIException</ref>);&#13;
43324     &#13;
43325     };&#13;
43326 &#13;
43327 &#13;
43328     [NoInterfaceObject] interface PackageInformation {&#13;
43329 &#13;
43330         readonly attribute <ref>PackageId</ref> id;&#13;
43331 &#13;
43332 &#13;
43333         readonly attribute DOMString name;&#13;
43334 &#13;
43335 &#13;
43336         readonly attribute DOMString iconPath;&#13;
43337 &#13;
43338 &#13;
43339         readonly attribute DOMString version;&#13;
43340 &#13;
43341 &#13;
43342         readonly attribute long totalSize;&#13;
43343 &#13;
43344 &#13;
43345         readonly attribute long dataSize;&#13;
43346 &#13;
43347 &#13;
43348         readonly attribute Date lastModified;&#13;
43349 &#13;
43350 &#13;
43351         readonly attribute DOMString author;&#13;
43352 &#13;
43353 &#13;
43354         readonly attribute DOMString description;&#13;
43355 &#13;
43356 &#13;
43357         readonly attribute <ref>ApplicationId</ref>[] appIds;&#13;
43358 &#13;
43359     };&#13;
43360 &#13;
43361 &#13;
43362     [Callback=FunctionOnly, NoInterfaceObject] interface PackageInformationArraySuccessCallback {&#13;
43363 &#13;
43364 &#13;
43365         void onsuccess(<ref>PackageInformation</ref>[] informationArray);&#13;
43366     };&#13;
43367 &#13;
43368 &#13;
43369     [Callback, NoInterfaceObject] interface PackageProgressCallback {&#13;
43370 &#13;
43371 &#13;
43372         void onprogress(<ref>PackageId</ref> id, short progress);&#13;
43373 &#13;
43374 &#13;
43375         void oncomplete(<ref>PackageId</ref> id);&#13;
43376     };&#13;
43377 &#13;
43378 &#13;
43379     [Callback, NoInterfaceObject] interface PackageInformationEventCallback {&#13;
43380 &#13;
43381 &#13;
43382         void oninstalled(<ref>PackageInformation</ref> info);&#13;
43383 &#13;
43384 &#13;
43385         void onupdated(<ref>PackageInformation</ref> info);&#13;
43386 &#13;
43387 &#13;
43388         void onuninstalled(<ref>PackageId</ref> id);&#13;
43389     };&#13;
43390 &#13;
43391 };</webidl>
43392     <descriptive>
43393         <brief>
43394  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.
43395 For more information on the Package features, see <a href="../../org.tizen.web.appprogramming/html/guide/app_guide/package.htm">Package Guide</a>.
43396         </brief>
43397         <version>
43398  2.1
43399         </version>
43400     </descriptive>
43401     <Typedef name="PackageId" id="::Package::PackageId">
43402       <webidl>    typedef DOMString PackageId;</webidl>
43403       <descriptive>
43404           <brief>
43405  A unique ID for an installed package.
43406           </brief>
43407           <version>
43408  2.1
43409           </version>
43410       </descriptive>
43411       <Type type="DOMString"/>
43412     </Typedef>
43413     <Interface name="PackageManagerObject" id="::Package::PackageManagerObject">
43414       <webidl>    [NoInterfaceObject] interface PackageManagerObject {&#13;
43415         readonly attribute <ref>PackageManager</ref> package;&#13;
43416     };</webidl>
43417       <descriptive>
43418           <brief>
43419  This interface defines what is instantiated by the <em>Tizen </em>object from the Tizen Platform.
43420           </brief>
43421          <description>
43422           <p>
43423 There is a <em>tizen.package </em>object that allows access to Package API functionality.
43424           </p>
43425          </description>
43426           <version>
43427  2.1
43428           </version>
43429       </descriptive>
43430       <ExtendedAttributeList>
43431         <ExtendedAttribute name="NoInterfaceObject">
43432           <webidl>NoInterfaceObject</webidl>
43433         </ExtendedAttribute>
43434       </ExtendedAttributeList>
43435       <Attribute readonly="readonly" name="package" id="::Package::PackageManagerObject::package">
43436         <webidl>        readonly attribute <ref>PackageManager</ref> package;</webidl>
43437         <Type name="PackageManager"/>
43438       </Attribute>
43439     </Interface>
43440     <Implements name1="Tizen" name2="PackageManagerObject">
43441       <webidl>    <ref>Tizen</ref> implements <ref>PackageManagerObject</ref>;</webidl>
43442     </Implements>
43443     <Interface name="PackageManager" id="::Package::PackageManager">
43444       <webidl>    [NoInterfaceObject] interface PackageManager {&#13;
43445 &#13;
43446 &#13;
43447         void install(DOMString path,&#13;
43448                      <ref>PackageProgressCallback</ref> progressCallback,&#13;
43449                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);&#13;
43450 &#13;
43451 &#13;
43452         void uninstall(<ref>PackageId</ref> id, &#13;
43453                        <ref>PackageProgressCallback</ref> progressCallback,&#13;
43454                        optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);&#13;
43455 &#13;
43456 &#13;
43457 &#13;
43458 &#13;
43459         void getPackagesInfo(<ref>PackageInformationArraySuccessCallback</ref> successCallback,&#13;
43460                              optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);&#13;
43461 &#13;
43462 &#13;
43463         <ref>PackageInformation</ref> getPackageInfo(optional <ref>PackageId</ref>? id) raises(<ref>WebAPIException</ref>);&#13;
43464 &#13;
43465 &#13;
43466         void setPackageInfoEventListener(<ref>PackageInformationEventCallback</ref> eventCallback) raises(<ref>WebAPIException</ref>);&#13;
43467         &#13;
43468 &#13;
43469         void unsetPackageInfoEventListener() raises(<ref>WebAPIException</ref>);&#13;
43470     &#13;
43471     };</webidl>
43472       <descriptive>
43473           <brief>
43474  This interface defines the package manager.
43475           </brief>
43476           <version>
43477  2.1
43478           </version>
43479       </descriptive>
43480       <ExtendedAttributeList>
43481         <ExtendedAttribute name="NoInterfaceObject">
43482           <webidl>NoInterfaceObject</webidl>
43483         </ExtendedAttribute>
43484       </ExtendedAttributeList>
43485       <Operation name="install" id="::Package::PackageManager::install">
43486         <webidl>        void install(DOMString path,&#13;
43487                      <ref>PackageProgressCallback</ref> progressCallback,&#13;
43488                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
43489         <descriptive>
43490             <brief>
43491  Installs a package with a specified package path on a device.
43492             </brief>
43493            <description>
43494             <p>
43495 This API provides a way to notify the progress and completion of an installation request through PackageProgressCallback.
43496             </p>
43497             <p>
43498 The <em>ErrorCallback() </em>is launched with these error types:
43499             </p>
43500             <ul>
43501               <li>
43502 NotFoundError - If the package is not found in the specified path.              </li>
43503               <li>
43504 UnknownError - If it is not allowed to install the package by platform or any other platform error occurs.              </li>
43505             </ul>
43506            </description>
43507             <version>
43508  2.1
43509             </version>
43510             <privilegelevel>
43511  platform
43512             </privilegelevel>
43513             <privilege>
43514  http://tizen.org/privilege/packagemanager.install
43515             </privilege>
43516             <remark>
43517  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.
43518             </remark>
43519             <Code> var onInstallation = {
43520       onprogress: function(packageId, percentage) {
43521          console.log(&quot;On installation(&quot; + packageId + &quot;) : progress(&quot; + percentage + &quot;)&quot;);
43522       },
43523       oncomplete: function(packageId) {
43524          console.log(&quot;Installation(&quot; + packageId + &quot;) Complete&quot;);
43525       }
43526  }
43527
43528  var onError = function (err) {
43529       console.log(&quot;Error occurred on installation : &quot; + err.name);
43530  }
43531
43532  // Let's assume that &quot;test.wgt&quot; file is exist in the downloads directory
43533  tizen.filesystem.resolve(&quot;downloads/test.wgt&quot;,
43534      function (file) {
43535          console.log(&quot;file path : &quot; + file.path);
43536          tizen.package.install(file.toURI(), onInstallation, onError);
43537      },
43538      function (err) {
43539          console.log(&quot;Error occurred on resolve : &quot; + err.name);
43540      },
43541      &quot;r&quot;);
43542
43543  </Code>
43544         </descriptive>
43545         <Type type="void"/>
43546         <ArgumentList>
43547           <Argument name="path">
43548             <descriptive>
43549                 <description><p>
43550  The package path to install
43551                 </p></description>
43552             </descriptive>
43553             <Type type="DOMString"/>
43554           </Argument>
43555           <Argument name="progressCallback">
43556             <descriptive>
43557                 <description><p>
43558  The method to invoke when the installation is in progress or has been completed
43559                 </p></description>
43560             </descriptive>
43561             <Type name="PackageProgressCallback"/>
43562           </Argument>
43563           <Argument optional="optional" name="errorCallback">
43564             <descriptive>
43565                 <description><p>
43566  The method to invoke when an error occurs
43567                 </p></description>
43568             </descriptive>
43569             <Type name="ErrorCallback" nullable="nullable"/>
43570           </Argument>
43571         </ArgumentList>
43572         <Raises>
43573           <RaiseException name="WebAPIException">
43574             <descriptive>
43575                 <description><p>
43576  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
43577                 </p></description>
43578                 <description><p>
43579  with error type SecurityError, if the application does not have the privilege to call this method.
43580                 </p></description>
43581             </descriptive>
43582           </RaiseException>
43583         </Raises>
43584       </Operation>
43585       <Operation name="uninstall" id="::Package::PackageManager::uninstall">
43586         <webidl>        void uninstall(<ref>PackageId</ref> id, &#13;
43587                        <ref>PackageProgressCallback</ref> progressCallback,&#13;
43588                        optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
43589         <descriptive>
43590             <brief>
43591  Uninstalls the package with a specified package ID.
43592             </brief>
43593            <description>
43594             <p>
43595 This API provides a way to notify about the progress and completion of an uninstallation request through PackageProgressCallback.
43596             </p>
43597             <p>
43598 The <em>ErrorCallback() </em>is launched with these error types:
43599             </p>
43600             <ul>
43601               <li>
43602 NotFoundError - If the package is not found with specified ID.              </li>
43603               <li>
43604 UnknownError - If it is not allowed to uninstall the package from the platform or any other platform error occurs.              </li>
43605             </ul>
43606            </description>
43607             <version>
43608  2.1
43609             </version>
43610             <privilegelevel>
43611  platform
43612             </privilegelevel>
43613             <privilege>
43614  http://tizen.org/privilege/packagemanager.install
43615             </privilege>
43616             <remark>
43617  Some preloaded packages cannot be uninstalled. In this case, ErrorCallback with UnKnownError type will be launched.
43618             </remark>
43619             <Code> var onUninstallation = {
43620       onprogress: function(packageId, percentage) {
43621          console.log(&quot;On Uninstallation(&quot; + packageId + &quot;) : progress(&quot; + percentage + &quot;)&quot;);
43622       },
43623       oncomplete: function(packageId) {
43624          console.log(&quot;Uninstallation(&quot; + packageId + &quot;) Complete&quot;);
43625       }
43626  };
43627
43628  var onError = function (err) {
43629       console.log(&quot;Error occurred on installation : &quot; + err.name);
43630  };
43631
43632  // Let's assume that the package id to uninstall is &quot;testapp001&quot;
43633  tizen.package.uninstall(&quot;testapp001&quot;, onUninstallation, onError);
43634  </Code>
43635         </descriptive>
43636         <Type type="void"/>
43637         <ArgumentList>
43638           <Argument name="id">
43639             <descriptive>
43640                 <description><p>
43641  The package ID to uninstall
43642                 </p></description>
43643             </descriptive>
43644             <Type name="PackageId"/>
43645           </Argument>
43646           <Argument name="progressCallback">
43647             <descriptive>
43648                 <description><p>
43649  The method to invoke when uninstallation is in progress or has been completed
43650                 </p></description>
43651             </descriptive>
43652             <Type name="PackageProgressCallback"/>
43653           </Argument>
43654           <Argument optional="optional" name="errorCallback">
43655             <descriptive>
43656                 <description><p>
43657  The method to invoke when an error occurs
43658                 </p></description>
43659             </descriptive>
43660             <Type name="ErrorCallback" nullable="nullable"/>
43661           </Argument>
43662         </ArgumentList>
43663         <Raises>
43664           <RaiseException name="WebAPIException">
43665             <descriptive>
43666                 <description><p>
43667  with error type TypeMismatchError, if an input parameter is not compatible with the expected type for that parameter.
43668                 </p></description>
43669                 <description><p>
43670  with error type SecurityError, if the application does not have the privilege to call this method.
43671                 </p></description>
43672             </descriptive>
43673           </RaiseException>
43674         </Raises>
43675       </Operation>
43676       <Operation name="getPackagesInfo" id="::Package::PackageManager::getPackagesInfo">
43677         <webidl>        void getPackagesInfo(<ref>PackageInformationArraySuccessCallback</ref> successCallback,&#13;
43678                              optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
43679         <descriptive>
43680             <brief>
43681  Gets information of the installed packages.
43682             </brief>
43683            <description>
43684             <p>
43685 The result contains the snapshots of the installed packages information.
43686             </p>
43687             <p>
43688 The <em>errorCallback()</em> is launched with this error type:
43689             </p>
43690             <ul>
43691               <li>
43692 UnknownError - If any other platform error occurs.              </li>
43693             </ul>
43694            </description>
43695             <version>
43696  2.1
43697             </version>
43698             <privilegelevel>
43699  public
43700             </privilegelevel>
43701             <privilege>
43702  http://tizen.org/privilege/package.info
43703             </privilege>
43704             <Code> function onListInstalledPackages(packages) {
43705      for (var i = 0; i &#60; packages.length; i++) {
43706          console.log(&quot;Package id[&quot;+i+&quot;] : &quot; +packages[i].id);
43707      }
43708  }
43709
43710  tizen.package.getPackagesInfo(
43711      onListInstalledPackages,
43712      function (err) {console.log(&quot;Can't obtain packages list&quot; + err.name);});
43713  </Code>
43714         </descriptive>
43715         <Type type="void"/>
43716         <ArgumentList>
43717           <Argument name="successCallback">
43718             <descriptive>
43719                 <description><p>
43720  The method to call when an invocation ends successfully
43721                 </p></description>
43722             </descriptive>
43723             <Type name="PackageInformationArraySuccessCallback"/>
43724           </Argument>
43725           <Argument optional="optional" name="errorCallback">
43726             <descriptive>
43727                 <description><p>
43728  The method to call when an error occurs
43729                 </p></description>
43730             </descriptive>
43731             <Type name="ErrorCallback" nullable="nullable"/>
43732           </Argument>
43733         </ArgumentList>
43734         <Raises>
43735           <RaiseException name="WebAPIException">
43736             <descriptive>
43737                 <description><p>
43738  with error type TypeMismatchError, if an input parameter is not compatible with the expected type for that parameter.
43739                 </p></description>
43740                 <description><p>
43741  with error type SecurityError, if the application does not have the privilege to call this method.
43742                 </p></description>
43743             </descriptive>
43744           </RaiseException>
43745         </Raises>
43746       </Operation>
43747       <Operation name="getPackageInfo" id="::Package::PackageManager::getPackageInfo">
43748         <webidl>        <ref>PackageInformation</ref> getPackageInfo(optional <ref>PackageId</ref>? id) raises(<ref>WebAPIException</ref>);</webidl>
43749         <descriptive>
43750             <brief>
43751  Gets information of an installed package.
43752             </brief>
43753            <description>
43754             <p>
43755 If the ID is set to <var>null</var> or not set at all, it returns package information of the current application.
43756 The list of installed packages and their package IDs is obtained using <em>getPackagesInfo()</em>.
43757             </p>
43758            </description>
43759             <version>
43760  2.1
43761             </version>
43762             <privilegelevel>
43763  public
43764             </privilegelevel>
43765             <privilege>
43766  http://tizen.org/privilege/package.info
43767             </privilege>
43768             <Code> var packageInfo = tizen.package.getPackageInfo(null);
43769
43770  console.log(&quot;Current Package ID : &quot; + packageInfo.id);
43771  </Code>
43772         </descriptive>
43773         <Type name="PackageInformation">
43774           <descriptive>
43775               <description><p>
43776  PackageInformation The information of a package
43777               </p></description>
43778           </descriptive>
43779         </Type>
43780         <ArgumentList>
43781           <Argument optional="optional" name="id">
43782             <descriptive>
43783                 <description><p>
43784  A string representing package ID. If the ID is not provided, the package information of the calling application is returned.
43785                 </p></description>
43786             </descriptive>
43787             <Type name="PackageId" nullable="nullable"/>
43788           </Argument>
43789         </ArgumentList>
43790         <Raises>
43791           <RaiseException name="WebAPIException">
43792             <descriptive>
43793                 <description><p>
43794  with error type TypeMismatchError, if an input parameter is not compatible with the expected type for that parameter.
43795                 </p></description>
43796                 <description><p>
43797  with error type SecurityError, if the application does not have the privilege to call this method.
43798                 </p></description>
43799                 <description><p>
43800  with error type NotFoundError, if the package with the specified ID is not found.
43801                 </p></description>
43802                 <description><p>
43803  with error type UnknownError, if the package information cannot be retrieved because of a platform error.
43804                 </p></description>
43805             </descriptive>
43806           </RaiseException>
43807         </Raises>
43808       </Operation>
43809       <Operation name="setPackageInfoEventListener" id="::Package::PackageManager::setPackageInfoEventListener">
43810         <webidl>        void setPackageInfoEventListener(<ref>PackageInformationEventCallback</ref> eventCallback) raises(<ref>WebAPIException</ref>);</webidl>
43811         <descriptive>
43812             <brief>
43813  Sets a listener to receive notifications for any changes made to the list of installed packages.
43814             </brief>
43815            <description>
43816             <p>
43817 This method sets a <em>PackageInformationEventCallback</em> type callback that is triggered when a package is installed, removed or updated.
43818             </p>
43819             <p>
43820 The callback lasts until <em>unsetPackageInfoEventListener()</em> method is called.
43821             </p>
43822            </description>
43823             <version>
43824  2.1
43825             </version>
43826             <privilegelevel>
43827  public
43828             </privilegelevel>
43829             <privilege>
43830  http://tizen.org/privilege/package.info
43831             </privilege>
43832             <Code> var packageEventCallback = {
43833     oninstalled: function(packageInfo) {
43834        console.log('The package ' + packageInfo.name + ' is installed');
43835     },
43836     onupdated: function(packageInfo) {
43837        console.log('The package ' + packageInfo.name + ' is updated');
43838     },
43839     onuninstalled: function(packageId) {
43840        console.log('The package ' + packageId + ' is uninstalled');
43841     }
43842  };
43843
43844  tizen.package.setPackageInfoEventListener(packageEventCallback);
43845  </Code>
43846         </descriptive>
43847         <Type type="void"/>
43848         <ArgumentList>
43849           <Argument name="eventCallback">
43850             <descriptive>
43851                 <description><p>
43852  The method to be called when any change is made to the list of installed packages.
43853                 </p></description>
43854             </descriptive>
43855             <Type name="PackageInformationEventCallback"/>
43856           </Argument>
43857         </ArgumentList>
43858         <Raises>
43859           <RaiseException name="WebAPIException">
43860             <descriptive>
43861                 <description><p>
43862  with error type TypeMismatchError, if an input parameter is not compatible with the expected type for that parameter.
43863                 </p></description>
43864                 <description><p>
43865  with error type SecurityError, if the application does not have the privilege to call this method.
43866                 </p></description>
43867                 <description><p>
43868  with error type UnknownError, if the package list change event cannot be generated because of a platform error.
43869                 </p></description>
43870             </descriptive>
43871           </RaiseException>
43872         </Raises>
43873       </Operation>
43874       <Operation name="unsetPackageInfoEventListener" id="::Package::PackageManager::unsetPackageInfoEventListener">
43875         <webidl>        void unsetPackageInfoEventListener() raises(<ref>WebAPIException</ref>);</webidl>
43876         <descriptive>
43877             <brief>
43878  Unsets the listener to stop receiving package notifications.
43879             </brief>
43880             <version>
43881  2.1
43882             </version>
43883             <privilegelevel>
43884  public
43885             </privilegelevel>
43886             <privilege>
43887  http://tizen.org/privilege/package.info
43888             </privilege>
43889             <Code> tizen.package.unsetPackageInfoEventListener();
43890  </Code>
43891         </descriptive>
43892         <Type type="void"/>
43893         <ArgumentList/>
43894         <Raises>
43895           <RaiseException name="WebAPIException">
43896             <descriptive>
43897                 <description><p>
43898  with error type SecurityError, if the application does not have the privilege to call this method.
43899                 </p></description>
43900                 <description><p>
43901  with error type UnknownError, if the listener removal request fails because of a platform error.
43902                 </p></description>
43903             </descriptive>
43904           </RaiseException>
43905         </Raises>
43906       </Operation>
43907     </Interface>
43908     <Interface name="PackageInformation" id="::Package::PackageInformation">
43909       <webidl>    [NoInterfaceObject] interface PackageInformation {&#13;
43910 &#13;
43911         readonly attribute <ref>PackageId</ref> id;&#13;
43912 &#13;
43913 &#13;
43914         readonly attribute DOMString name;&#13;
43915 &#13;
43916 &#13;
43917         readonly attribute DOMString iconPath;&#13;
43918 &#13;
43919 &#13;
43920         readonly attribute DOMString version;&#13;
43921 &#13;
43922 &#13;
43923         readonly attribute long totalSize;&#13;
43924 &#13;
43925 &#13;
43926         readonly attribute long dataSize;&#13;
43927 &#13;
43928 &#13;
43929         readonly attribute Date lastModified;&#13;
43930 &#13;
43931 &#13;
43932         readonly attribute DOMString author;&#13;
43933 &#13;
43934 &#13;
43935         readonly attribute DOMString description;&#13;
43936 &#13;
43937 &#13;
43938         readonly attribute <ref>ApplicationId</ref>[] appIds;&#13;
43939 &#13;
43940     };</webidl>
43941       <descriptive>
43942           <brief>
43943  This interface defines the general information available to an installed package.
43944           </brief>
43945           <version>
43946  2.1
43947           </version>
43948       </descriptive>
43949       <ExtendedAttributeList>
43950         <ExtendedAttribute name="NoInterfaceObject">
43951           <webidl>NoInterfaceObject</webidl>
43952         </ExtendedAttribute>
43953       </ExtendedAttributeList>
43954       <Attribute readonly="readonly" name="id" id="::Package::PackageInformation::id">
43955         <webidl>        readonly attribute <ref>PackageId</ref> id;</webidl>
43956         <descriptive>
43957             <brief>
43958  An attribute to store the identifier of a package.
43959             </brief>
43960             <version>
43961  2.1
43962             </version>
43963         </descriptive>
43964         <Type name="PackageId"/>
43965       </Attribute>
43966       <Attribute readonly="readonly" name="name" id="::Package::PackageInformation::name">
43967         <webidl>        readonly attribute DOMString name;</webidl>
43968         <descriptive>
43969             <brief>
43970  An attribute to store the package name.
43971             </brief>
43972             <version>
43973  2.1
43974             </version>
43975         </descriptive>
43976         <Type type="DOMString"/>
43977       </Attribute>
43978       <Attribute readonly="readonly" name="iconPath" id="::Package::PackageInformation::iconPath">
43979         <webidl>        readonly attribute DOMString iconPath;</webidl>
43980         <descriptive>
43981             <brief>
43982  An attribute to store the icon path of a package.
43983             </brief>
43984             <version>
43985  2.1
43986             </version>
43987         </descriptive>
43988         <Type type="DOMString"/>
43989       </Attribute>
43990       <Attribute readonly="readonly" name="version" id="::Package::PackageInformation::version">
43991         <webidl>        readonly attribute DOMString version;</webidl>
43992         <descriptive>
43993             <brief>
43994  An attribute to store the package version.
43995             </brief>
43996             <version>
43997  2.1
43998             </version>
43999         </descriptive>
44000         <Type type="DOMString"/>
44001       </Attribute>
44002       <Attribute readonly="readonly" name="totalSize" id="::Package::PackageInformation::totalSize">
44003         <webidl>        readonly attribute long totalSize;</webidl>
44004         <descriptive>
44005             <brief>
44006  An attribute to store the total installed size(package + data) of a package.
44007             </brief>
44008             <version>
44009  2.1
44010             </version>
44011         </descriptive>
44012         <Type type="long"/>
44013       </Attribute>
44014       <Attribute readonly="readonly" name="dataSize" id="::Package::PackageInformation::dataSize">
44015         <webidl>        readonly attribute long dataSize;</webidl>
44016         <descriptive>
44017             <brief>
44018  An attribute to store the current data size of a package.
44019             </brief>
44020             <version>
44021  2.1
44022             </version>
44023         </descriptive>
44024         <Type type="long"/>
44025       </Attribute>
44026       <Attribute readonly="readonly" name="lastModified" id="::Package::PackageInformation::lastModified">
44027         <webidl>        readonly attribute Date lastModified;</webidl>
44028         <descriptive>
44029             <brief>
44030  An attribute to store the latest installed or updated time of a package.
44031             </brief>
44032             <version>
44033  2.1
44034             </version>
44035         </descriptive>
44036         <Type type="Date"/>
44037       </Attribute>
44038       <Attribute readonly="readonly" name="author" id="::Package::PackageInformation::author">
44039         <webidl>        readonly attribute DOMString author;</webidl>
44040         <descriptive>
44041             <brief>
44042  An attribute to store the author of a package.
44043             </brief>
44044             <version>
44045  2.1
44046             </version>
44047         </descriptive>
44048         <Type type="DOMString"/>
44049       </Attribute>
44050       <Attribute readonly="readonly" name="description" id="::Package::PackageInformation::description">
44051         <webidl>        readonly attribute DOMString description;</webidl>
44052         <descriptive>
44053             <brief>
44054  An attribute to store the package description.
44055             </brief>
44056             <version>
44057  2.1
44058             </version>
44059         </descriptive>
44060         <Type type="DOMString"/>
44061       </Attribute>
44062       <Attribute readonly="readonly" name="appIds" id="::Package::PackageInformation::appIds">
44063         <webidl>        readonly attribute <ref>ApplicationId</ref>[] appIds;</webidl>
44064         <descriptive>
44065             <brief>
44066  An attribute to store the application ID list of a package.
44067             </brief>
44068             <version>
44069  2.1
44070             </version>
44071         </descriptive>
44072         <Type type="array">
44073           <Type name="ApplicationId"/>
44074         </Type>
44075       </Attribute>
44076     </Interface>
44077     <Interface name="PackageInformationArraySuccessCallback" id="::Package::PackageInformationArraySuccessCallback">
44078       <webidl>    [Callback=FunctionOnly, NoInterfaceObject] interface PackageInformationArraySuccessCallback {&#13;
44079 &#13;
44080 &#13;
44081         void onsuccess(<ref>PackageInformation</ref>[] informationArray);&#13;
44082     };</webidl>
44083       <descriptive>
44084           <brief>
44085  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.
44086           </brief>
44087          <description>
44088           <p>
44089 It is used in <em>tizen.package.getPackagesInfo()</em>.
44090           </p>
44091          </description>
44092           <version>
44093  2.1
44094           </version>
44095       </descriptive>
44096       <ExtendedAttributeList>
44097         <ExtendedAttribute name="Callback" value="FunctionOnly">
44098           <webidl>Callback</webidl>
44099         </ExtendedAttribute>
44100         <ExtendedAttribute name="NoInterfaceObject">
44101           <webidl> NoInterfaceObject</webidl>
44102         </ExtendedAttribute>
44103       </ExtendedAttributeList>
44104       <Operation name="onsuccess" id="::Package::PackageInformationArraySuccessCallback::onsuccess">
44105         <webidl>        void onsuccess(<ref>PackageInformation</ref>[] informationArray);</webidl>
44106         <descriptive>
44107             <brief>
44108  Called when the asynchronous call completes successfully.
44109             </brief>
44110             <version>
44111  2.1
44112             </version>
44113         </descriptive>
44114         <Type type="void"/>
44115         <ArgumentList>
44116           <Argument name="informationArray">
44117             <descriptive>
44118                 <description><p>
44119  A list of installed packages information.
44120                 </p></description>
44121             </descriptive>
44122             <Type type="array">
44123               <Type name="PackageInformation"/>
44124             </Type>
44125           </Argument>
44126         </ArgumentList>
44127       </Operation>
44128     </Interface>
44129     <Interface name="PackageProgressCallback" id="::Package::PackageProgressCallback">
44130       <webidl>    [Callback, NoInterfaceObject] interface PackageProgressCallback {&#13;
44131 &#13;
44132 &#13;
44133         void onprogress(<ref>PackageId</ref> id, short progress);&#13;
44134 &#13;
44135 &#13;
44136         void oncomplete(<ref>PackageId</ref> id);&#13;
44137     };</webidl>
44138       <descriptive>
44139           <brief>
44140  This callback interface specifies subscriptions for any notification on the progress or completion of requests.
44141           </brief>
44142           <version>
44143  2.1
44144           </version>
44145       </descriptive>
44146       <ExtendedAttributeList>
44147         <ExtendedAttribute name="Callback">
44148           <webidl>Callback</webidl>
44149         </ExtendedAttribute>
44150         <ExtendedAttribute name="NoInterfaceObject">
44151           <webidl> NoInterfaceObject</webidl>
44152         </ExtendedAttribute>
44153       </ExtendedAttributeList>
44154       <Operation name="onprogress" id="::Package::PackageProgressCallback::onprogress">
44155         <webidl>        void onprogress(<ref>PackageId</ref> id, short progress);</webidl>
44156         <descriptive>
44157             <brief>
44158  Called while the request is in progress.
44159             </brief>
44160             <version>
44161  2.1
44162             </version>
44163         </descriptive>
44164         <Type type="void"/>
44165         <ArgumentList>
44166           <Argument name="id">
44167             <descriptive>
44168                 <description><p>
44169  The package ID
44170                 </p></description>
44171             </descriptive>
44172             <Type name="PackageId"/>
44173           </Argument>
44174           <Argument name="progress">
44175             <descriptive>
44176                 <description><p>
44177  The progress in percentage.
44178                 </p></description>
44179             </descriptive>
44180             <Type type="short"/>
44181           </Argument>
44182         </ArgumentList>
44183       </Operation>
44184       <Operation name="oncomplete" id="::Package::PackageProgressCallback::oncomplete">
44185         <webidl>        void oncomplete(<ref>PackageId</ref> id);</webidl>
44186         <descriptive>
44187             <brief>
44188  Called while the request is completed.
44189             </brief>
44190             <version>
44191  2.1
44192             </version>
44193         </descriptive>
44194         <Type type="void"/>
44195         <ArgumentList>
44196           <Argument name="id">
44197             <descriptive>
44198                 <description><p>
44199  The package ID
44200                 </p></description>
44201             </descriptive>
44202             <Type name="PackageId"/>
44203           </Argument>
44204         </ArgumentList>
44205       </Operation>
44206     </Interface>
44207     <Interface name="PackageInformationEventCallback" id="::Package::PackageInformationEventCallback">
44208       <webidl>    [Callback, NoInterfaceObject] interface PackageInformationEventCallback {&#13;
44209 &#13;
44210 &#13;
44211         void oninstalled(<ref>PackageInformation</ref> info);&#13;
44212 &#13;
44213 &#13;
44214         void onupdated(<ref>PackageInformation</ref> info);&#13;
44215 &#13;
44216 &#13;
44217         void onuninstalled(<ref>PackageId</ref> id);&#13;
44218     };</webidl>
44219       <descriptive>
44220           <brief>
44221  This callback interface specifies methods that are invoked when a package is installed, updated, or uninstalled.
44222           </brief>
44223           <version>
44224  2.1
44225           </version>
44226       </descriptive>
44227       <ExtendedAttributeList>
44228         <ExtendedAttribute name="Callback">
44229           <webidl>Callback</webidl>
44230         </ExtendedAttribute>
44231         <ExtendedAttribute name="NoInterfaceObject">
44232           <webidl> NoInterfaceObject</webidl>
44233         </ExtendedAttribute>
44234       </ExtendedAttributeList>
44235       <Operation name="oninstalled" id="::Package::PackageInformationEventCallback::oninstalled">
44236         <webidl>        void oninstalled(<ref>PackageInformation</ref> info);</webidl>
44237         <descriptive>
44238             <brief>
44239  Called when a package is installed.
44240             </brief>
44241             <version>
44242  2.1
44243             </version>
44244         </descriptive>
44245         <Type type="void"/>
44246         <ArgumentList>
44247           <Argument name="info">
44248             <descriptive>
44249                 <description><p>
44250  The information of the installed package
44251                 </p></description>
44252             </descriptive>
44253             <Type name="PackageInformation"/>
44254           </Argument>
44255         </ArgumentList>
44256       </Operation>
44257       <Operation name="onupdated" id="::Package::PackageInformationEventCallback::onupdated">
44258         <webidl>        void onupdated(<ref>PackageInformation</ref> info);</webidl>
44259         <descriptive>
44260             <brief>
44261  Called when a package is updated.
44262             </brief>
44263             <version>
44264  2.1
44265             </version>
44266         </descriptive>
44267         <Type type="void"/>
44268         <ArgumentList>
44269           <Argument name="info">
44270             <descriptive>
44271                 <description><p>
44272  The information of the updated package
44273                 </p></description>
44274             </descriptive>
44275             <Type name="PackageInformation"/>
44276           </Argument>
44277         </ArgumentList>
44278       </Operation>
44279       <Operation name="onuninstalled" id="::Package::PackageInformationEventCallback::onuninstalled">
44280         <webidl>        void onuninstalled(<ref>PackageId</ref> id);</webidl>
44281         <descriptive>
44282             <brief>
44283  Called when a package is uninstalled.
44284             </brief>
44285             <version>
44286  2.1
44287             </version>
44288         </descriptive>
44289         <Type type="void"/>
44290         <ArgumentList>
44291           <Argument name="id">
44292             <descriptive>
44293                 <description><p>
44294  The ID of the uninstalled package
44295                 </p></description>
44296             </descriptive>
44297             <Type name="PackageId"/>
44298           </Argument>
44299         </ArgumentList>
44300       </Operation>
44301     </Interface>
44302   </Module>
44303   <Module name="Power" id="::Power">
44304     <webidl>module Power {
44305
44306     enum PowerResource    { &quot;SCREEN&quot;, &quot;CPU&quot; };
44307
44308     enum PowerScreenState { &quot;SCREEN_OFF&quot;, &quot;SCREEN_DIM&quot;, &quot;SCREEN_NORMAL&quot;, &quot;SCREEN_BRIGHT&quot; };
44309
44310     enum PowerCpuState { &quot;CPU_AWAKE&quot; };
44311
44312     typedef (<ref>PowerScreenState</ref> or <ref>PowerCpuState</ref>) PowerState;
44313
44314     [NoInterfaceObject] interface PowerManagerObject {
44315         readonly attribute <ref>PowerManager</ref> power;
44316     };
44317     <ref>Tizen</ref> implements <ref>PowerManagerObject</ref>;
44318
44319    [NoInterfaceObject] interface PowerManager {
44320        void request(<ref>PowerResource</ref> resource, <ref>PowerState</ref> state) raises(<ref>WebAPIException</ref>);
44321
44322        void release(<ref>PowerResource</ref> resource) raises(<ref>WebAPIException</ref>);
44323
44324        void setScreenStateChangeListener(<ref>ScreenStateChangeCallback</ref> listener) raises(<ref>WebAPIException</ref>);
44325
44326        void unsetScreenStateChangeListener() raises(<ref>WebAPIException</ref>);
44327
44328        double getScreenBrightness() raises(<ref>WebAPIException</ref>);
44329
44330        void setScreenBrightness(double brightness) raises(<ref>WebAPIException</ref>);
44331
44332        boolean isScreenOn() raises(<ref>WebAPIException</ref>);
44333
44334        void restoreScreenBrightness() raises(<ref>WebAPIException</ref>);
44335
44336        void turnScreenOn() raises(<ref>WebAPIException</ref>);
44337
44338        void turnScreenOff() raises(<ref>WebAPIException</ref>);
44339    };
44340
44341    [Callback=FunctionOnly, NoInterfaceObject] interface ScreenStateChangeCallback {
44342        void onchanged(<ref>PowerScreenState</ref> previousState, <ref>PowerScreenState</ref> changedState);
44343    };
44344
44345 };</webidl>
44346     <descriptive>
44347         <brief>
44348  This API provides support for requesting power management related resource states.
44349         </brief>
44350        <description>
44351         <p>
44352 For more information on the Power features, see <a href="../../org.tizen.web.appprogramming/html/guide/sys_guide/power.htm">Power Guide</a>.
44353         </p>
44354        </description>
44355         <version>
44356  2.0
44357         </version>
44358     </descriptive>
44359     <Enum name="PowerResource" id="::Power::PowerResource">
44360       <webidl>    enum PowerResource    { &quot;SCREEN&quot;, &quot;CPU&quot; };</webidl>
44361       <descriptive>
44362           <brief>
44363  An enumerator that defines power resources with values aligned with <em>SystemInfo </em>property values.
44364           </brief>
44365          <description>
44366           <p>
44367 We support screen and cpu resources for now.
44368 Supported power resource states are provided in PowerScreenState and PowerCpuState enums respectively prefixed by the corresponding resource type.
44369           </p>
44370          </description>
44371           <version>
44372  2.0
44373           </version>
44374       </descriptive>
44375       <EnumValue stringvalue="SCREEN">
44376         <webidl> &quot;SCREEN</webidl>
44377       </EnumValue>
44378       <EnumValue stringvalue="CPU">
44379         <webidl> &quot;CPU</webidl>
44380       </EnumValue>
44381     </Enum>
44382     <Enum name="PowerScreenState" id="::Power::PowerScreenState">
44383       <webidl>    enum PowerScreenState { &quot;SCREEN_OFF&quot;, &quot;SCREEN_DIM&quot;, &quot;SCREEN_NORMAL&quot;, &quot;SCREEN_BRIGHT&quot; };</webidl>
44384       <descriptive>
44385           <brief>
44386  An enumerator that indicates the power state for screen resource.
44387           </brief>
44388          <description>
44389           <p>
44390 The supported values are:
44391           </p>
44392           <ul>
44393             <li>
44394 SCREEN_OFF - This screen state cannot be requested but can only be used in the state change callback.            </li>
44395             <li>
44396 SCREEN_DIM - The minimal screen state is set to <em>DIM</em> and device does not change to <em>OFF</em> state automatically.            </li>
44397             <li>
44398 SCREEN_NORMAL - The minimal screen state is set to <em>NORMAL</em> and device does not change to <em>DIM</em> state automatically.            </li>
44399             <li>
44400 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>
44401           </ul>
44402           <p>
44403 <em>DIM</em> state refers to the screen that the backlight is turned off
44404 <em>NORMAL</em> state refers to the default screen brightness that a user has configured for the device.
44405 <em>BRIGHT(Deprecated)</em> state refers to the maximum screen brightness that the device provides.
44406 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.
44407           </p>
44408          </description>
44409           <deprecated>
44410  SCREEN_BRIGHT is deprecated.
44411           </deprecated>
44412           <version>
44413  2.0
44414           </version>
44415       </descriptive>
44416       <EnumValue stringvalue="SCREEN_OFF">
44417         <webidl> &quot;SCREEN_OFF</webidl>
44418       </EnumValue>
44419       <EnumValue stringvalue="SCREEN_DIM">
44420         <webidl> &quot;SCREEN_DIM</webidl>
44421       </EnumValue>
44422       <EnumValue stringvalue="SCREEN_NORMAL">
44423         <webidl> &quot;SCREEN_NORMAL</webidl>
44424       </EnumValue>
44425       <EnumValue stringvalue="SCREEN_BRIGHT">
44426         <webidl> &quot;SCREEN_BRIGHT</webidl>
44427       </EnumValue>
44428     </Enum>
44429     <Enum name="PowerCpuState" id="::Power::PowerCpuState">
44430       <webidl>    enum PowerCpuState { &quot;CPU_AWAKE&quot; };</webidl>
44431       <descriptive>
44432           <brief>
44433  An enumerator that indicates the power state for cpu resource.
44434           </brief>
44435          <description>
44436           <p>
44437 The supported values are:
44438           </p>
44439           <ul>
44440             <li>
44441 CPU_AWAKE - The cpu state is set to be awaken and it does not go to <em>SLEEP</em> state automatically.            </li>
44442           </ul>
44443          </description>
44444           <version>
44445  2.0
44446           </version>
44447       </descriptive>
44448       <EnumValue stringvalue="CPU_AWAKE">
44449         <webidl> &quot;CPU_AWAKE</webidl>
44450       </EnumValue>
44451     </Enum>
44452     <Typedef name="PowerState" id="::Power::PowerState">
44453       <webidl>    typedef (<ref>PowerScreenState</ref> or <ref>PowerCpuState</ref>) PowerState;</webidl>
44454       <descriptive>
44455           <brief>
44456  The supported power states in general.
44457 It can be either a PowerScreenState or a PowerCpuState.
44458           </brief>
44459           <version>
44460  2.0
44461           </version>
44462       </descriptive>
44463       <Type type="union">
44464         <Type name="PowerScreenState"/>
44465         <Type name="PowerCpuState"/>
44466       </Type>
44467     </Typedef>
44468     <Interface name="PowerManagerObject" id="::Power::PowerManagerObject">
44469       <webidl>    [NoInterfaceObject] interface PowerManagerObject {
44470         readonly attribute <ref>PowerManager</ref> power;
44471     };</webidl>
44472       <descriptive>
44473           <brief>
44474  This interface defines what is instantiated by the <em>Tizen</em> object from the Tizen Platform.
44475           </brief>
44476          <description>
44477           <p>
44478 There will be a <em>tizen.power </em>object that allows accessing of a functionality of the Power API.
44479           </p>
44480          </description>
44481           <version>
44482  2.0
44483           </version>
44484       </descriptive>
44485       <ExtendedAttributeList>
44486         <ExtendedAttribute name="NoInterfaceObject">
44487           <webidl>NoInterfaceObject</webidl>
44488         </ExtendedAttribute>
44489       </ExtendedAttributeList>
44490       <Attribute readonly="readonly" name="power" id="::Power::PowerManagerObject::power">
44491         <webidl>        readonly attribute <ref>PowerManager</ref> power;</webidl>
44492         <Type name="PowerManager"/>
44493       </Attribute>
44494     </Interface>
44495     <Implements name1="Tizen" name2="PowerManagerObject">
44496       <webidl>    <ref>Tizen</ref> implements <ref>PowerManagerObject</ref>;</webidl>
44497     </Implements>
44498     <Interface name="PowerManager" id="::Power::PowerManager">
44499       <webidl>   [NoInterfaceObject] interface PowerManager {
44500        void request(<ref>PowerResource</ref> resource, <ref>PowerState</ref> state) raises(<ref>WebAPIException</ref>);
44501
44502        void release(<ref>PowerResource</ref> resource) raises(<ref>WebAPIException</ref>);
44503
44504        void setScreenStateChangeListener(<ref>ScreenStateChangeCallback</ref> listener) raises(<ref>WebAPIException</ref>);
44505
44506        void unsetScreenStateChangeListener() raises(<ref>WebAPIException</ref>);
44507
44508        double getScreenBrightness() raises(<ref>WebAPIException</ref>);
44509
44510        void setScreenBrightness(double brightness) raises(<ref>WebAPIException</ref>);
44511
44512        boolean isScreenOn() raises(<ref>WebAPIException</ref>);
44513
44514        void restoreScreenBrightness() raises(<ref>WebAPIException</ref>);
44515
44516        void turnScreenOn() raises(<ref>WebAPIException</ref>);
44517
44518        void turnScreenOff() raises(<ref>WebAPIException</ref>);
44519    };</webidl>
44520       <descriptive>
44521           <brief>
44522  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.
44523           </brief>
44524           <version>
44525  2.0
44526           </version>
44527       </descriptive>
44528       <ExtendedAttributeList>
44529         <ExtendedAttribute name="NoInterfaceObject">
44530           <webidl>NoInterfaceObject</webidl>
44531         </ExtendedAttribute>
44532       </ExtendedAttributeList>
44533       <Operation name="request" id="::Power::PowerManager::request">
44534         <webidl>       void request(<ref>PowerResource</ref> resource, <ref>PowerState</ref> state) raises(<ref>WebAPIException</ref>);</webidl>
44535         <descriptive>
44536             <brief>
44537  Requests the minimum-state for a power resource.
44538             </brief>
44539             <version>
44540  2.0
44541             </version>
44542             <privilegelevel>
44543  public
44544             </privilegelevel>
44545             <privilege>
44546  http://tizen.org/privilege/power
44547             </privilege>
44548             <Code> tizen.power.request(&quot;SCREEN&quot;, &quot;SCREEN_NORMAL&quot;);
44549  </Code>
44550         </descriptive>
44551         <Type type="void"/>
44552         <ArgumentList>
44553           <Argument name="resource">
44554             <descriptive>
44555                 <description><p>
44556  The power resource for which the request is made.
44557                 </p></description>
44558             </descriptive>
44559             <Type name="PowerResource"/>
44560           </Argument>
44561           <Argument name="state">
44562             <descriptive>
44563                 <description><p>
44564  The minimal power state in which the power resource is desired to be.
44565                 </p></description>
44566             </descriptive>
44567             <Type name="PowerState"/>
44568           </Argument>
44569         </ArgumentList>
44570         <Raises>
44571           <RaiseException name="WebAPIException">
44572             <descriptive>
44573                 <description><p>
44574  with error type TypeMismatchError, if the input parameter is not
44575 compatible with the expected type.
44576                 </p></description>
44577                 <description><p>
44578  with error type NotSupportedError, if this feature is not supported.
44579                 </p></description>
44580                 <description><p>
44581  with error type InvalidValuesError, if any of the input
44582 parameters contain an invalid value.
44583                 </p></description>
44584                 <description><p>
44585  with error type SecurityError, if the application does not have the privilege to call this method.
44586                 </p></description>
44587                 <description><p>
44588  with error type UnknownError in any other error case.
44589                 </p></description>
44590             </descriptive>
44591           </RaiseException>
44592         </Raises>
44593       </Operation>
44594       <Operation name="release" id="::Power::PowerManager::release">
44595         <webidl>       void release(<ref>PowerResource</ref> resource) raises(<ref>WebAPIException</ref>);</webidl>
44596         <descriptive>
44597             <brief>
44598  Releases the power state request for the given resource.
44599             </brief>
44600             <version>
44601  2.0
44602             </version>
44603             <Code> // Release SCREEN resource.
44604  tizen.power.release(&quot;SCREEN&quot;);
44605  </Code>
44606         </descriptive>
44607         <Type type="void"/>
44608         <ArgumentList>
44609           <Argument name="resource">
44610             <descriptive>
44611                 <description><p>
44612  The resource for which requests are to be removed.
44613                 </p></description>
44614             </descriptive>
44615             <Type name="PowerResource"/>
44616           </Argument>
44617         </ArgumentList>
44618         <Raises>
44619           <RaiseException name="WebAPIException">
44620             <descriptive>
44621                 <description><p>
44622  with error type TypeMismatchError, if the input parameter is not
44623 compatible with the expected type.
44624                 </p></description>
44625                 <description><p>
44626  with error type NotSupportedError, if this feature is not supported.
44627                 </p></description>
44628                 <description><p>
44629  with error type InvalidValuesError, if any of the input
44630 parameters contain an invalid value.
44631                 </p></description>
44632                 <description><p>
44633  with error type UnknownError in any other error case.
44634                 </p></description>
44635             </descriptive>
44636           </RaiseException>
44637         </Raises>
44638       </Operation>
44639       <Operation name="setScreenStateChangeListener" id="::Power::PowerManager::setScreenStateChangeListener">
44640         <webidl>       void setScreenStateChangeListener(<ref>ScreenStateChangeCallback</ref> listener) raises(<ref>WebAPIException</ref>);</webidl>
44641         <descriptive>
44642             <brief>
44643  Sets the screen state change callback and monitors its state changes.
44644             </brief>
44645             <version>
44646  2.0
44647             </version>
44648             <Code> function onScreenStateChanged(previousState, changedState) {
44649    console.log(&quot;Screen state changed from &quot; + previousState + &quot; to &quot; + changedState);
44650  }
44651
44652  // Set the screen state change listener.
44653  tizen.power.setScreenStateChangeListener(onScreenStateChanged);
44654  </Code>
44655         </descriptive>
44656         <Type type="void"/>
44657         <ArgumentList>
44658           <Argument name="listener">
44659             <descriptive>
44660                 <description><p>
44661  The screen state change callback.
44662                 </p></description>
44663             </descriptive>
44664             <Type name="ScreenStateChangeCallback"/>
44665           </Argument>
44666         </ArgumentList>
44667         <Raises>
44668           <RaiseException name="WebAPIException">
44669             <descriptive>
44670                 <description><p>
44671  with error type TypeMismatchError, if the input parameter is not
44672 compatible with the expected type.
44673                 </p></description>
44674                 <description><p>
44675  with error type NotSupportedError, if this feature is not supported.
44676                 </p></description>
44677                 <description><p>
44678  with error type InvalidValuesError, if any of the input
44679 parameters contain an invalid value.
44680                 </p></description>
44681                 <description><p>
44682  with error type UnknownError in any other error case.
44683                 </p></description>
44684             </descriptive>
44685           </RaiseException>
44686         </Raises>
44687       </Operation>
44688       <Operation name="unsetScreenStateChangeListener" id="::Power::PowerManager::unsetScreenStateChangeListener">
44689         <webidl>       void unsetScreenStateChangeListener() raises(<ref>WebAPIException</ref>);</webidl>
44690         <descriptive>
44691             <brief>
44692  Unsets the screen state change callback and stop monitoring it.
44693             </brief>
44694             <version>
44695  2.0
44696             </version>
44697             <Code> // Unset the screen state change listener.
44698  tizen.power.unsetScreenStateChangeListener();
44699  </Code>
44700         </descriptive>
44701         <Type type="void"/>
44702         <ArgumentList/>
44703         <Raises>
44704           <RaiseException name="WebAPIException">
44705             <descriptive>
44706                 <description><p>
44707  with error type NotSupportedError, if this feature is not supported.
44708                 </p></description>
44709                 <description><p>
44710  with error type UnknownError in any other error case.
44711                 </p></description>
44712             </descriptive>
44713           </RaiseException>
44714         </Raises>
44715       </Operation>
44716       <Operation name="getScreenBrightness" id="::Power::PowerManager::getScreenBrightness">
44717         <webidl>       double getScreenBrightness() raises(<ref>WebAPIException</ref>);</webidl>
44718         <descriptive>
44719             <brief>
44720  Gets the screen brightness level of an application, from 0 to 1.
44721             </brief>
44722             <version>
44723  2.0
44724             </version>
44725             <Code> // Get the current screen brightness value.
44726  var screenBrightness = tizen.power.getScreenBrightness();
44727  </Code>
44728         </descriptive>
44729         <Type type="double">
44730           <descriptive>
44731               <description><p>
44732  double Current screen brightness value.
44733               </p></description>
44734           </descriptive>
44735         </Type>
44736         <ArgumentList/>
44737         <Raises>
44738           <RaiseException name="WebAPIException">
44739             <descriptive>
44740                 <description><p>
44741  with error type NotSupportedError, if this feature is not supported.
44742                 </p></description>
44743                 <description><p>
44744  with error type UnknownError in any other error case.
44745                 </p></description>
44746             </descriptive>
44747           </RaiseException>
44748         </Raises>
44749       </Operation>
44750       <Operation name="setScreenBrightness" id="::Power::PowerManager::setScreenBrightness">
44751         <webidl>       void setScreenBrightness(double brightness) raises(<ref>WebAPIException</ref>);</webidl>
44752         <descriptive>
44753             <brief>
44754  Sets the screen brightness level for an application, from 0 to 1.
44755             </brief>
44756            <description>
44757             <p>
44758 An approximation is made for best effort when the given value is not exactly applicable by the hardware or system.
44759             </p>
44760            </description>
44761             <version>
44762  2.0
44763             </version>
44764             <privilegelevel>
44765  public
44766             </privilegelevel>
44767             <privilege>
44768  http://tizen.org/privilege/power
44769             </privilege>
44770             <Code> // Set the screen brightness value for the application.
44771  tizen.power.setScreenBrightness(1);
44772  </Code>
44773         </descriptive>
44774         <Type type="void"/>
44775         <ArgumentList>
44776           <Argument name="brightness">
44777             <descriptive>
44778                 <description><p>
44779  The screen brightness value to set.
44780                 </p></description>
44781             </descriptive>
44782             <Type type="double"/>
44783           </Argument>
44784         </ArgumentList>
44785         <Raises>
44786           <RaiseException name="WebAPIException">
44787             <descriptive>
44788                 <description><p>
44789  with error type TypeMismatchError, if the input parameter is not
44790 compatible with the expected type.
44791                 </p></description>
44792                 <description><p>
44793  with error type NotSupportedError, if this feature is not supported.
44794                 </p></description>
44795                 <description><p>
44796  with error type InvalidValuesError, if any of the input
44797 parameters contain an invalid value.
44798                 </p></description>
44799                 <description><p>
44800  with error type SecurityError, if the application does not have the privilege to call this method.
44801                 </p></description>
44802                 <description><p>
44803  with error type UnknownError in any other error case.
44804                 </p></description>
44805             </descriptive>
44806           </RaiseException>
44807         </Raises>
44808       </Operation>
44809       <Operation name="isScreenOn" id="::Power::PowerManager::isScreenOn">
44810         <webidl>       boolean isScreenOn() raises(<ref>WebAPIException</ref>);</webidl>
44811         <descriptive>
44812             <brief>
44813  Returns <var>true</var> if the screen is on.
44814             </brief>
44815             <version>
44816  2.0
44817             </version>
44818             <Code> // Check whether the screen is on or off.
44819  var isScreenOn = tizen.power.isScreenOn();
44820  </Code>
44821         </descriptive>
44822         <Type type="boolean">
44823           <descriptive>
44824               <description><p>
44825  boolean true if screen is on.
44826               </p></description>
44827           </descriptive>
44828         </Type>
44829         <ArgumentList/>
44830         <Raises>
44831           <RaiseException name="WebAPIException">
44832             <descriptive>
44833                 <description><p>
44834  with error type NotSupportedError, if this feature is not supported.
44835                 </p></description>
44836                 <description><p>
44837  with error type UnknownError in any other error case.
44838                 </p></description>
44839             </descriptive>
44840           </RaiseException>
44841         </Raises>
44842       </Operation>
44843       <Operation name="restoreScreenBrightness" id="::Power::PowerManager::restoreScreenBrightness">
44844         <webidl>       void restoreScreenBrightness() raises(<ref>WebAPIException</ref>);</webidl>
44845         <descriptive>
44846             <brief>
44847  Restores the screen brightness to the system default setting value.
44848             </brief>
44849             <version>
44850  2.0
44851             </version>
44852             <Code> // Restore the screen brightness value to the system default setting value.
44853  tizen.power.restoreScreenBrightness();
44854  </Code>
44855         </descriptive>
44856         <Type type="void"/>
44857         <ArgumentList/>
44858         <Raises>
44859           <RaiseException name="WebAPIException">
44860             <descriptive>
44861                 <description><p>
44862  with error type NotSupportedError, if this feature is not supported.
44863                 </p></description>
44864                 <description><p>
44865  with error type UnknownError in any other error case.
44866                 </p></description>
44867             </descriptive>
44868           </RaiseException>
44869         </Raises>
44870       </Operation>
44871       <Operation name="turnScreenOn" id="::Power::PowerManager::turnScreenOn">
44872         <webidl>       void turnScreenOn() raises(<ref>WebAPIException</ref>);</webidl>
44873         <descriptive>
44874             <brief>
44875  Turns on the screen.
44876             </brief>
44877            <description>
44878             <p>
44879 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.
44880             </p>
44881            </description>
44882             <version>
44883  2.0
44884             </version>
44885             <privilegelevel>
44886  public
44887             </privilegelevel>
44888             <privilege>
44889  http://tizen.org/privilege/power
44890             </privilege>
44891             <Code> // Turn on the screen.
44892  tizen.power.turnScreenOn();
44893  </Code>
44894         </descriptive>
44895         <Type type="void"/>
44896         <ArgumentList/>
44897         <Raises>
44898           <RaiseException name="WebAPIException">
44899             <descriptive>
44900                 <description><p>
44901  with error type NotSupportedError, if this feature is not supported.
44902                 </p></description>
44903                 <description><p>
44904  with error type SecurityError, if the application does not have the privilege to call this method.
44905                 </p></description>
44906                 <description><p>
44907  with error type UnknownError in any other error case.
44908                 </p></description>
44909             </descriptive>
44910           </RaiseException>
44911         </Raises>
44912       </Operation>
44913       <Operation name="turnScreenOff" id="::Power::PowerManager::turnScreenOff">
44914         <webidl>       void turnScreenOff() raises(<ref>WebAPIException</ref>);</webidl>
44915         <descriptive>
44916             <brief>
44917  Turns off the screen.
44918             </brief>
44919            <description>
44920             <p>
44921 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
44922             </p>
44923            </description>
44924             <version>
44925  2.0
44926             </version>
44927             <privilegelevel>
44928  public
44929             </privilegelevel>
44930             <privilege>
44931  http://tizen.org/privilege/power
44932             </privilege>
44933             <Code> // Turn off the screen.
44934  tizen.power.turnScreenOff();
44935  </Code>
44936         </descriptive>
44937         <Type type="void"/>
44938         <ArgumentList/>
44939         <Raises>
44940           <RaiseException name="WebAPIException">
44941             <descriptive>
44942                 <description><p>
44943  with error type NotSupportedError, if this feature is not supported.
44944                 </p></description>
44945                 <description><p>
44946  with error type SecurityError, if the application does not have the privilege to call this method.
44947                 </p></description>
44948                 <description><p>
44949  with error type UnknownError in any other error case.
44950                 </p></description>
44951             </descriptive>
44952           </RaiseException>
44953         </Raises>
44954       </Operation>
44955     </Interface>
44956     <Interface name="ScreenStateChangeCallback" id="::Power::ScreenStateChangeCallback">
44957       <webidl>   [Callback=FunctionOnly, NoInterfaceObject] interface ScreenStateChangeCallback {
44958        void onchanged(<ref>PowerScreenState</ref> previousState, <ref>PowerScreenState</ref> changedState);
44959    };</webidl>
44960       <descriptive>
44961           <brief>
44962  This callback interface defines notification for the screen state changes.
44963           </brief>
44964           <version>
44965  2.0
44966           </version>
44967       </descriptive>
44968       <ExtendedAttributeList>
44969         <ExtendedAttribute name="Callback" value="FunctionOnly">
44970           <webidl>Callback</webidl>
44971         </ExtendedAttribute>
44972         <ExtendedAttribute name="NoInterfaceObject">
44973           <webidl> NoInterfaceObject</webidl>
44974         </ExtendedAttribute>
44975       </ExtendedAttributeList>
44976       <Operation name="onchanged" id="::Power::ScreenStateChangeCallback::onchanged">
44977         <webidl>       void onchanged(<ref>PowerScreenState</ref> previousState, <ref>PowerScreenState</ref> changedState);</webidl>
44978         <descriptive>
44979             <brief>
44980  Called on screen state change.
44981             </brief>
44982             <version>
44983  2.0
44984             </version>
44985         </descriptive>
44986         <Type type="void"/>
44987         <ArgumentList>
44988           <Argument name="previousState">
44989             <descriptive>
44990                 <description><p>
44991  The previous screen state.
44992                 </p></description>
44993             </descriptive>
44994             <Type name="PowerScreenState"/>
44995           </Argument>
44996           <Argument name="changedState">
44997             <descriptive>
44998                 <description><p>
44999  The changed screen state.
45000                 </p></description>
45001             </descriptive>
45002             <Type name="PowerScreenState"/>
45003           </Argument>
45004         </ArgumentList>
45005       </Operation>
45006     </Interface>
45007   </Module>
45008   <Module name="Push" id="::Push">
45009     <webidl>module Push {&#13;
45010 &#13;
45011     typedef DOMString PushRegistrationId;&#13;
45012 &#13;
45013 &#13;
45014     [NoInterfaceObject] interface PushManagerObject {&#13;
45015         readonly attribute <ref>PushManager</ref> push;&#13;
45016     };&#13;
45017     <ref>Tizen</ref> implements <ref>PushManagerObject</ref>;&#13;
45018 &#13;
45019 &#13;
45020     [NoInterfaceObject] interface PushManager {&#13;
45021 &#13;
45022       void registerService(<ref>ApplicationControl</ref> appControl, <ref>PushRegisterSuccessCallback</ref> successCallback,&#13;
45023                   optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);&#13;
45024 &#13;
45025 &#13;
45026       void unregisterService(optional <ref>SuccessCallback</ref>? successCallback,&#13;
45027                     optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);&#13;
45028 &#13;
45029 &#13;
45030       void connectService(<ref>PushNotificationCallback</ref> notificationCallback) raises(<ref>WebAPIException</ref>);&#13;
45031 &#13;
45032 &#13;
45033       void disconnectService() raises(<ref>WebAPIException</ref>);&#13;
45034 &#13;
45035 &#13;
45036       <ref>PushRegistrationId</ref> getRegistrationId() raises(<ref>WebAPIException</ref>);&#13;
45037     };&#13;
45038 &#13;
45039 &#13;
45040     [NoInterfaceObject] interface PushMessage {&#13;
45041 &#13;
45042         readonly attribute DOMString appData;&#13;
45043 &#13;
45044 &#13;
45045         readonly attribute DOMString alertMessage;&#13;
45046 &#13;
45047 &#13;
45048         readonly attribute Date date;&#13;
45049     };&#13;
45050 &#13;
45051 &#13;
45052     [Callback=FunctionOnly, NoInterfaceObject]&#13;
45053     interface PushRegisterSuccessCallback {&#13;
45054 &#13;
45055         void onsuccess(<ref>PushRegistrationId</ref> id);&#13;
45056     };&#13;
45057 &#13;
45058 &#13;
45059     [Callback=FunctionOnly, NoInterfaceObject]&#13;
45060     interface PushNotificationCallback {&#13;
45061 &#13;
45062         void onsuccess(<ref>PushMessage</ref> message);&#13;
45063     };&#13;
45064 };</webidl>
45065     <descriptive>
45066         <brief>
45067  This API provides the functionality for receiving push notifications
45068 from Tizen push server.
45069 The push service is a client daemon that maintains a permanent connection
45070 between your device and Tizen push server in order to process your registration
45071 and deregistration requests, deliver push notifications to applications on a device.
45072         </brief>
45073        <description>
45074         <p>
45075 If the application is connected, the push service passes the notification data over
45076 the connection. Otherwise, the push service posts UI notification with the data.
45077 It will be delivered when a user launches the application by selecting the posting.
45078         </p>
45079         <p>
45080 To receive push notifications, follow the steps below:
45081         </p>
45082         <ul>
45083           <li>
45084 Get administrative permission for an application on your device          </li>
45085           <li>
45086 Register the application          </li>
45087           <li>
45088 Connect to the push service          </li>
45089           <li>
45090 Get notification data          </li>
45091         </ul>
45092         <p>
45093 For more information on the Push features, see <a href="../../org.tizen.web.appprogramming/html/guide/communication_guide/push.htm">Push Guide</a>.
45094         </p>
45095        </description>
45096         <version>
45097  2.1
45098         </version>
45099         <def-api-feature identifier="http://tizen.org/feature/network.push">
45100           <descriptive>
45101            <description>
45102             <p>
45103 To guarantee this application running on a device with Push feature, define below in the config file:
45104             </p>
45105            </description>
45106           </descriptive>
45107         </def-api-feature>
45108     </descriptive>
45109     <Typedef name="PushRegistrationId" id="::Push::PushRegistrationId">
45110       <webidl>    typedef DOMString PushRegistrationId;</webidl>
45111       <descriptive>
45112           <brief>
45113  A push service registration identifier.
45114           </brief>
45115           <version>
45116  2.1
45117           </version>
45118       </descriptive>
45119       <Type type="DOMString"/>
45120     </Typedef>
45121     <Interface name="PushManagerObject" id="::Push::PushManagerObject">
45122       <webidl>    [NoInterfaceObject] interface PushManagerObject {&#13;
45123         readonly attribute <ref>PushManager</ref> push;&#13;
45124     };</webidl>
45125       <descriptive>
45126           <brief>
45127  This interface defines what is instantiated by the <em>Tizen </em>object from the Tizen Platform.
45128           </brief>
45129          <description>
45130           <p>
45131 There will be a <em>tizen.push </em>object that allows access to the functionality of the Push API.
45132           </p>
45133          </description>
45134           <version>
45135  2.1
45136           </version>
45137       </descriptive>
45138       <ExtendedAttributeList>
45139         <ExtendedAttribute name="NoInterfaceObject">
45140           <webidl>NoInterfaceObject</webidl>
45141         </ExtendedAttribute>
45142       </ExtendedAttributeList>
45143       <Attribute readonly="readonly" name="push" id="::Push::PushManagerObject::push">
45144         <webidl>        readonly attribute <ref>PushManager</ref> push;</webidl>
45145         <Type name="PushManager"/>
45146       </Attribute>
45147     </Interface>
45148     <Implements name1="Tizen" name2="PushManagerObject">
45149       <webidl>    <ref>Tizen</ref> implements <ref>PushManagerObject</ref>;</webidl>
45150     </Implements>
45151     <Interface name="PushManager" id="::Push::PushManager">
45152       <webidl>    [NoInterfaceObject] interface PushManager {&#13;
45153 &#13;
45154       void registerService(<ref>ApplicationControl</ref> appControl, <ref>PushRegisterSuccessCallback</ref> successCallback,&#13;
45155                   optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);&#13;
45156 &#13;
45157 &#13;
45158       void unregisterService(optional <ref>SuccessCallback</ref>? successCallback,&#13;
45159                     optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);&#13;
45160 &#13;
45161 &#13;
45162       void connectService(<ref>PushNotificationCallback</ref> notificationCallback) raises(<ref>WebAPIException</ref>);&#13;
45163 &#13;
45164 &#13;
45165       void disconnectService() raises(<ref>WebAPIException</ref>);&#13;
45166 &#13;
45167 &#13;
45168       <ref>PushRegistrationId</ref> getRegistrationId() raises(<ref>WebAPIException</ref>);&#13;
45169     };</webidl>
45170       <descriptive>
45171           <brief>
45172  This interface provides methods to manage push registration and notification.
45173           </brief>
45174           <version>
45175  2.1
45176           </version>
45177       </descriptive>
45178       <ExtendedAttributeList>
45179         <ExtendedAttribute name="NoInterfaceObject">
45180           <webidl>NoInterfaceObject</webidl>
45181         </ExtendedAttribute>
45182       </ExtendedAttributeList>
45183       <Operation name="registerService" id="::Push::PushManager::registerService">
45184         <webidl>      void registerService(<ref>ApplicationControl</ref> appControl, <ref>PushRegisterSuccessCallback</ref> successCallback,&#13;
45185                   optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
45186         <descriptive>
45187             <brief>
45188  Registers an application to the Tizen push server.
45189             </brief>
45190             <remark>
45191  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>.
45192             </remark>
45193            <description>
45194             <p>
45195 The <em>ErrorCallback()</em> is launched with these error types:
45196             </p>
45197             <ul>
45198               <li>
45199 InvalidValuesError - If any of the input parameters contain an invalid value.              </li>
45200               <li>
45201 UnknownError - If any other error occurs.              </li>
45202             </ul>
45203            </description>
45204             <version>
45205  2.1
45206             </version>
45207             <privilegelevel>
45208  public
45209             </privilegelevel>
45210             <privilege>
45211  http://tizen.org/privilege/push
45212             </privilege>
45213             <Code> // Defines the data to be used when this process is launched by notification service.
45214  var service = new tizen.ApplicationControl(&quot;http://tizen.org/appcontrol/operation/push_test&quot;);
45215
45216  // Defines the error callback.
45217  function errorCallback(response) {
45218    console.log( 'The following error occurred: ' +  response.name);
45219  }
45220
45221  // Defines the registration success callback
45222  function registerSuccessCallback(id) {
45223    console.log(&quot;Registration succeeded with id: &quot; + id);
45224  }
45225
45226  // Requests registration.
45227  tizen.push.registerService(service, registerSuccessCallback, errorCallback);
45228  </Code>
45229         </descriptive>
45230         <Type type="void"/>
45231         <ArgumentList>
45232           <Argument name="appControl">
45233             <descriptive>
45234                 <description><p>
45235  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>.
45236                 </p></description>
45237             </descriptive>
45238             <Type name="ApplicationControl"/>
45239           </Argument>
45240           <Argument name="successCallback">
45241             <descriptive>
45242                 <description><p>
45243  The method to be called when the registration request succeeds.
45244                 </p></description>
45245             </descriptive>
45246             <Type name="PushRegisterSuccessCallback"/>
45247           </Argument>
45248           <Argument optional="optional" name="errorCallback">
45249             <descriptive>
45250                 <description><p>
45251  The method to be called when the registration request fails.
45252                 </p></description>
45253             </descriptive>
45254             <Type name="ErrorCallback" nullable="nullable"/>
45255           </Argument>
45256         </ArgumentList>
45257         <Raises>
45258           <RaiseException name="WebAPIException">
45259             <descriptive>
45260                 <description><p>
45261  with error type TypeMismatchError, if any input parameter
45262 is not compatible with the expected type for that parameter.
45263                 </p></description>
45264                 <description><p>
45265  with error type InvalidValuesError, if any input parameters
45266 does not contain a valid value.
45267                 </p></description>
45268                 <description><p>
45269  with error type SecurityError, if the application does not have the privilege to call this method.
45270                 </p></description>
45271                 <description><p>
45272  with error type NotSupportedError, if this feature is not supported.
45273                 </p></description>
45274                 <description><p>
45275  with error type UnknownError, if any other error occurs.
45276                 </p></description>
45277             </descriptive>
45278           </RaiseException>
45279         </Raises>
45280       </Operation>
45281       <Operation name="unregisterService" id="::Push::PushManager::unregisterService">
45282         <webidl>      void unregisterService(optional <ref>SuccessCallback</ref>? successCallback,&#13;
45283                     optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
45284         <descriptive>
45285             <brief>
45286  Unregisters an application from the Tizen push server.
45287             </brief>
45288            <description>
45289             <p>
45290 The <em>ErrorCallback()</em> is launched with these error types:
45291             </p>
45292             <ul>
45293               <li>
45294 UnknownError - If an unknown error occurs.              </li>
45295             </ul>
45296            </description>
45297             <version>
45298  2.1
45299             </version>
45300             <privilegelevel>
45301  public
45302             </privilegelevel>
45303             <privilege>
45304  http://tizen.org/privilege/push
45305             </privilege>
45306             <Code> // Defines the error callback
45307  function errorCallback(response) {
45308    console.log( 'The following error occurred: ' +  response.name);
45309  }
45310
45311  // Defines the unregistration success callback
45312  function unregisterSuccessCallback() {
45313    console.log(&quot;Unregistration succeeded.&quot;);
45314  }
45315
45316  // Requests unregistration
45317  tizen.push.unregisterService(unregisterSuccessCallback, errorCallback);
45318  </Code>
45319         </descriptive>
45320         <Type type="void"/>
45321         <ArgumentList>
45322           <Argument optional="optional" name="successCallback">
45323             <descriptive>
45324                 <description><p>
45325  The method to be called when the request is successfully unregistered.
45326                 </p></description>
45327             </descriptive>
45328             <Type name="SuccessCallback" nullable="nullable"/>
45329           </Argument>
45330           <Argument optional="optional" name="errorCallback">
45331             <descriptive>
45332                 <description><p>
45333  The method to be called when the unregistration request fails.
45334                 </p></description>
45335             </descriptive>
45336             <Type name="ErrorCallback" nullable="nullable"/>
45337           </Argument>
45338         </ArgumentList>
45339         <Raises>
45340           <RaiseException name="WebAPIException">
45341             <descriptive>
45342                 <description><p>
45343  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
45344                 </p></description>
45345                 <description><p>
45346  with error type InvalidValuesError, if any input parameters does not contain a valid value.
45347                 </p></description>
45348                 <description><p>
45349  with error type SecurityError, if the application does not have the privilege to call this method.
45350                 </p></description>
45351                 <description><p>
45352  with error type NotSupportedError, if this feature is not supported.
45353                 </p></description>
45354                 <description><p>
45355  with error type UnknownError, if any other error occurs.
45356                 </p></description>
45357             </descriptive>
45358           </RaiseException>
45359         </Raises>
45360       </Operation>
45361       <Operation name="connectService" id="::Push::PushManager::connectService">
45362         <webidl>      void connectService(<ref>PushNotificationCallback</ref> notificationCallback) raises(<ref>WebAPIException</ref>);</webidl>
45363         <descriptive>
45364             <brief>
45365  Connects to the push service and receives push notifications.
45366             </brief>
45367             <version>
45368  2.1
45369             </version>
45370             <privilegelevel>
45371  public
45372             </privilegelevel>
45373             <privilege>
45374  http://tizen.org/privilege/push
45375             </privilege>
45376             <Code> // Defines the connect success callback
45377  function notificationCallback(noti) {
45378    console.log(&quot;Notification received with alert message: &quot; + noti.alertMessage);
45379  }
45380
45381  // Requests for push service connection
45382  tizen.push.connectService(notificationCallback, errorCallback);
45383  </Code>
45384         </descriptive>
45385         <Type type="void"/>
45386         <ArgumentList>
45387           <Argument name="notificationCallback">
45388             <descriptive>
45389                 <description><p>
45390  The method to be called when the notification message arrives.
45391                 </p></description>
45392             </descriptive>
45393             <Type name="PushNotificationCallback"/>
45394           </Argument>
45395         </ArgumentList>
45396         <Raises>
45397           <RaiseException name="WebAPIException">
45398             <descriptive>
45399                 <description><p>
45400  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
45401                 </p></description>
45402                 <description><p>
45403  with error type InvalidValuesError, if any input parameters does not contain a valid value.
45404                 </p></description>
45405                 <description><p>
45406  with error type SecurityError, if the application does not have the privilege to call this method.
45407                 </p></description>
45408                 <description><p>
45409  with error type NotSupportedError, if this feature is not supported.
45410                 </p></description>
45411                 <description><p>
45412  with error type UnknownError, if any other error occurs.
45413                 </p></description>
45414             </descriptive>
45415           </RaiseException>
45416         </Raises>
45417       </Operation>
45418       <Operation name="disconnectService" id="::Push::PushManager::disconnectService">
45419         <webidl>      void disconnectService() raises(<ref>WebAPIException</ref>);</webidl>
45420         <descriptive>
45421             <brief>
45422  Disconnects to the push service and stop receiving push notifications.
45423             </brief>
45424             <version>
45425  2.1
45426             </version>
45427             <privilegelevel>
45428  public
45429             </privilegelevel>
45430             <privilege>
45431  http://tizen.org/privilege/push
45432             </privilege>
45433             <Code> // Requests disconnection
45434  tizen.push.disconnectService();
45435  </Code>
45436         </descriptive>
45437         <Type type="void"/>
45438         <ArgumentList/>
45439         <Raises>
45440           <RaiseException name="WebAPIException">
45441             <descriptive>
45442                 <description><p>
45443  with error type SecurityError, if the application does not have the privilege to call this method.
45444                 </p></description>
45445                 <description><p>
45446  with error type NotSupportedError, if this feature is not supported.
45447                 </p></description>
45448                 <description><p>
45449  with error type UnknownError, if any other error occurs.
45450                 </p></description>
45451             </descriptive>
45452           </RaiseException>
45453         </Raises>
45454       </Operation>
45455       <Operation name="getRegistrationId" id="::Push::PushManager::getRegistrationId">
45456         <webidl>      <ref>PushRegistrationId</ref> getRegistrationId() raises(<ref>WebAPIException</ref>);</webidl>
45457         <descriptive>
45458             <brief>
45459  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.
45460             </brief>
45461             <version>
45462  2.1
45463             </version>
45464             <privilegelevel>
45465  public
45466             </privilegelevel>
45467             <privilege>
45468  http://tizen.org/privilege/push
45469             </privilege>
45470             <Code> var registrationId = tizen.push.getRegistrationId();
45471  if ( registrationId != NULL ) {
45472    console.log(&quot;The registration id: &quot; + registrationId);
45473  }
45474  </Code>
45475         </descriptive>
45476         <Type name="PushRegistrationId"/>
45477         <ArgumentList/>
45478         <Raises>
45479           <RaiseException name="WebAPIException">
45480             <descriptive>
45481                 <description><p>
45482  with error type SecurityError, if the application does not have the privilege to call this method.
45483                 </p></description>
45484                 <description><p>
45485  with error type NotSupportedError, if this feature is not supported.
45486                 </p></description>
45487                 <description><p>
45488  with error type UnknownError, if any other error occurs.
45489                 </p></description>
45490             </descriptive>
45491           </RaiseException>
45492         </Raises>
45493       </Operation>
45494     </Interface>
45495     <Interface name="PushMessage" id="::Push::PushMessage">
45496       <webidl>    [NoInterfaceObject] interface PushMessage {&#13;
45497 &#13;
45498         readonly attribute DOMString appData;&#13;
45499 &#13;
45500 &#13;
45501         readonly attribute DOMString alertMessage;&#13;
45502 &#13;
45503 &#13;
45504         readonly attribute Date date;&#13;
45505     };</webidl>
45506       <descriptive>
45507           <brief>
45508  This interface specifies the push message that is delivered from the push service.
45509           </brief>
45510           <version>
45511  2.1
45512           </version>
45513       </descriptive>
45514       <ExtendedAttributeList>
45515         <ExtendedAttribute name="NoInterfaceObject">
45516           <webidl>NoInterfaceObject</webidl>
45517         </ExtendedAttribute>
45518       </ExtendedAttributeList>
45519       <Attribute readonly="readonly" name="appData" id="::Push::PushMessage::appData">
45520         <webidl>        readonly attribute DOMString appData;</webidl>
45521         <descriptive>
45522             <brief>
45523  An attribute to store the push notification data.
45524             </brief>
45525            <description>
45526             <p>
45527 This data is the message that the sender wants to send and its length must be less than 1 KB.
45528             </p>
45529            </description>
45530             <version>
45531  2.1
45532             </version>
45533         </descriptive>
45534         <Type type="DOMString"/>
45535       </Attribute>
45536       <Attribute readonly="readonly" name="alertMessage" id="::Push::PushMessage::alertMessage">
45537         <webidl>        readonly attribute DOMString alertMessage;</webidl>
45538         <descriptive>
45539             <brief>
45540  An attribute to store the push notification message that is displayed as an alert message to the user.
45541             </brief>
45542             <version>
45543  2.1
45544             </version>
45545         </descriptive>
45546         <Type type="DOMString"/>
45547       </Attribute>
45548       <Attribute readonly="readonly" name="date" id="::Push::PushMessage::date">
45549         <webidl>        readonly attribute Date date;</webidl>
45550         <descriptive>
45551             <brief>
45552  An attribute to store the date/time when a push notification message is received.
45553             </brief>
45554             <version>
45555  2.1
45556             </version>
45557         </descriptive>
45558         <Type type="Date"/>
45559       </Attribute>
45560     </Interface>
45561     <Interface name="PushRegisterSuccessCallback" id="::Push::PushRegisterSuccessCallback">
45562       <webidl>    [Callback=FunctionOnly, NoInterfaceObject]&#13;
45563     interface PushRegisterSuccessCallback {&#13;
45564 &#13;
45565         void onsuccess(<ref>PushRegistrationId</ref> id);&#13;
45566     };</webidl>
45567       <descriptive>
45568           <brief>
45569  This interface specifies the success callback for push service registration request.
45570           </brief>
45571          <description>
45572           <p>
45573 This success callback is invoked when a push service registration request is successful.
45574           </p>
45575          </description>
45576           <version>
45577  2.1
45578           </version>
45579       </descriptive>
45580       <ExtendedAttributeList>
45581         <ExtendedAttribute name="Callback" value="FunctionOnly">
45582           <webidl>Callback</webidl>
45583         </ExtendedAttribute>
45584         <ExtendedAttribute name="NoInterfaceObject">
45585           <webidl> NoInterfaceObject</webidl>
45586         </ExtendedAttribute>
45587       </ExtendedAttributeList>
45588       <Operation name="onsuccess" id="::Push::PushRegisterSuccessCallback::onsuccess">
45589         <webidl>        void onsuccess(<ref>PushRegistrationId</ref> id);</webidl>
45590         <descriptive>
45591             <brief>
45592  Called when a push service registration request is successful.
45593             </brief>
45594             <version>
45595  2.1
45596             </version>
45597         </descriptive>
45598         <Type type="void"/>
45599         <ArgumentList>
45600           <Argument name="id">
45601             <descriptive>
45602                 <description><p>
45603  The registration ID.
45604                 </p></description>
45605             </descriptive>
45606             <Type name="PushRegistrationId"/>
45607           </Argument>
45608         </ArgumentList>
45609       </Operation>
45610     </Interface>
45611     <Interface name="PushNotificationCallback" id="::Push::PushNotificationCallback">
45612       <webidl>    [Callback=FunctionOnly, NoInterfaceObject]&#13;
45613     interface PushNotificationCallback {&#13;
45614 &#13;
45615         void onsuccess(<ref>PushMessage</ref> message);&#13;
45616     };</webidl>
45617       <descriptive>
45618           <brief>
45619  This interface specifies the notification callback for the received push notification message.
45620           </brief>
45621          <description>
45622           <p>
45623 This notification callback is invoked when the push notification message arrives.
45624           </p>
45625          </description>
45626           <version>
45627  2.1
45628           </version>
45629       </descriptive>
45630       <ExtendedAttributeList>
45631         <ExtendedAttribute name="Callback" value="FunctionOnly">
45632           <webidl>Callback</webidl>
45633         </ExtendedAttribute>
45634         <ExtendedAttribute name="NoInterfaceObject">
45635           <webidl> NoInterfaceObject</webidl>
45636         </ExtendedAttribute>
45637       </ExtendedAttributeList>
45638       <Operation name="onsuccess" id="::Push::PushNotificationCallback::onsuccess">
45639         <webidl>        void onsuccess(<ref>PushMessage</ref> message);</webidl>
45640         <descriptive>
45641             <brief>
45642  Called when the push notification message arrives.
45643             </brief>
45644             <version>
45645  2.1
45646             </version>
45647         </descriptive>
45648         <Type type="void"/>
45649         <ArgumentList>
45650           <Argument name="message">
45651             <descriptive>
45652                 <description><p>
45653  The received push notification message.
45654                 </p></description>
45655             </descriptive>
45656             <Type name="PushMessage"/>
45657           </Argument>
45658         </ArgumentList>
45659       </Operation>
45660     </Interface>
45661   </Module>
45662   <Module name="SecureElement" id="::SecureElement">
45663     <webidl>module SecureElement {&#13;
45664 &#13;
45665   [NoInterfaceObject] interface SEServiceManagerObject {&#13;
45666     readonly attribute <ref>SEService</ref> seService;&#13;
45667   };&#13;
45668   <ref>Tizen</ref> implements <ref>SEServiceManagerObject</ref>;&#13;
45669  &#13;
45670 &#13;
45671   [NoInterfaceObject] interface SEService&#13;
45672   {&#13;
45673 &#13;
45674     void getReaders(<ref>ReaderArraySuccessCallback</ref> successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);&#13;
45675 &#13;
45676     unsigned long registerSEListener(<ref>SEChangeListener</ref> listener) raises(<ref>WebAPIException</ref>);&#13;
45677 &#13;
45678     void unregisterSEListener(unsigned long id) raises(<ref>WebAPIException</ref>);&#13;
45679 &#13;
45680 &#13;
45681     void shutdown() raises(<ref>WebAPIException</ref>);&#13;
45682   };&#13;
45683 &#13;
45684 &#13;
45685   [NoInterfaceObject] interface Reader&#13;
45686   {&#13;
45687 &#13;
45688     readonly attribute boolean isPresent;&#13;
45689 &#13;
45690     DOMString getName() raises(<ref>WebAPIException</ref>);&#13;
45691 &#13;
45692     void openSession(<ref>SessionSuccessCallback</ref> successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);&#13;
45693 &#13;
45694     void closeSessions() raises(<ref>WebAPIException</ref>);&#13;
45695   };&#13;
45696 &#13;
45697   [NoInterfaceObject] interface Session&#13;
45698   {&#13;
45699 &#13;
45700     readonly attribute boolean isClosed;&#13;
45701 &#13;
45702     void openBasicChannel(byte[] aid, <ref>ChannelSuccessCallback</ref> successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);&#13;
45703 &#13;
45704     void openLogicalChannel(byte[] aid, <ref>ChannelSuccessCallback</ref> successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);&#13;
45705 &#13;
45706     byte[] getATR() raises(<ref>WebAPIException</ref>);&#13;
45707 &#13;
45708     void close() raises(<ref>WebAPIException</ref>);&#13;
45709 &#13;
45710     void closeChannels() raises(<ref>WebAPIException</ref>);&#13;
45711   };&#13;
45712 &#13;
45713 &#13;
45714   [NoInterfaceObject] interface Channel {&#13;
45715 &#13;
45716     readonly attribute boolean isBasicChannel;&#13;
45717 &#13;
45718     void close() raises(<ref>WebAPIException</ref>);&#13;
45719     &#13;
45720 &#13;
45721     void transmit(byte[] command, <ref>TransmitSuccessCallback</ref> successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);&#13;
45722   };&#13;
45723 &#13;
45724 &#13;
45725   [Callback, NoInterfaceObject] interface SEChangeListener {&#13;
45726 &#13;
45727     void onSEReady(<ref>Reader</ref> reader);&#13;
45728 &#13;
45729     void onSENotReady(<ref>Reader</ref> reader);&#13;
45730   };&#13;
45731 &#13;
45732 &#13;
45733   [Callback=FunctionOnly, NoInterfaceObject] interface ReaderArraySuccessCallback {&#13;
45734 &#13;
45735     void onsuccess(<ref>Reader</ref>[] readers);&#13;
45736   };&#13;
45737 &#13;
45738 &#13;
45739   [Callback=FunctionOnly, NoInterfaceObject] interface SessionSuccessCallback {&#13;
45740 &#13;
45741     void onsuccess(<ref>Session</ref> session);&#13;
45742   };&#13;
45743 &#13;
45744 &#13;
45745   [Callback=FunctionOnly, NoInterfaceObject] interface ChannelSuccessCallback {&#13;
45746 &#13;
45747     void onsuccess(<ref>Channel</ref> channel);&#13;
45748   };&#13;
45749 &#13;
45750 &#13;
45751   [Callback=FunctionOnly, NoInterfaceObject] interface TransmitSuccessCallback {&#13;
45752 &#13;
45753     void onsuccess(byte[] response);&#13;
45754   };&#13;
45755 };</webidl>
45756     <descriptive>
45757         <brief>
45758  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.
45759         </brief>
45760        <description>
45761         <p>
45762 This API provides functionality to communicate with applications in several Secure Elements.
45763         </p>
45764        </description>
45765         <version>
45766  2.1
45767         </version>
45768         <def-api-feature identifier="http://tizen.org/feature/network.secure_element">
45769           <descriptive>
45770            <description>
45771             <p>
45772 To guarantee this application running on a device with SecureElement feature, define below in the config file: 
45773             </p>
45774            </description>
45775           </descriptive>
45776         </def-api-feature>
45777     </descriptive>
45778     <Interface name="SEServiceManagerObject" id="::SecureElement::SEServiceManagerObject">
45779       <webidl>  [NoInterfaceObject] interface SEServiceManagerObject {&#13;
45780     readonly attribute <ref>SEService</ref> seService;&#13;
45781   };</webidl>
45782       <descriptive>
45783           <brief>
45784  Defines what is instantiated by the Tizen object from the Tizen Platform.
45785           </brief>
45786          <description>
45787           <p>
45788 There is a <em>tizen.seService</em> object that allows access to the functionalities of the Secure Element API.
45789           </p>
45790          </description>
45791           <version>
45792  2.1
45793           </version>
45794       </descriptive>
45795       <ExtendedAttributeList>
45796         <ExtendedAttribute name="NoInterfaceObject">
45797           <webidl>NoInterfaceObject</webidl>
45798         </ExtendedAttribute>
45799       </ExtendedAttributeList>
45800       <Attribute readonly="readonly" name="seService" id="::SecureElement::SEServiceManagerObject::seService">
45801         <webidl>    readonly attribute <ref>SEService</ref> seService;</webidl>
45802         <Type name="SEService"/>
45803       </Attribute>
45804     </Interface>
45805     <Implements name1="Tizen" name2="SEServiceManagerObject">
45806       <webidl>  <ref>Tizen</ref> implements <ref>SEServiceManagerObject</ref>;</webidl>
45807     </Implements>
45808     <Interface name="SEService" id="::SecureElement::SEService">
45809       <webidl>  [NoInterfaceObject] interface SEService&#13;
45810   {&#13;
45811 &#13;
45812     void getReaders(<ref>ReaderArraySuccessCallback</ref> successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);&#13;
45813 &#13;
45814     unsigned long registerSEListener(<ref>SEChangeListener</ref> listener) raises(<ref>WebAPIException</ref>);&#13;
45815 &#13;
45816     void unregisterSEListener(unsigned long id) raises(<ref>WebAPIException</ref>);&#13;
45817 &#13;
45818 &#13;
45819     void shutdown() raises(<ref>WebAPIException</ref>);&#13;
45820   };</webidl>
45821       <descriptive>
45822           <brief>
45823  This interface provides access to the available Secure Element readers.
45824           </brief>
45825          <description>
45826           <p>
45827 It provides access to the API functionalities through the <em>tizen.seService</em> interface.
45828           </p>
45829          </description>
45830           <version>
45831  2.1
45832           </version>
45833       </descriptive>
45834       <ExtendedAttributeList>
45835         <ExtendedAttribute name="NoInterfaceObject">
45836           <webidl>NoInterfaceObject</webidl>
45837         </ExtendedAttribute>
45838       </ExtendedAttributeList>
45839       <Operation name="getReaders" id="::SecureElement::SEService::getReaders">
45840         <webidl>    void getReaders(<ref>ReaderArraySuccessCallback</ref> successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
45841         <descriptive>
45842             <brief>
45843  Gets all the available Secure Element readers.
45844             </brief>
45845            <description>
45846             <p>
45847 The ErrorCallback is launched with these error types:
45848             </p>
45849             <ul>
45850               <li>
45851  UnknownError - If any error occurs during retrieval.              </li>
45852             </ul>
45853            </description>
45854             <version>
45855  2.1
45856             </version>
45857             <privilege>
45858  http://tizen.org/privilege/secureelement
45859             </privilege>
45860             <privilegelevel>
45861  public
45862             </privilegelevel>
45863             <Code> try {
45864   function success(readers) {
45865    for (var i = 0; i &#60; readers.length; i++) {
45866     if (readers[i].isPresent) {
45867      console.log (&quot;Reader Name : &quot; + readers[i].getName());
45868     }
45869    }
45870   }
45871   function error(err) {
45872    console.log (err.name + &quot;: &quot; + err.message);
45873   }
45874   tizen.seService.getReaders(success, error);
45875  } catch (err) {
45876   console.log (err.name + &quot;: &quot; + err.message);
45877  }
45878  </Code>
45879         </descriptive>
45880         <Type type="void"/>
45881         <ArgumentList>
45882           <Argument name="successCallback">
45883             <descriptive>
45884                 <description><p>
45885  The method to be invoked when the list of available Secure Element readers has been successfully retrieved
45886                 </p></description>
45887             </descriptive>
45888             <Type name="ReaderArraySuccessCallback"/>
45889           </Argument>
45890           <Argument optional="optional" name="errorCallback">
45891             <descriptive>
45892                 <description><p>
45893  The method to call when an error occurs
45894                 </p></description>
45895             </descriptive>
45896             <Type name="ErrorCallback" nullable="nullable"/>
45897           </Argument>
45898         </ArgumentList>
45899         <Raises>
45900           <RaiseException name="WebAPIException">
45901             <descriptive>
45902                 <description><p>
45903  with error type TypeMismatchError, if the input parameter is not compatible with the expected type for that parameter.
45904                 </p></description>
45905                 <description><p>
45906  with error type SecurityError, if the application does not have the privilege to call this method.
45907                 </p></description>
45908             </descriptive>
45909           </RaiseException>
45910         </Raises>
45911       </Operation>
45912       <Operation name="registerSEListener" id="::SecureElement::SEService::registerSEListener">
45913         <webidl>    unsigned long registerSEListener(<ref>SEChangeListener</ref> listener) raises(<ref>WebAPIException</ref>);</webidl>
45914         <descriptive>
45915             <brief>
45916  Registers a callback function that is invoked when an available Secure Element reader is detected.
45917             </brief>
45918             <version>
45919  2.1
45920             </version>
45921             <privilege>
45922  http://tizen.org/privilege/secureelement
45923             </privilege>
45924             <privilegelevel>
45925  public
45926             </privilegelevel>
45927             <Code> try {
45928   var seListener = tizen.seService.registerSEListener({
45929    onSEReady:function(reader) {
45930      console.log (reader.getName() + &quot;is ready.&quot;);
45931     }, onSENotReady:function(reader) {
45932      console.log (reader.getName() + &quot;is not ready.&quot;);
45933     }});
45934  } catch (err) {
45935   console.log (err.name + &quot;: &quot; + err.message);
45936  }
45937  </Code>
45938         </descriptive>
45939         <Type type="unsigned long">
45940           <descriptive>
45941               <description><p>
45942  unsigned long An identifier used to clear the watch subscription.
45943               </p></description>
45944           </descriptive>
45945         </Type>
45946         <ArgumentList>
45947           <Argument name="listener">
45948             <descriptive>
45949                 <description><p>
45950  A listener to be invoked for successful detection of available Secure Element readers.
45951                 </p></description>
45952             </descriptive>
45953             <Type name="SEChangeListener"/>
45954           </Argument>
45955         </ArgumentList>
45956         <Raises>
45957           <RaiseException name="WebAPIException">
45958             <descriptive>
45959                 <description><p>
45960  with error type TypeMismatchError, if the input parameter is not compatible with the expected type for that parameter.
45961                 </p></description>
45962                 <description><p>
45963  with error type SecurityError, if the application does not have the privilege to call this method.
45964                 </p></description>
45965                 <description><p>
45966  with error type UnknownError, if any other error occurs.
45967                 </p></description>
45968             </descriptive>
45969           </RaiseException>
45970         </Raises>
45971       </Operation>
45972       <Operation name="unregisterSEListener" id="::SecureElement::SEService::unregisterSEListener">
45973         <webidl>    void unregisterSEListener(unsigned long id) raises(<ref>WebAPIException</ref>);</webidl>
45974         <descriptive>
45975             <brief>
45976  Unregisters the listener from notifying any detection of an available Secure Element reader.
45977             </brief>
45978             <version>
45979  2.1
45980             </version>
45981             <privilege>
45982  http://tizen.org/privilege/secureelement
45983             </privilege>
45984             <privilegelevel>
45985  public
45986             </privilegelevel>
45987             <Code> var seListener; //seListener obtained from registerSEListener
45988  try {
45989   tizen.seService.unregisterSEListener(seListener);
45990  } catch (err) {
45991   console.log (err.name + &quot;: &quot; + err.message);
45992  }
45993  </Code>
45994         </descriptive>
45995         <Type type="void"/>
45996         <ArgumentList>
45997           <Argument name="id">
45998             <descriptive>
45999                 <description><p>
46000  A subscription identifier that is returned by the <em>registerSEListener()</em> method.
46001                 </p></description>
46002             </descriptive>
46003             <Type type="unsigned long"/>
46004           </Argument>
46005         </ArgumentList>
46006         <Raises>
46007           <RaiseException name="WebAPIException">
46008             <descriptive>
46009                 <description><p>
46010  with error type TypeMismatchError, if the input parameter is not compatible with the expected type for that parameter.
46011                 </p></description>
46012                 <description><p>
46013  with error type InvalidValuesError, if any of the input parameters contains an invalid value.
46014                 </p></description>
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, if any other error occurs.
46020                 </p></description>
46021             </descriptive>
46022           </RaiseException>
46023         </Raises>
46024       </Operation>
46025       <Operation name="shutdown" id="::SecureElement::SEService::shutdown">
46026         <webidl>    void shutdown() raises(<ref>WebAPIException</ref>);</webidl>
46027         <descriptive>
46028             <brief>
46029  Shuts down Secure Elements after releasing all resources.
46030             </brief>
46031             <version>
46032  2.1
46033             </version>
46034             <privilege>
46035  http://tizen.org/privilege/secureelement
46036             </privilege>
46037             <privilegelevel>
46038  public
46039             </privilegelevel>
46040             <Code> try {
46041   tizen.seService.shutdown();
46042  } catch (err) {
46043   console.log (err.name + &quot;: &quot; + err.message);
46044  }
46045  </Code>
46046         </descriptive>
46047         <Type type="void"/>
46048         <ArgumentList/>
46049         <Raises>
46050           <RaiseException name="WebAPIException">
46051             <descriptive>
46052                 <description><p>
46053  with error type SecurityError, if the application does not have the privilege to call this method.
46054                 </p></description>
46055                 <description><p>
46056  with error type UnknownError, if any other error occurs.
46057                 </p></description>
46058             </descriptive>
46059           </RaiseException>
46060         </Raises>
46061       </Operation>
46062     </Interface>
46063     <Interface name="Reader" id="::SecureElement::Reader">
46064       <webidl>  [NoInterfaceObject] interface Reader&#13;
46065   {&#13;
46066 &#13;
46067     readonly attribute boolean isPresent;&#13;
46068 &#13;
46069     DOMString getName() raises(<ref>WebAPIException</ref>);&#13;
46070 &#13;
46071     void openSession(<ref>SessionSuccessCallback</ref> successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);&#13;
46072 &#13;
46073     void closeSessions() raises(<ref>WebAPIException</ref>);&#13;
46074   };</webidl>
46075       <descriptive>
46076           <brief>
46077  Reader interface that is connected to this device.
46078           </brief>
46079          <description>
46080           <p>
46081 This interface offers methods to control sessions on the reader.
46082           </p>
46083          </description>
46084           <version>
46085  2.1
46086           </version>
46087       </descriptive>
46088       <ExtendedAttributeList>
46089         <ExtendedAttribute name="NoInterfaceObject">
46090           <webidl>NoInterfaceObject</webidl>
46091         </ExtendedAttribute>
46092       </ExtendedAttributeList>
46093       <Attribute readonly="readonly" name="isPresent" id="::SecureElement::Reader::isPresent">
46094         <webidl>    readonly attribute boolean isPresent;</webidl>
46095         <descriptive>
46096             <brief>
46097  An attribute to check whether a Secure Element is present on a reader.
46098             </brief>
46099             <version>
46100  2.1
46101             </version>
46102         </descriptive>
46103         <Type type="boolean"/>
46104       </Attribute>
46105       <Operation name="getName" id="::SecureElement::Reader::getName">
46106         <webidl>    DOMString getName() raises(<ref>WebAPIException</ref>);</webidl>
46107         <descriptive>
46108             <brief>
46109  Gets reader's name.
46110             </brief>
46111             <version>
46112  2.1
46113             </version>
46114             <privilege>
46115  http://tizen.org/privilege/secureelement
46116             </privilege>
46117             <privilegelevel>
46118  public
46119             </privilegelevel>
46120             <Code> try {
46121   function success(readers) {
46122    for (var i = 0; i &#60; readers.length; i++) {
46123     if (readers[i].isPresent) {
46124      console.log (&quot;Reader Name : &quot; + readers[i].getName());
46125     }
46126    }
46127   }
46128   function error(err) {
46129    console.log (err.name + &quot;: &quot; + err.message);
46130   }
46131   tizen.seService.getReaders(success, error);
46132  } catch (err) {
46133   console.log (err.name + &quot;: &quot; + err.message);
46134  }
46135  </Code>
46136         </descriptive>
46137         <Type type="DOMString">
46138           <descriptive>
46139               <description><p>
46140  DOMString The name of the reader.
46141               </p></description>
46142           </descriptive>
46143         </Type>
46144         <ArgumentList/>
46145         <Raises>
46146           <RaiseException name="WebAPIException">
46147             <descriptive>
46148                 <description><p>
46149  with error type SecurityError, if the application does not have the privilege to call this method.
46150                 </p></description>
46151                 <description><p>
46152  with error type UnknownError, if any other error occurs.
46153                 </p></description>
46154             </descriptive>
46155           </RaiseException>
46156         </Raises>
46157       </Operation>
46158       <Operation name="openSession" id="::SecureElement::Reader::openSession">
46159         <webidl>    void openSession(<ref>SessionSuccessCallback</ref> successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
46160         <descriptive>
46161             <brief>
46162  Opens a session on a reader.
46163             </brief>
46164            <description>
46165             <p>
46166 The ErrorCallback is launched with these error types:
46167             </p>
46168             <ul>
46169               <li>
46170  IOError - An error occurred in communication with the Secure Element in this reader.              </li>
46171               <li>
46172  InvalidStateError - If a Secure Element is not present on this reader.              </li>
46173               <li>
46174  UnknownError - If any other error occurs.              </li>
46175             </ul>
46176            </description>
46177             <version>
46178  2.1
46179             </version>
46180             <privilege>
46181  http://tizen.org/privilege/secureelement
46182             </privilege>
46183             <privilegelevel>
46184  public
46185             </privilegelevel>
46186             <Code> try {
46187   function success(session) {
46188    console.log (&quot;Open Session Success : &quot; + !session.isClosed);
46189   }
46190   function error(err) {
46191    console.log (err.name + &quot;: &quot; + err.message);
46192   }
46193   reader.openSession(success, error);
46194  } catch (err) {
46195   console.log (err.name + &quot;: &quot; + err.message);
46196  }
46197  </Code>
46198         </descriptive>
46199         <Type type="void"/>
46200         <ArgumentList>
46201           <Argument name="successCallback">
46202             <descriptive>
46203                 <description><p>
46204  The method to be invoked when a session has been successfully opened
46205                 </p></description>
46206             </descriptive>
46207             <Type name="SessionSuccessCallback"/>
46208           </Argument>
46209           <Argument optional="optional" name="errorCallback">
46210             <descriptive>
46211                 <description><p>
46212  The method to be called when an error occurs
46213                 </p></description>
46214             </descriptive>
46215             <Type name="ErrorCallback" nullable="nullable"/>
46216           </Argument>
46217         </ArgumentList>
46218         <Raises>
46219           <RaiseException name="WebAPIException">
46220             <descriptive>
46221                 <description><p>
46222  with error type TypeMismatchError, if the input parameter is not compatible with the expected type for that parameter.
46223                 </p></description>
46224                 <description><p>
46225  with error type SecurityError, if the application does not have the privilege to call this method.
46226                 </p></description>
46227             </descriptive>
46228           </RaiseException>
46229         </Raises>
46230       </Operation>
46231       <Operation name="closeSessions" id="::SecureElement::Reader::closeSessions">
46232         <webidl>    void closeSessions() raises(<ref>WebAPIException</ref>);</webidl>
46233         <descriptive>
46234             <brief>
46235  Closes all sessions opened on a reader.
46236             </brief>
46237             <version>
46238  2.1
46239             </version>
46240             <privilege>
46241  http://tizen.org/privilege/secureelement
46242             </privilege>
46243             <privilegelevel>
46244  public
46245             </privilegelevel>
46246             <Code> try {
46247   reader.closeSessions();
46248  } catch (err) {
46249   console.log (err.name + &quot;: &quot; + err.message);
46250  }
46251  </Code>
46252         </descriptive>
46253         <Type type="void"/>
46254         <ArgumentList/>
46255         <Raises>
46256           <RaiseException name="WebAPIException">
46257             <descriptive>
46258                 <description><p>
46259  with error type SecurityError, if the application does not have the privilege to call this method.
46260                 </p></description>
46261                 <description><p>
46262  with error type UnknownError in any other error case.
46263                 </p></description>
46264             </descriptive>
46265           </RaiseException>
46266         </Raises>
46267       </Operation>
46268     </Interface>
46269     <Interface name="Session" id="::SecureElement::Session">
46270       <webidl>  [NoInterfaceObject] interface Session&#13;
46271   {&#13;
46272 &#13;
46273     readonly attribute boolean isClosed;&#13;
46274 &#13;
46275     void openBasicChannel(byte[] aid, <ref>ChannelSuccessCallback</ref> successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);&#13;
46276 &#13;
46277     void openLogicalChannel(byte[] aid, <ref>ChannelSuccessCallback</ref> successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);&#13;
46278 &#13;
46279     byte[] getATR() raises(<ref>WebAPIException</ref>);&#13;
46280 &#13;
46281     void close() raises(<ref>WebAPIException</ref>);&#13;
46282 &#13;
46283     void closeChannels() raises(<ref>WebAPIException</ref>);&#13;
46284   };</webidl>
46285       <descriptive>
46286           <brief>
46287  This interface is connected to one of the readers and offers methods to control channels in a session.
46288           </brief>
46289           <version>
46290  2.1
46291           </version>
46292       </descriptive>
46293       <ExtendedAttributeList>
46294         <ExtendedAttribute name="NoInterfaceObject">
46295           <webidl>NoInterfaceObject</webidl>
46296         </ExtendedAttribute>
46297       </ExtendedAttributeList>
46298       <Attribute readonly="readonly" name="isClosed" id="::SecureElement::Session::isClosed">
46299         <webidl>    readonly attribute boolean isClosed;</webidl>
46300         <descriptive>
46301             <brief>
46302  An attribute to check whether a session is closed or not.
46303             </brief>
46304             <version>
46305  2.1
46306             </version>
46307         </descriptive>
46308         <Type type="boolean"/>
46309       </Attribute>
46310       <Operation name="openBasicChannel" id="::SecureElement::Session::openBasicChannel">
46311         <webidl>    void openBasicChannel(byte[] aid, <ref>ChannelSuccessCallback</ref> successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
46312         <descriptive>
46313             <brief>
46314  Opens a basic channel in a session.
46315 The basic channel (defined in the ISO7816-4 specification) is opened by default and its channel ID is <var>0</var>.
46316 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.
46317 Some Secure Elements might always deny opening a basic channel.
46318             </brief>
46319            <description>
46320             <p>
46321 The ErrorCallback is launched with these error types:
46322             </p>
46323             <ul>
46324               <li>
46325  IOError - If an error occurs while communicating with the Secure Element in the reader.              </li>
46326               <li>
46327  SecurityError - If access to this AID or the default application on this session is not allowed .              </li>
46328               <li>
46329  InvalidStateError - If this session is closed.               </li>
46330               <li>
46331  NotFoundError - If the application of the AID does not exist in the Secure Element.              </li>
46332               <li>
46333  NoChannelError - If basic channel is unavailable.              </li>
46334               <li>
46335  UnknownError - If any other error occurs.              </li>
46336             </ul>
46337            </description>
46338             <version>
46339  2.1
46340             </version>
46341             <privilege>
46342  http://tizen.org/privilege/secureelement
46343             </privilege>
46344             <privilegelevel>
46345  public
46346             </privilegelevel>
46347             <Code> try {
46348   function successChannel(channel) {
46349    if (channel.isBasicChannel) {
46350     console.log (&quot;Basic channel is opened.&quot;);
46351    } else {
46352     console.log (&quot;Logical channel is opened.&quot;);
46353    }
46354   }
46355   function errorChannel(err) {
46356    console.log (&quot;openBasicChannel Error :&quot; + err.name +&quot;: &quot; + err.message);
46357   }
46358
46359   function successSession(session) {
46360    console.log (&quot;Open Session Success : &quot; + !session.isClosed);
46361    // This aid is for test. Use aid for your applet in secure element.
46362    session.openBasicChannel([0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, 0xc, 0xd, 0xe], successChannel, errorChannel);
46363   }
46364   function errorSession(err) {
46365    console.log (&quot;openSession Error : &quot; + err.name + &quot;: &quot; + err.message);
46366   }
46367   reader.openSession(successSession, errorSession);
46368  } catch (err) {
46369   console.log (err.name + &quot;: &quot; + err.message);
46370  }
46371  </Code>
46372         </descriptive>
46373         <Type type="void"/>
46374         <ArgumentList>
46375           <Argument name="aid">
46376             <descriptive>
46377                 <description><p>
46378  The id of the applet to select on this channel.<br/>If the array is empty, the default applet is selected in this session.
46379                 </p></description>
46380             </descriptive>
46381             <Type type="array">
46382               <Type type="byte"/>
46383             </Type>
46384           </Argument>
46385           <Argument name="successCallback">
46386             <descriptive>
46387                 <description><p>
46388  The method to be invoked when a basic channel has been successfully opened
46389                 </p></description>
46390             </descriptive>
46391             <Type name="ChannelSuccessCallback"/>
46392           </Argument>
46393           <Argument optional="optional" name="errorCallback">
46394             <descriptive>
46395                 <description><p>
46396  The method to be called when an error occurs
46397                 </p></description>
46398             </descriptive>
46399             <Type name="ErrorCallback" nullable="nullable"/>
46400           </Argument>
46401         </ArgumentList>
46402         <Raises>
46403           <RaiseException name="WebAPIException">
46404             <descriptive>
46405                 <description><p>
46406  with error type TypeMismatchError, if the input parameter
46407 is not compatible with the expected type for that parameter.
46408                 </p></description>
46409                 <description><p>
46410  with error type InvalidValuesError, if the AID's length is not within the limit: 5 to 16(inclusive).
46411                 </p></description>
46412                 <description><p>
46413  with error type SecurityError, if the application does not have the privilege to call this method.
46414                 </p></description>
46415             </descriptive>
46416           </RaiseException>
46417         </Raises>
46418       </Operation>
46419       <Operation name="openLogicalChannel" id="::SecureElement::Session::openLogicalChannel">
46420         <webidl>    void openLogicalChannel(byte[] aid, <ref>ChannelSuccessCallback</ref> successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
46421         <descriptive>
46422             <brief>
46423  Opens a logical channel in a session by the specified applet id.
46424 The logical channel is defined in the ISO7816-4 specification.
46425             </brief>
46426            <description>
46427             <p>
46428 The ErrorCallback is launched with these error types:
46429             </p>
46430             <ul>
46431               <li>
46432  IOError - If an error occurs while communicating with the Secure Element in the reader.              </li>
46433               <li>
46434  SecurityError - If access to this AID or the default application in this session is not allowed.              </li>
46435               <li>
46436  InvalidStateError - If this session is closed.              </li>
46437               <li>
46438  NotFoundError - If the application of the AID does not exist in the Secure Element.              </li>
46439               <li>
46440  NoChannelError - If logical channel is unavailable.              </li>
46441               <li>
46442  UnknownError - If any other error occurs.              </li>
46443             </ul>
46444            </description>
46445             <version>
46446  2.1
46447             </version>
46448             <privilege>
46449  http://tizen.org/privilege/secureelement
46450             </privilege>
46451             <privilegelevel>
46452  public
46453             </privilegelevel>
46454             <Code> var session; //Session obtained from openSession callback
46455  try {
46456   function successChannel(channel) {
46457    if (channel.isBasicChannel) {
46458     console.log (&quot;Basic channel is opened.&quot;);
46459    } else {
46460     console.log (&quot;Logical channel is opened.&quot;);
46461    }
46462   }
46463   function errorChannel(err) {
46464    console.log (&quot;openLogicalChannel Error :&quot; + err.name + &quot;: &quot; + err.message);
46465   }
46466
46467    // This aid is for test. Use aid for your applet in secure element.
46468   session.openLogicalChannel([0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, 0xc, 0xd, 0xe], successChannel, errorChannel);
46469  } catch (err) {
46470   console.log (err.name + &quot;: &quot; + err.message);
46471  }
46472  </Code>
46473         </descriptive>
46474         <Type type="void"/>
46475         <ArgumentList>
46476           <Argument name="aid">
46477             <descriptive>
46478                 <description><p>
46479  The id of the applet to select on this channel<br/>If the array is empty, the default application is selected in this session.
46480                 </p></description>
46481             </descriptive>
46482             <Type type="array">
46483               <Type type="byte"/>
46484             </Type>
46485           </Argument>
46486           <Argument name="successCallback">
46487             <descriptive>
46488                 <description><p>
46489  The method to be invoked when a logical channel has been successfully opened
46490                 </p></description>
46491             </descriptive>
46492             <Type name="ChannelSuccessCallback"/>
46493           </Argument>
46494           <Argument optional="optional" name="errorCallback">
46495             <descriptive>
46496                 <description><p>
46497  The method to be called when an error occurs
46498                 </p></description>
46499             </descriptive>
46500             <Type name="ErrorCallback" nullable="nullable"/>
46501           </Argument>
46502         </ArgumentList>
46503         <Raises>
46504           <RaiseException name="WebAPIException">
46505             <descriptive>
46506                 <description><p>
46507  with error type TypeMismatchError, if the input parameter is not compatible with the expected type for that parameter.
46508                 </p></description>
46509                 <description><p>
46510  with error type InvalidValuesError, if the AID's length is not within the limit: 5 to 16(inclusive).
46511                 </p></description>
46512                 <description><p>
46513  with error type SecurityError, if the application does not have the privilege to call this method.
46514                 </p></description>
46515             </descriptive>
46516           </RaiseException>
46517         </Raises>
46518       </Operation>
46519       <Operation name="getATR" id="::SecureElement::Session::getATR">
46520         <webidl>    byte[] getATR() raises(<ref>WebAPIException</ref>);</webidl>
46521         <descriptive>
46522             <brief>
46523  Gets the answer to reset(ATR) of a Secure Element.
46524             </brief>
46525             <version>
46526  2.1
46527             </version>
46528             <privilege>
46529  http://tizen.org/privilege/secureelement
46530             </privilege>
46531             <privilegelevel>
46532  public
46533             </privilegelevel>
46534             <Code> var session; //Session obtained from openSession callback
46535  try {
46536   var atr = session.getATR();
46537  } catch (err) {
46538   console.log (err.name + &quot;: &quot; + err.message);
46539  }
46540  </Code>
46541         </descriptive>
46542         <Type type="array">
46543           <descriptive>
46544               <description><p>
46545  byte[] The ATR of a Secure Element.
46546               </p></description>
46547           </descriptive>
46548           <Type type="byte"/>
46549         </Type>
46550         <ArgumentList/>
46551         <Raises>
46552           <RaiseException name="WebAPIException">
46553             <descriptive>
46554                 <description><p>
46555  with error type SecurityError, if the application does not have the privilege to call this method.
46556                 </p></description>
46557                 <description><p>
46558  with error type UnknownError, if any other error occurs.
46559                 </p></description>
46560             </descriptive>
46561           </RaiseException>
46562         </Raises>
46563       </Operation>
46564       <Operation name="close" id="::SecureElement::Session::close">
46565         <webidl>    void close() raises(<ref>WebAPIException</ref>);</webidl>
46566         <descriptive>
46567             <brief>
46568  Closes a session.
46569             </brief>
46570             <version>
46571  2.1
46572             </version>
46573             <privilege>
46574  http://tizen.org/privilege/secureelement
46575             </privilege>
46576             <privilegelevel>
46577  public
46578             </privilegelevel>
46579             <Code> var session; //Session obtained from openSession callback
46580  try {
46581   session.close();
46582  } catch (err) {
46583   console.log (err.name + &quot;: &quot; + err.message);
46584  }
46585  </Code>
46586         </descriptive>
46587         <Type type="void"/>
46588         <ArgumentList/>
46589         <Raises>
46590           <RaiseException name="WebAPIException">
46591             <descriptive>
46592                 <description><p>
46593  with error type SecurityError, if the application does not have the privilege to call this method.
46594                 </p></description>
46595                 <description><p>
46596  with error type UnknownError, if any other error occurs.
46597                 </p></description>
46598             </descriptive>
46599           </RaiseException>
46600         </Raises>
46601       </Operation>
46602       <Operation name="closeChannels" id="::SecureElement::Session::closeChannels">
46603         <webidl>    void closeChannels() raises(<ref>WebAPIException</ref>);</webidl>
46604         <descriptive>
46605             <brief>
46606  Closes all channels on this session.
46607             </brief>
46608             <version>
46609  2.1
46610             </version>
46611             <privilege>
46612  http://tizen.org/privilege/secureelement
46613             </privilege>
46614             <privilegelevel>
46615  public
46616             </privilegelevel>
46617             <Code> var session; //Session obtained from openSession callback 
46618  try {
46619   session.closeChannels();
46620  } catch (err) {
46621   console.log (err.name + &quot;: &quot; + err.message);
46622  }
46623  </Code>
46624         </descriptive>
46625         <Type type="void"/>
46626         <ArgumentList/>
46627         <Raises>
46628           <RaiseException name="WebAPIException">
46629             <descriptive>
46630                 <description><p>
46631  with error type SecurityError, if the application does not have the privilege to call this method.
46632                 </p></description>
46633                 <description><p>
46634  with error type UnknownError in any other error case.
46635                 </p></description>
46636             </descriptive>
46637           </RaiseException>
46638         </Raises>
46639       </Operation>
46640     </Interface>
46641     <Interface name="Channel" id="::SecureElement::Channel">
46642       <webidl>  [NoInterfaceObject] interface Channel {&#13;
46643 &#13;
46644     readonly attribute boolean isBasicChannel;&#13;
46645 &#13;
46646     void close() raises(<ref>WebAPIException</ref>);&#13;
46647     &#13;
46648 &#13;
46649     void transmit(byte[] command, <ref>TransmitSuccessCallback</ref> successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);&#13;
46650   };</webidl>
46651       <descriptive>
46652           <brief>
46653  This interface is open to a Secure Element and offers methods to send Application Protocol Data Units(APDU) to the Secure Element.
46654 The channel is defined in the ISO7816-4.
46655           </brief>
46656           <version>
46657  2.1
46658           </version>
46659       </descriptive>
46660       <ExtendedAttributeList>
46661         <ExtendedAttribute name="NoInterfaceObject">
46662           <webidl>NoInterfaceObject</webidl>
46663         </ExtendedAttribute>
46664       </ExtendedAttributeList>
46665       <Attribute readonly="readonly" name="isBasicChannel" id="::SecureElement::Channel::isBasicChannel">
46666         <webidl>    readonly attribute boolean isBasicChannel;</webidl>
46667         <descriptive>
46668             <brief>
46669  An attribute to check whether it is a basic channel or not.
46670             </brief>
46671             <version>
46672  2.1
46673             </version>
46674         </descriptive>
46675         <Type type="boolean"/>
46676       </Attribute>
46677       <Operation name="close" id="::SecureElement::Channel::close">
46678         <webidl>    void close() raises(<ref>WebAPIException</ref>);</webidl>
46679         <descriptive>
46680             <brief>
46681  Closes a channel.
46682             </brief>
46683             <version>
46684  2.1
46685             </version>
46686             <privilege>
46687  http://tizen.org/privilege/secureelement
46688             </privilege>
46689             <privilegelevel>
46690  public
46691             </privilegelevel>
46692             <Code> var channel; //Obtained from openLogicalChannel or openBasicChannel
46693  try {
46694   channel.close();
46695  } catch (err) {
46696   console.log (err.name + &quot;: &quot; + err.message);
46697  }
46698  </Code>
46699         </descriptive>
46700         <Type type="void"/>
46701         <ArgumentList/>
46702         <Raises>
46703           <RaiseException name="WebAPIException">
46704             <descriptive>
46705                 <description><p>
46706  with error type SecurityError, if the application does not have the privilege to call this method.
46707                 </p></description>
46708                 <description><p>
46709  with error type UnknownError, if any other error occurs.
46710                 </p></description>
46711             </descriptive>
46712           </RaiseException>
46713         </Raises>
46714       </Operation>
46715       <Operation name="transmit" id="::SecureElement::Channel::transmit">
46716         <webidl>    void transmit(byte[] command, <ref>TransmitSuccessCallback</ref> successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
46717         <descriptive>
46718             <brief>
46719  Transmits an APDU command to a Secure Element. The APDU command is defined in ISO7816-4.
46720             </brief>
46721            <description>
46722             <p>
46723 Some commands that are not allowed to be sent are:
46724             </p>
46725             <ul>
46726               <li>
46727  MANAGE_CHANNEL commands.               </li>
46728               <li>
46729  SELECT by DF Name (p1=04).               </li>
46730               <li>
46731  The commands that CLA bytes with channel numbers are de-masked.               </li>
46732             </ul>
46733             <p>
46734 The ErrorCallback is launched with these error types:
46735             </p>
46736             <ul>
46737               <li>
46738  InvalidValuesError - If the command contain an invalid value.              </li>
46739               <li>
46740  IOError - An error occurred while communicating with the Secure Element in the reader.              </li>
46741               <li>
46742  SecurityError - If the command is not allowed.              </li>
46743               <li>
46744  InvalidStateError - If this channel is closed.              </li>
46745               <li>
46746  UnknownError - If any other error occurs.              </li>
46747             </ul>
46748            </description>
46749             <version>
46750  2.1
46751             </version>
46752             <privilege>
46753  http://tizen.org/privilege/secureelement
46754             </privilege>
46755             <privilegelevel>
46756  public
46757             </privilegelevel>
46758         </descriptive>
46759         <Type type="void"/>
46760         <ArgumentList>
46761           <Argument name="command">
46762             <descriptive>
46763                 <description><p>
46764  The APDU command to transmit through this channel
46765                 </p></description>
46766             </descriptive>
46767             <Type type="array">
46768               <Type type="byte"/>
46769             </Type>
46770           </Argument>
46771           <Argument name="successCallback">
46772             <descriptive>
46773                 <description><p>
46774  The method to be invoked when a command has been successfully transmitted
46775                 </p></description>
46776             </descriptive>
46777             <Type name="TransmitSuccessCallback"/>
46778           </Argument>
46779           <Argument optional="optional" name="errorCallback">
46780             <descriptive>
46781                 <description><p>
46782  The method to be called when an error occurs
46783                 </p></description>
46784             </descriptive>
46785             <Type name="ErrorCallback" nullable="nullable"/>
46786           </Argument>
46787         </ArgumentList>
46788         <Raises>
46789           <RaiseException name="WebAPIException">
46790             <descriptive>
46791                 <description><p>
46792  with error type TypeMismatchError, if the input parameter is not compatible with the expected type for that parameter.
46793                 </p></description>
46794                 <description><p>
46795  with error type SecurityError, if the application does not have the privilege to call this method.
46796                 </p></description>
46797             </descriptive>
46798           </RaiseException>
46799         </Raises>
46800       </Operation>
46801     </Interface>
46802     <Interface name="SEChangeListener" id="::SecureElement::SEChangeListener">
46803       <webidl>  [Callback, NoInterfaceObject] interface SEChangeListener {&#13;
46804 &#13;
46805     void onSEReady(<ref>Reader</ref> reader);&#13;
46806 &#13;
46807     void onSENotReady(<ref>Reader</ref> reader);&#13;
46808   };</webidl>
46809       <descriptive>
46810           <brief>
46811  This interface provides the success callback that is invoked when a Secure Element reader is detected or lost.
46812           </brief>
46813          <description>
46814           <p>
46815 It is used in <em>SEService.registerSEListener()</em>.
46816           </p>
46817          </description>
46818           <version>
46819  2.1
46820           </version>
46821       </descriptive>
46822       <ExtendedAttributeList>
46823         <ExtendedAttribute name="Callback">
46824           <webidl>Callback</webidl>
46825         </ExtendedAttribute>
46826         <ExtendedAttribute name="NoInterfaceObject">
46827           <webidl> NoInterfaceObject</webidl>
46828         </ExtendedAttribute>
46829       </ExtendedAttributeList>
46830       <Operation name="onSEReady" id="::SecureElement::SEChangeListener::onSEReady">
46831         <webidl>    void onSEReady(<ref>Reader</ref> reader);</webidl>
46832         <descriptive>
46833             <brief>
46834  Called when a Secure Element reader is detected.
46835             </brief>
46836             <version>
46837  2.1
46838             </version>
46839         </descriptive>
46840         <Type type="void"/>
46841         <ArgumentList>
46842           <Argument name="reader">
46843             <descriptive>
46844                 <description><p>
46845  A newly detected Secure Element reader
46846                 </p></description>
46847             </descriptive>
46848             <Type name="Reader"/>
46849           </Argument>
46850         </ArgumentList>
46851       </Operation>
46852       <Operation name="onSENotReady" id="::SecureElement::SEChangeListener::onSENotReady">
46853         <webidl>    void onSENotReady(<ref>Reader</ref> reader);</webidl>
46854         <descriptive>
46855             <brief>
46856  Called when a Secure Element reader is lost.
46857             </brief>
46858             <version>
46859  2.1
46860             </version>
46861         </descriptive>
46862         <Type type="void"/>
46863         <ArgumentList>
46864           <Argument name="reader">
46865             <descriptive>
46866                 <description><p>
46867  A lost Secure Element reader
46868                 </p></description>
46869             </descriptive>
46870             <Type name="Reader"/>
46871           </Argument>
46872         </ArgumentList>
46873       </Operation>
46874     </Interface>
46875     <Interface name="ReaderArraySuccessCallback" id="::SecureElement::ReaderArraySuccessCallback">
46876       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface ReaderArraySuccessCallback {&#13;
46877 &#13;
46878     void onsuccess(<ref>Reader</ref>[] readers);&#13;
46879   };</webidl>
46880       <descriptive>
46881           <brief>
46882  This callback interface provides a success callback that is invoked when a list of available Secure Element readers is retrieved.
46883           </brief>
46884          <description>
46885           <p>
46886 It specifies a success method with an array of <em>Reader</em> objects as an input parameter.
46887 It is used in asynchronous operations such as <em>SEService.getReaders()</em>.
46888           </p>
46889          </description>
46890           <version>
46891  2.1
46892           </version>
46893       </descriptive>
46894       <ExtendedAttributeList>
46895         <ExtendedAttribute name="Callback" value="FunctionOnly">
46896           <webidl>Callback</webidl>
46897         </ExtendedAttribute>
46898         <ExtendedAttribute name="NoInterfaceObject">
46899           <webidl> NoInterfaceObject</webidl>
46900         </ExtendedAttribute>
46901       </ExtendedAttributeList>
46902       <Operation name="onsuccess" id="::SecureElement::ReaderArraySuccessCallback::onsuccess">
46903         <webidl>    void onsuccess(<ref>Reader</ref>[] readers);</webidl>
46904         <descriptive>
46905             <brief>
46906  Called when an asynchronous call completes successfully.
46907             </brief>
46908             <version>
46909  2.1
46910             </version>
46911         </descriptive>
46912         <Type type="void"/>
46913         <ArgumentList>
46914           <Argument name="readers">
46915             <descriptive>
46916                 <description><p>
46917  A list of available Secure Element readers
46918                 </p></description>
46919             </descriptive>
46920             <Type type="array">
46921               <Type name="Reader"/>
46922             </Type>
46923           </Argument>
46924         </ArgumentList>
46925       </Operation>
46926     </Interface>
46927     <Interface name="SessionSuccessCallback" id="::SecureElement::SessionSuccessCallback">
46928       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface SessionSuccessCallback {&#13;
46929 &#13;
46930     void onsuccess(<ref>Session</ref> session);&#13;
46931   };</webidl>
46932       <descriptive>
46933           <brief>
46934  This interface specifies the success callback that is invoked when a session on a specific reader is open.
46935           </brief>
46936          <description>
46937           <p>
46938 This callback interface specifies a success method with a <em>Session</em> object as an input parameter.
46939 It is used in asynchronous operations such as <em>Reader.openSession()</em>.
46940           </p>
46941          </description>
46942           <version>
46943  2.1
46944           </version>
46945       </descriptive>
46946       <ExtendedAttributeList>
46947         <ExtendedAttribute name="Callback" value="FunctionOnly">
46948           <webidl>Callback</webidl>
46949         </ExtendedAttribute>
46950         <ExtendedAttribute name="NoInterfaceObject">
46951           <webidl> NoInterfaceObject</webidl>
46952         </ExtendedAttribute>
46953       </ExtendedAttributeList>
46954       <Operation name="onsuccess" id="::SecureElement::SessionSuccessCallback::onsuccess">
46955         <webidl>    void onsuccess(<ref>Session</ref> session);</webidl>
46956         <descriptive>
46957             <brief>
46958  Called when an asynchronous call completes successfully.
46959             </brief>
46960             <version>
46961  2.1
46962             </version>
46963         </descriptive>
46964         <Type type="void"/>
46965         <ArgumentList>
46966           <Argument name="session">
46967             <descriptive>
46968                 <description><p>
46969  An open session
46970                 </p></description>
46971             </descriptive>
46972             <Type name="Session"/>
46973           </Argument>
46974         </ArgumentList>
46975       </Operation>
46976     </Interface>
46977     <Interface name="ChannelSuccessCallback" id="::SecureElement::ChannelSuccessCallback">
46978       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface ChannelSuccessCallback {&#13;
46979 &#13;
46980     void onsuccess(<ref>Channel</ref> channel);&#13;
46981   };</webidl>
46982       <descriptive>
46983           <brief>
46984  This interface specifies the success callback that is invoked when a channel is open to communicate with a specific applet.
46985           </brief>
46986          <description>
46987           <p>
46988 This callback interface specifies a success method with a <em>Channel</em> object as an input parameter.
46989 It is used in asynchronous operations such as <em>Session.openBasicChannel() </em>or <em>Session.openLogicalChannel()</em>.
46990           </p>
46991          </description>
46992           <version>
46993  2.1
46994           </version>
46995       </descriptive>
46996       <ExtendedAttributeList>
46997         <ExtendedAttribute name="Callback" value="FunctionOnly">
46998           <webidl>Callback</webidl>
46999         </ExtendedAttribute>
47000         <ExtendedAttribute name="NoInterfaceObject">
47001           <webidl> NoInterfaceObject</webidl>
47002         </ExtendedAttribute>
47003       </ExtendedAttributeList>
47004       <Operation name="onsuccess" id="::SecureElement::ChannelSuccessCallback::onsuccess">
47005         <webidl>    void onsuccess(<ref>Channel</ref> channel);</webidl>
47006         <descriptive>
47007             <brief>
47008  Called when an asynchronous call completes successfully.
47009             </brief>
47010             <version>
47011  2.1
47012             </version>
47013         </descriptive>
47014         <Type type="void"/>
47015         <ArgumentList>
47016           <Argument name="channel">
47017             <descriptive>
47018                 <description><p>
47019  An open channel
47020                 </p></description>
47021             </descriptive>
47022             <Type name="Channel"/>
47023           </Argument>
47024         </ArgumentList>
47025       </Operation>
47026     </Interface>
47027     <Interface name="TransmitSuccessCallback" id="::SecureElement::TransmitSuccessCallback">
47028       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface TransmitSuccessCallback {&#13;
47029 &#13;
47030     void onsuccess(byte[] response);&#13;
47031   };</webidl>
47032       <descriptive>
47033           <brief>
47034  This interface specifies the success callback that is invoked when <em>Channel.transmit() </em>completes successfully.
47035           </brief>
47036          <description>
47037           <p>
47038 This callback interface specifies a success method with an array of bytes as an input parameter. It is used in <em>Channel.transmit()</em>.
47039           </p>
47040          </description>
47041           <version>
47042  2.1
47043           </version>
47044       </descriptive>
47045       <ExtendedAttributeList>
47046         <ExtendedAttribute name="Callback" value="FunctionOnly">
47047           <webidl>Callback</webidl>
47048         </ExtendedAttribute>
47049         <ExtendedAttribute name="NoInterfaceObject">
47050           <webidl> NoInterfaceObject</webidl>
47051         </ExtendedAttribute>
47052       </ExtendedAttributeList>
47053       <Operation name="onsuccess" id="::SecureElement::TransmitSuccessCallback::onsuccess">
47054         <webidl>    void onsuccess(byte[] response);</webidl>
47055         <descriptive>
47056             <brief>
47057  Called when an asynchronous call completes successfully.
47058             </brief>
47059             <version>
47060  2.1
47061             </version>
47062         </descriptive>
47063         <Type type="void"/>
47064         <ArgumentList>
47065           <Argument name="response">
47066             <descriptive>
47067                 <description><p>
47068  An APDU command response that is transmitted on a channel
47069                 </p></description>
47070             </descriptive>
47071             <Type type="array">
47072               <Type type="byte"/>
47073             </Type>
47074           </Argument>
47075         </ArgumentList>
47076       </Operation>
47077     </Interface>
47078   </Module>
47079   <Module name="SystemInfo" id="::SystemInfo">
47080     <webidl>module SystemInfo {
47081
47082   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; };
47083
47084   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; };
47085   
47086   enum SystemInfoDeviceOrientationStatus { &quot;PORTRAIT_PRIMARY&quot;, &quot;PORTRAIT_SECONDARY&quot;, &quot;LANDSCAPE_PRIMARY&quot;, &quot;LANDSCAPE_SECONDARY&quot; };
47087   
47088   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; };
47089   
47090   enum SystemInfoProfile { &quot;MOBILE_FULL&quot;, &quot;MOBILE_WEB&quot; };
47091
47092   [NoInterfaceObject] interface SystemInfoObject {
47093     readonly attribute <ref>SystemInfo</ref> systeminfo;
47094   };
47095   <ref>Tizen</ref> implements <ref>SystemInfoObject</ref>;
47096
47097   [NoInterfaceObject] interface SystemInfo {
47098
47099     <ref>SystemInfoDeviceCapability</ref> getCapabilities() raises(<ref>WebAPIException</ref>);
47100
47101     void getPropertyValue(<ref>SystemInfoPropertyId</ref> property,
47102                           <ref>SystemInfoPropertySuccessCallback</ref> successCallback,
47103                           optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
47104
47105     unsigned long addPropertyValueChangeListener(<ref>SystemInfoPropertyId</ref> property,
47106                                         <ref>SystemInfoPropertySuccessCallback</ref> successCallback,
47107                                         optional <ref>SystemInfoOptions</ref>? options) raises(<ref>WebAPIException</ref>);
47108
47109     void removePropertyValueChangeListener(unsigned long listenerId) raises(<ref>WebAPIException</ref>);
47110   };
47111
47112   [NoInterfaceObject] interface SystemInfoDeviceCapability {
47113     readonly attribute boolean bluetooth;
47114
47115     readonly attribute boolean nfc;
47116
47117     readonly attribute boolean nfcReservedPush ;
47118
47119     readonly attribute unsigned short multiTouchCount;
47120
47121     readonly attribute boolean inputKeyboard;
47122
47123     readonly attribute boolean inputKeyboardLayout;
47124
47125     readonly attribute boolean wifi;
47126
47127     readonly attribute boolean wifiDirect;
47128
47129     readonly attribute boolean opengles;
47130
47131     readonly attribute DOMString openglestextureFormat;
47132
47133     readonly attribute boolean openglesVersion1_1;
47134
47135     readonly attribute boolean openglesVersion2_0;
47136
47137     readonly attribute boolean fmRadio;
47138
47139     readonly attribute DOMString platformVersion raises(<ref>WebAPIException</ref>);
47140
47141     readonly attribute DOMString webApiVersion raises(<ref>WebAPIException</ref>);
47142
47143     readonly attribute DOMString nativeApiVersion raises(<ref>WebAPIException</ref>);
47144
47145     readonly attribute DOMString platformName;
47146
47147     readonly attribute boolean camera;
47148
47149     readonly attribute boolean cameraFront;
47150
47151     readonly attribute boolean cameraFrontFlash;
47152
47153     readonly attribute boolean cameraBack;
47154
47155     readonly attribute boolean cameraBackFlash;
47156
47157     readonly attribute boolean location;
47158
47159     readonly attribute boolean locationGps;
47160
47161     readonly attribute boolean locationWps;
47162
47163     readonly attribute boolean microphone;
47164
47165     readonly attribute boolean usbHost;
47166
47167     readonly attribute boolean usbAccessory;
47168
47169     readonly attribute boolean screenOutputRca;
47170
47171     readonly attribute boolean screenOutputHdmi;
47172
47173     readonly attribute DOMString platformCoreCpuArch;
47174
47175     readonly attribute DOMString platformCoreFpuArch;
47176
47177     readonly attribute boolean sipVoip;
47178
47179     readonly attribute DOMString duid;
47180
47181     readonly attribute boolean speechRecognition;
47182
47183     readonly attribute boolean speechSynthesis;
47184
47185     readonly attribute boolean accelerometer;
47186
47187     readonly attribute boolean accelerometerWakeup;
47188
47189     readonly attribute boolean barometer;
47190
47191     readonly attribute boolean barometerWakeup;
47192
47193     readonly attribute boolean gyroscope;
47194
47195     readonly attribute boolean gyroscopeWakeup;
47196
47197     readonly attribute boolean magnetometer;
47198
47199     readonly attribute boolean magnetometerWakeup;
47200
47201     readonly attribute boolean photometer;
47202
47203     readonly attribute boolean photometerWakeup;
47204
47205     readonly attribute boolean proximity;
47206
47207     readonly attribute boolean proximityWakeup;
47208
47209     readonly attribute boolean tiltmeter;
47210
47211     readonly attribute boolean tiltmeterWakeup;
47212
47213     readonly attribute boolean dataEncryption;
47214
47215     readonly attribute boolean graphicsAcceleration;
47216
47217     readonly attribute boolean push;
47218
47219     readonly attribute boolean telephony;
47220
47221     readonly attribute boolean telephonyMms;
47222
47223     readonly attribute boolean telephonySms;
47224
47225     readonly attribute boolean screenSizeNormal;
47226
47227     readonly attribute boolean screenSize480_800;
47228
47229     readonly attribute boolean screenSize720_1280;
47230
47231     readonly attribute boolean autoRotation;
47232
47233     readonly attribute boolean shellAppWidget;
47234
47235     readonly attribute boolean visionImageRecognition;
47236
47237     readonly attribute boolean visionQrcodeGeneration;
47238
47239     readonly attribute boolean visionQrcodeRecognition;
47240
47241     readonly attribute boolean visionFaceRecognition;
47242
47243     readonly attribute boolean secureElement;
47244         
47245     readonly attribute boolean nativeOspCompatible;
47246
47247     readonly attribute <ref>SystemInfoProfile</ref> profile;
47248   };  
47249   
47250   dictionary SystemInfoOptions {
47251     unsigned long timeout;
47252
47253     double highThreshold;
47254
47255     double lowThreshold;
47256   };
47257
47258   [Callback=FunctionOnly, NoInterfaceObject] interface SystemInfoPropertySuccessCallback {
47259     void onsuccess(<ref>SystemInfoProperty</ref> prop);
47260   };
47261
47262   [NoInterfaceObject] interface SystemInfoProperty {
47263   };
47264
47265   [NoInterfaceObject] interface SystemInfoBattery : <ref>SystemInfoProperty</ref> {
47266     readonly attribute double level;
47267
47268     readonly attribute boolean isCharging;
47269   };
47270
47271   [NoInterfaceObject] interface SystemInfoCpu : <ref>SystemInfoProperty</ref> {
47272     readonly attribute double load;
47273   };
47274
47275   [NoInterfaceObject] interface SystemInfoStorage : <ref>SystemInfoProperty</ref> {
47276     readonly attribute <ref>SystemInfoStorageUnit</ref>[] units;
47277   };
47278
47279   [NoInterfaceObject] interface SystemInfoStorageUnit : <ref>SystemInfoProperty</ref> {
47280     readonly attribute DOMString type;
47281
47282     readonly attribute unsigned long long capacity;
47283
47284     readonly attribute unsigned long long availableCapacity;
47285
47286     readonly attribute boolean isRemovable;
47287
47288     readonly attribute boolean isRemoveable;
47289   };
47290
47291   [NoInterfaceObject] interface SystemInfoDisplay : <ref>SystemInfoProperty</ref> {
47292     readonly attribute unsigned long resolutionWidth;
47293
47294     readonly attribute unsigned long resolutionHeight;
47295
47296     readonly attribute unsigned long dotsPerInchWidth;
47297
47298     readonly attribute unsigned long dotsPerInchHeight;
47299
47300     readonly attribute double physicalWidth;
47301
47302     readonly attribute double physicalHeight;
47303
47304     readonly attribute double brightness;
47305   };
47306
47307   [NoInterfaceObject] interface SystemInfoDeviceOrientation : <ref>SystemInfoProperty</ref> {
47308
47309     readonly attribute <ref>SystemInfoDeviceOrientationStatus</ref> status;
47310     readonly attribute boolean isAutoRotation;
47311   };
47312   
47313   [NoInterfaceObject] interface SystemInfoBuild : <ref>SystemInfoProperty</ref> {
47314
47315     readonly attribute DOMString model;
47316     readonly attribute DOMString manufacturer;
47317     readonly attribute DOMString buildVersion;
47318   };
47319
47320   [NoInterfaceObject] interface SystemInfoLocale : <ref>SystemInfoProperty</ref> {
47321
47322     readonly attribute DOMString language;
47323
47324     readonly attribute DOMString country;
47325   };
47326   
47327   [NoInterfaceObject] interface SystemInfoNetwork : <ref>SystemInfoProperty</ref> {    
47328
47329     readonly attribute <ref>SystemInfoNetworkType</ref> networkType;    
47330   };    
47331
47332    [NoInterfaceObject] interface SystemInfoWifiNetwork : <ref>SystemInfoProperty</ref> {    
47333
47334     readonly attribute DOMString status;    
47335     readonly attribute DOMString ssid;    
47336     readonly attribute DOMString ipAddress;    
47337      readonly attribute DOMString ipv6Address;    
47338     readonly attribute double signalStrength;    
47339   };    
47340
47341   [NoInterfaceObject] interface SystemInfoCellularNetwork : <ref>SystemInfoProperty</ref> {    
47342
47343     readonly attribute DOMString status;    
47344     readonly attribute DOMString apn;    
47345     readonly attribute DOMString ipAddress;    
47346     readonly attribute DOMString ipv6Address;    
47347     readonly attribute unsigned short mcc;    
47348     readonly attribute unsigned short mnc;    
47349     readonly attribute unsigned short cellId;    
47350     readonly attribute unsigned short lac;    
47351     readonly attribute boolean isRoaming;
47352     readonly attribute boolean isFlightMode;
47353     readonly attribute DOMString imei raises(<ref>WebAPIException</ref>);
47354   };
47355
47356   [NoInterfaceObject] interface SystemInfoSIM : <ref>SystemInfoProperty</ref> {
47357     readonly attribute <ref>SystemInfoSimState</ref> state raises(<ref>WebAPIException</ref>);
47358     readonly attribute DOMString operatorName raises(<ref>WebAPIException</ref>);
47359     readonly attribute DOMString msisdn raises(<ref>WebAPIException</ref>);
47360     readonly attribute DOMString iccid raises(<ref>WebAPIException</ref>);
47361     readonly attribute unsigned short mcc raises(<ref>WebAPIException</ref>);
47362     readonly attribute unsigned short mnc raises(<ref>WebAPIException</ref>);
47363     readonly attribute DOMString msin raises(<ref>WebAPIException</ref>);
47364     readonly attribute DOMString spn raises(<ref>WebAPIException</ref>);
47365   };    
47366   
47367   [NoInterfaceObject] interface SystemInfoPeripheral : <ref>SystemInfoProperty</ref> {
47368
47369     readonly attribute boolean isVideoOutputOn;
47370   };
47371 };</webidl>
47372     <descriptive>
47373         <brief>
47374  This specification defines interfaces and methods that provide web applications with access to various properties of a system.
47375         </brief>
47376        <description>
47377         <p>
47378 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. 
47379         </p>
47380         <p>
47381 The following provides an overview of the tree data structure:
47382         </p>
47383         <ul>
47384           <li>
47385 BATTERY          </li>
47386           <li>
47387 CPU          </li>
47388           <li>
47389 STORAGE          </li>
47390           <li>
47391 DISPLAY          </li>
47392           <li>
47393 DEVICE_ORIENTATION          </li>
47394           <li>
47395 BUILD          </li>
47396           <li>
47397 LOCALE          </li>
47398           <li>
47399 NETWORK          </li>
47400           <li>
47401 WIFI_NETWORK          </li>
47402           <li>
47403 CELLULAR_NETWORK          </li>
47404           <li>
47405 SIM          </li>
47406           <li>
47407 PERIPHERAL          </li>
47408         </ul>
47409         <p>
47410 For more information on the SystemInfo features, see <a href="../../org.tizen.web.appprogramming/html/guide/sys_guide/systeminfo.htm">System Information Guide</a>.
47411         </p>
47412        </description>
47413         <version>
47414  1.0
47415         </version>
47416     </descriptive>
47417     <Enum name="SystemInfoPropertyId" id="::SystemInfo::SystemInfoPropertyId">
47418       <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>
47419       <descriptive>
47420           <brief>
47421  The device property identifier.
47422           </brief>
47423           <version>
47424  2.0
47425           </version>
47426           <remark>
47427  LOCALE and PERIPHERAL are supported Since 2.1
47428           </remark>
47429       </descriptive>
47430       <EnumValue stringvalue="BATTERY">
47431         <webidl> &quot;BATTERY</webidl>
47432       </EnumValue>
47433       <EnumValue stringvalue="CPU">
47434         <webidl> &quot;CPU</webidl>
47435       </EnumValue>
47436       <EnumValue stringvalue="STORAGE">
47437         <webidl> &quot;STORAGE</webidl>
47438       </EnumValue>
47439       <EnumValue stringvalue="DISPLAY">
47440         <webidl> &quot;DISPLAY</webidl>
47441       </EnumValue>
47442       <EnumValue stringvalue="DEVICE_ORIENTATION">
47443         <webidl> &quot;DEVICE_ORIENTATION</webidl>
47444       </EnumValue>
47445       <EnumValue stringvalue="BUILD">
47446         <webidl> &quot;BUILD</webidl>
47447       </EnumValue>
47448       <EnumValue stringvalue="LOCALE">
47449         <webidl> &quot;LOCALE</webidl>
47450       </EnumValue>
47451       <EnumValue stringvalue="NETWORK">
47452         <webidl> &quot;NETWORK</webidl>
47453       </EnumValue>
47454       <EnumValue stringvalue="WIFI_NETWORK">
47455         <webidl> &quot;WIFI_NETWORK</webidl>
47456       </EnumValue>
47457       <EnumValue stringvalue="CELLULAR_NETWORK">
47458         <webidl> &quot;CELLULAR_NETWORK</webidl>
47459       </EnumValue>
47460       <EnumValue stringvalue="SIM">
47461         <webidl> &quot;SIM</webidl>
47462       </EnumValue>
47463       <EnumValue stringvalue="PERIPHERAL">
47464         <webidl> &quot;PERIPHERAL</webidl>
47465       </EnumValue>
47466     </Enum>
47467     <Enum name="SystemInfoNetworkType" id="::SystemInfo::SystemInfoNetworkType">
47468       <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>
47469       <descriptive>
47470           <brief>
47471  Data Network Type.
47472           </brief>
47473           <version>
47474  2.0
47475           </version>
47476       </descriptive>
47477       <EnumValue stringvalue="NONE">
47478         <webidl> &quot;NONE</webidl>
47479       </EnumValue>
47480       <EnumValue stringvalue="2G">
47481         <webidl> &quot;2G</webidl>
47482       </EnumValue>
47483       <EnumValue stringvalue="2.5G">
47484         <webidl> &quot;2.5G</webidl>
47485       </EnumValue>
47486       <EnumValue stringvalue="3G">
47487         <webidl> &quot;3G</webidl>
47488       </EnumValue>
47489       <EnumValue stringvalue="4G">
47490         <webidl> &quot;4G</webidl>
47491       </EnumValue>
47492       <EnumValue stringvalue="WIFI">
47493         <webidl> &quot;WIFI</webidl>
47494       </EnumValue>
47495       <EnumValue stringvalue="ETHERNET">
47496         <webidl> &quot;ETHERNET</webidl>
47497       </EnumValue>
47498       <EnumValue stringvalue="UNKNOWN">
47499         <webidl> &quot;UNKNOWN</webidl>
47500       </EnumValue>
47501     </Enum>
47502     <Enum name="SystemInfoDeviceOrientationStatus" id="::SystemInfo::SystemInfoDeviceOrientationStatus">
47503       <webidl>  enum SystemInfoDeviceOrientationStatus { &quot;PORTRAIT_PRIMARY&quot;, &quot;PORTRAIT_SECONDARY&quot;, &quot;LANDSCAPE_PRIMARY&quot;, &quot;LANDSCAPE_SECONDARY&quot; };</webidl>
47504       <descriptive>
47505           <brief>
47506  Device Orientation Status.
47507           </brief>
47508           <version>
47509  2.0
47510           </version>
47511       </descriptive>
47512       <EnumValue stringvalue="PORTRAIT_PRIMARY">
47513         <webidl> &quot;PORTRAIT_PRIMARY</webidl>
47514       </EnumValue>
47515       <EnumValue stringvalue="PORTRAIT_SECONDARY">
47516         <webidl> &quot;PORTRAIT_SECONDARY</webidl>
47517       </EnumValue>
47518       <EnumValue stringvalue="LANDSCAPE_PRIMARY">
47519         <webidl> &quot;LANDSCAPE_PRIMARY</webidl>
47520       </EnumValue>
47521       <EnumValue stringvalue="LANDSCAPE_SECONDARY">
47522         <webidl> &quot;LANDSCAPE_SECONDARY</webidl>
47523       </EnumValue>
47524     </Enum>
47525     <Enum name="SystemInfoSimState" id="::SystemInfo::SystemInfoSimState">
47526       <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>
47527       <descriptive>
47528           <brief>
47529  Sim State.
47530           </brief>
47531           <version>
47532  2.1
47533           </version>
47534       </descriptive>
47535       <EnumValue stringvalue="ABSENT">
47536         <webidl> &quot;ABSENT</webidl>
47537       </EnumValue>
47538       <EnumValue stringvalue="INITIALIZING">
47539         <webidl> &quot;INITIALIZING</webidl>
47540       </EnumValue>
47541       <EnumValue stringvalue="READY">
47542         <webidl> &quot;READY</webidl>
47543       </EnumValue>
47544       <EnumValue stringvalue="PIN_REQUIRED">
47545         <webidl> &quot;PIN_REQUIRED</webidl>
47546       </EnumValue>
47547       <EnumValue stringvalue="PUK_REQUIRED">
47548         <webidl> &quot;PUK_REQUIRED</webidl>
47549       </EnumValue>
47550       <EnumValue stringvalue="NETWORK_LOCKED">
47551         <webidl> &quot;NETWORK_LOCKED</webidl>
47552       </EnumValue>
47553       <EnumValue stringvalue="SIM_LOCKED">
47554         <webidl> &quot;SIM_LOCKED</webidl>
47555       </EnumValue>
47556       <EnumValue stringvalue="UNKNOWN">
47557         <webidl> &quot;UNKNOWN</webidl>
47558       </EnumValue>
47559     </Enum>
47560     <Enum name="SystemInfoProfile" id="::SystemInfo::SystemInfoProfile">
47561       <webidl>  enum SystemInfoProfile { &quot;MOBILE_FULL&quot;, &quot;MOBILE_WEB&quot; };</webidl>
47562       <descriptive>
47563           <brief>
47564  Device Profile.
47565           </brief>
47566           <version>
47567  2.2
47568           </version>
47569       </descriptive>
47570       <EnumValue stringvalue="MOBILE_FULL">
47571         <webidl> &quot;MOBILE_FULL</webidl>
47572       </EnumValue>
47573       <EnumValue stringvalue="MOBILE_WEB">
47574         <webidl> &quot;MOBILE_WEB</webidl>
47575       </EnumValue>
47576     </Enum>
47577     <Interface name="SystemInfoObject" id="::SystemInfo::SystemInfoObject">
47578       <webidl>  [NoInterfaceObject] interface SystemInfoObject {
47579     readonly attribute <ref>SystemInfo</ref> systeminfo;
47580   };</webidl>
47581       <descriptive>
47582           <brief>
47583  Defines what is instantiated by the <em>Tizen </em>object from the Tizen Platform.
47584           </brief>
47585          <description>
47586           <p>
47587 There will be a tizen.systeminfo object that allows accessing the
47588 functionality of the SystemInfo API.
47589           </p>
47590          </description>
47591           <version>
47592  1.0
47593           </version>
47594       </descriptive>
47595       <ExtendedAttributeList>
47596         <ExtendedAttribute name="NoInterfaceObject">
47597           <webidl>NoInterfaceObject</webidl>
47598         </ExtendedAttribute>
47599       </ExtendedAttributeList>
47600       <Attribute readonly="readonly" name="systeminfo" id="::SystemInfo::SystemInfoObject::systeminfo">
47601         <webidl>    readonly attribute <ref>SystemInfo</ref> systeminfo;</webidl>
47602         <Type name="SystemInfo"/>
47603       </Attribute>
47604     </Interface>
47605     <Implements name1="Tizen" name2="SystemInfoObject">
47606       <webidl>  <ref>Tizen</ref> implements <ref>SystemInfoObject</ref>;</webidl>
47607     </Implements>
47608     <Interface name="SystemInfo" id="::SystemInfo::SystemInfo">
47609       <webidl>  [NoInterfaceObject] interface SystemInfo {
47610
47611     <ref>SystemInfoDeviceCapability</ref> getCapabilities() raises(<ref>WebAPIException</ref>);
47612
47613     void getPropertyValue(<ref>SystemInfoPropertyId</ref> property,
47614                           <ref>SystemInfoPropertySuccessCallback</ref> successCallback,
47615                           optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
47616
47617     unsigned long addPropertyValueChangeListener(<ref>SystemInfoPropertyId</ref> property,
47618                                         <ref>SystemInfoPropertySuccessCallback</ref> successCallback,
47619                                         optional <ref>SystemInfoOptions</ref>? options) raises(<ref>WebAPIException</ref>);
47620
47621     void removePropertyValueChangeListener(unsigned long listenerId) raises(<ref>WebAPIException</ref>);
47622   };</webidl>
47623       <descriptive>
47624           <brief>
47625  This entry interface queries the information of a system.
47626           </brief>
47627          <description>
47628           <p>
47629 This API offers methods for retrieving system information
47630 and for subscribing notifications of system information changes.
47631           </p>
47632          </description>
47633       </descriptive>
47634       <ExtendedAttributeList>
47635         <ExtendedAttribute name="NoInterfaceObject">
47636           <webidl>NoInterfaceObject</webidl>
47637         </ExtendedAttribute>
47638       </ExtendedAttributeList>
47639       <Operation name="getCapabilities" id="::SystemInfo::SystemInfo::getCapabilities">
47640         <webidl>    <ref>SystemInfoDeviceCapability</ref> getCapabilities() raises(<ref>WebAPIException</ref>);</webidl>
47641         <descriptive>
47642             <brief>
47643  Gets the capabilities of the device. 
47644             </brief>
47645            <description>
47646             <p>
47647 The function must synchronously acquire the capabilities of the device. 
47648             </p>
47649            </description>
47650             <version>
47651  2.0
47652             </version>
47653             <Code> var deviceCapabilities;
47654  deviceCapabilities = tizen.systeminfo.getCapabilities();
47655  if (deviceCapabilities.bluetooth)
47656  {
47657      console.log(&quot;Bluetooth is supported&quot;);
47658  }
47659  </Code>
47660         </descriptive>
47661         <Type name="SystemInfoDeviceCapability"/>
47662         <ArgumentList/>
47663         <Raises>
47664           <RaiseException name="WebAPIException">
47665             <descriptive>
47666                 <description><p>
47667  with error type NotSupportedError, if this feature is not supported.
47668                 </p></description>
47669                 <description><p>
47670  with error type SecurityError, if this functionality is not allowed.
47671                 </p></description>
47672                 <description><p>
47673  with error type UnknownError in any other error case.
47674                 </p></description>
47675             </descriptive>
47676           </RaiseException>
47677         </Raises>
47678       </Operation>
47679       <Operation name="getPropertyValue" id="::SystemInfo::SystemInfo::getPropertyValue">
47680         <webidl>    void getPropertyValue(<ref>SystemInfoPropertyId</ref> property,
47681                           <ref>SystemInfoPropertySuccessCallback</ref> successCallback,
47682                           optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
47683         <descriptive>
47684             <brief>
47685  Gets the current value of a specified system property.
47686             </brief>
47687            <description>
47688             <p>
47689 The function must asynchronously acquire the current value of the requested property. If it is successful,
47690 the successCallback must be invoked with an object containing the information provided by the property.
47691             </p>
47692             <p>
47693 The <em>errorCallback() </em>can be launched with any of these error types:
47694             </p>
47695             <ul>
47696               <li>
47697 UnknownError - If any other error occurs.              </li>
47698             </ul>
47699            </description>
47700             <version>
47701  1.0
47702             </version>
47703             <Code> function onSuccessCallback(battery) {
47704      console.log(&quot;The battery level is &quot; + battery.level);
47705  }
47706
47707  function onErrorCallback(error) {
47708      console.log(&quot;An error occurred &quot; + error.message);
47709  }
47710
47711  tizen.systeminfo.getPropertyValue(&quot;BATTERY&quot;, onSuccessCallback, onErrorCallback);
47712  </Code>
47713         </descriptive>
47714         <Type type="void"/>
47715         <ArgumentList>
47716           <Argument name="property">
47717             <descriptive>
47718                 <description><p>
47719  The name of the property to retrieve.
47720                 </p></description>
47721             </descriptive>
47722             <Type name="SystemInfoPropertyId"/>
47723           </Argument>
47724           <Argument name="successCallback">
47725             <descriptive>
47726                 <description><p>
47727  Function called when the properties have been successfully retrieved.
47728                 </p></description>
47729             </descriptive>
47730             <Type name="SystemInfoPropertySuccessCallback"/>
47731           </Argument>
47732           <Argument optional="optional" name="errorCallback">
47733             <descriptive>
47734                 <description><p>
47735  Function called when an error occurred while retrieving the properties.
47736                 </p></description>
47737             </descriptive>
47738             <Type name="ErrorCallback" nullable="nullable"/>
47739           </Argument>
47740         </ArgumentList>
47741         <Raises>
47742           <RaiseException name="WebAPIException">
47743             <descriptive>
47744                 <description><p>
47745  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
47746                 </p></description>
47747                 <description><p>
47748  with error type SecurityError, if this functionality is not allowed.
47749                 </p></description>
47750                 <description><p>
47751  with error type UnknownError in any other error case.
47752                 </p></description>
47753             </descriptive>
47754           </RaiseException>
47755         </Raises>
47756       </Operation>
47757       <Operation name="addPropertyValueChangeListener" id="::SystemInfo::SystemInfo::addPropertyValueChangeListener">
47758         <webidl>    unsigned long addPropertyValueChangeListener(<ref>SystemInfoPropertyId</ref> property,
47759                                         <ref>SystemInfoPropertySuccessCallback</ref> successCallback,
47760                                         optional <ref>SystemInfoOptions</ref>? options) raises(<ref>WebAPIException</ref>);</webidl>
47761         <descriptive>
47762             <brief>
47763  Adds a listener to allow tracking of changes in one or more system properties.
47764             </brief>
47765            <description>
47766             <p>
47767 When called, it immediately returns and then asynchronously starts a watch process defined by the following steps:
47768             </p>
47769             <p>
47770 1. Register the successCallback to receive system events that the status of the requested properties may have changed.
47771             </p>
47772             <p>
47773 2. When a system event is successfully received invoke the associated successCallback with an object containing the property
47774 values.
47775             </p>
47776             <p>
47777 3. Repeat step 2 until removePropertyValueChangeListener function is called.
47778             </p>
47779             <p>
47780 If property value is 'BUILD', listener would not be registered because 'BUILD' property's value is a fixed value.
47781             </p>
47782            </description>
47783             <version>
47784  1.0
47785             </version>
47786             <Code> function onSuccessCallback(battery) {
47787      console.log(&quot;Low battery:  &quot; + battery.level);
47788  }
47789
47790
47791  tizen.systeminfo.addPropertyValueChangeListener(&quot;BATTERY&quot;, onSuccessCallback, {lowThreshold : 0.2});
47792  </Code>
47793         </descriptive>
47794         <Type type="unsigned long">
47795           <descriptive>
47796               <description><p>
47797  unsigned long An identifier used to clear the watch subscription.
47798               </p></description>
47799           </descriptive>
47800         </Type>
47801         <ArgumentList>
47802           <Argument name="property">
47803             <descriptive>
47804                 <description><p>
47805  The name of the property to retrieve.
47806                 </p></description>
47807             </descriptive>
47808             <Type name="SystemInfoPropertyId"/>
47809           </Argument>
47810           <Argument name="successCallback">
47811             <descriptive>
47812                 <description><p>
47813  Function called when the properties have been successfully retrieved.
47814                 </p></description>
47815             </descriptive>
47816             <Type name="SystemInfoPropertySuccessCallback"/>
47817           </Argument>
47818           <Argument optional="optional" name="options">
47819             <descriptive>
47820                 <description><p>
47821  An object containing the various options for fetching the properties requested.
47822                 </p></description>
47823             </descriptive>
47824             <Type name="SystemInfoOptions" nullable="nullable"/>
47825           </Argument>
47826         </ArgumentList>
47827         <Raises>
47828           <RaiseException name="WebAPIException">
47829             <descriptive>
47830                 <description><p>
47831  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
47832                 </p></description>
47833                 <description><p>
47834  with error type NotSupportedError, if this feature is not supported.
47835                 </p></description>
47836                 <description><p>
47837  with error type InvalidValuesError, if any of the input 
47838 parameters contain an invalid value.
47839                 </p></description>
47840                 <description><p>
47841  with error type SecurityError, if this functionality is not allowed.
47842                 </p></description>
47843                 <description><p>
47844  with error type UnknownError in any other error case.
47845                 </p></description>
47846             </descriptive>
47847           </RaiseException>
47848         </Raises>
47849       </Operation>
47850       <Operation name="removePropertyValueChangeListener" id="::SystemInfo::SystemInfo::removePropertyValueChangeListener">
47851         <webidl>    void removePropertyValueChangeListener(unsigned long listenerId) raises(<ref>WebAPIException</ref>);</webidl>
47852         <descriptive>
47853             <brief>
47854  Unsubscribes notifications for property changes set up by addPropertyValueChangeListener.
47855             </brief>
47856            <description>
47857             <p>
47858 If a valid listenerId argument is passed that corresponds to a subscription
47859 already place, then the watch process MUST immediately terminate and no further
47860 callback is invoked. If the listenerId argument does not correspond to a valid subscription,
47861 the method should return without any further action.
47862             </p>
47863            </description>
47864             <version>
47865  1.0
47866             </version>
47867             <Code> var id = null;
47868  function onSuccessCallback(battery) {
47869     console.log(&quot;New value for Battery level is &quot; + battery.level);
47870     if (id != null) { // After receiving the first notification, we clear it
47871         tizen.systeminfo.removePropertyValueChangeListener(id);
47872     }
47873  }
47874
47875  id = tizen.systeminfo.addPropertyValueChangeListener(&quot;BATTERY&quot;, onSuccessCallback);
47876  </Code>
47877         </descriptive>
47878         <Type type="void"/>
47879         <ArgumentList>
47880           <Argument name="listenerId">
47881             <descriptive>
47882                 <description><p>
47883  An identifier of the subscription returned by the addPropertyValueChangeListener() method.
47884                 </p></description>
47885             </descriptive>
47886             <Type type="unsigned long"/>
47887           </Argument>
47888         </ArgumentList>
47889         <Raises>
47890           <RaiseException name="WebAPIException">
47891             <descriptive>
47892                 <description><p>
47893  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
47894                 </p></description>
47895                 <description><p>
47896  with error type NotSupportedError, if this feature is not supported.
47897                 </p></description>
47898                 <description><p>
47899  with error type InvalidValuesError, if any of the input 
47900 parameters contain an invalid value.
47901                 </p></description>
47902                 <description><p>
47903  with error type SecurityError, if this functionality is not allowed.
47904                 </p></description>
47905                 <description><p>
47906  with error type UnknownError in any other error case.
47907                 </p></description>
47908             </descriptive>
47909           </RaiseException>
47910         </Raises>
47911       </Operation>
47912     </Interface>
47913     <Interface name="SystemInfoDeviceCapability" id="::SystemInfo::SystemInfoDeviceCapability">
47914       <webidl>  [NoInterfaceObject] interface SystemInfoDeviceCapability {
47915     readonly attribute boolean bluetooth;
47916
47917     readonly attribute boolean nfc;
47918
47919     readonly attribute boolean nfcReservedPush ;
47920
47921     readonly attribute unsigned short multiTouchCount;
47922
47923     readonly attribute boolean inputKeyboard;
47924
47925     readonly attribute boolean inputKeyboardLayout;
47926
47927     readonly attribute boolean wifi;
47928
47929     readonly attribute boolean wifiDirect;
47930
47931     readonly attribute boolean opengles;
47932
47933     readonly attribute DOMString openglestextureFormat;
47934
47935     readonly attribute boolean openglesVersion1_1;
47936
47937     readonly attribute boolean openglesVersion2_0;
47938
47939     readonly attribute boolean fmRadio;
47940
47941     readonly attribute DOMString platformVersion raises(<ref>WebAPIException</ref>);
47942
47943     readonly attribute DOMString webApiVersion raises(<ref>WebAPIException</ref>);
47944
47945     readonly attribute DOMString nativeApiVersion raises(<ref>WebAPIException</ref>);
47946
47947     readonly attribute DOMString platformName;
47948
47949     readonly attribute boolean camera;
47950
47951     readonly attribute boolean cameraFront;
47952
47953     readonly attribute boolean cameraFrontFlash;
47954
47955     readonly attribute boolean cameraBack;
47956
47957     readonly attribute boolean cameraBackFlash;
47958
47959     readonly attribute boolean location;
47960
47961     readonly attribute boolean locationGps;
47962
47963     readonly attribute boolean locationWps;
47964
47965     readonly attribute boolean microphone;
47966
47967     readonly attribute boolean usbHost;
47968
47969     readonly attribute boolean usbAccessory;
47970
47971     readonly attribute boolean screenOutputRca;
47972
47973     readonly attribute boolean screenOutputHdmi;
47974
47975     readonly attribute DOMString platformCoreCpuArch;
47976
47977     readonly attribute DOMString platformCoreFpuArch;
47978
47979     readonly attribute boolean sipVoip;
47980
47981     readonly attribute DOMString duid;
47982
47983     readonly attribute boolean speechRecognition;
47984
47985     readonly attribute boolean speechSynthesis;
47986
47987     readonly attribute boolean accelerometer;
47988
47989     readonly attribute boolean accelerometerWakeup;
47990
47991     readonly attribute boolean barometer;
47992
47993     readonly attribute boolean barometerWakeup;
47994
47995     readonly attribute boolean gyroscope;
47996
47997     readonly attribute boolean gyroscopeWakeup;
47998
47999     readonly attribute boolean magnetometer;
48000
48001     readonly attribute boolean magnetometerWakeup;
48002
48003     readonly attribute boolean photometer;
48004
48005     readonly attribute boolean photometerWakeup;
48006
48007     readonly attribute boolean proximity;
48008
48009     readonly attribute boolean proximityWakeup;
48010
48011     readonly attribute boolean tiltmeter;
48012
48013     readonly attribute boolean tiltmeterWakeup;
48014
48015     readonly attribute boolean dataEncryption;
48016
48017     readonly attribute boolean graphicsAcceleration;
48018
48019     readonly attribute boolean push;
48020
48021     readonly attribute boolean telephony;
48022
48023     readonly attribute boolean telephonyMms;
48024
48025     readonly attribute boolean telephonySms;
48026
48027     readonly attribute boolean screenSizeNormal;
48028
48029     readonly attribute boolean screenSize480_800;
48030
48031     readonly attribute boolean screenSize720_1280;
48032
48033     readonly attribute boolean autoRotation;
48034
48035     readonly attribute boolean shellAppWidget;
48036
48037     readonly attribute boolean visionImageRecognition;
48038
48039     readonly attribute boolean visionQrcodeGeneration;
48040
48041     readonly attribute boolean visionQrcodeRecognition;
48042
48043     readonly attribute boolean visionFaceRecognition;
48044
48045     readonly attribute boolean secureElement;
48046         
48047     readonly attribute boolean nativeOspCompatible;
48048
48049     readonly attribute <ref>SystemInfoProfile</ref> profile;
48050   };</webidl>
48051       <descriptive>
48052           <brief>
48053  SystemInfoDeviceCapability object.
48054           </brief>
48055           <version>
48056  2.0
48057           </version>
48058       </descriptive>
48059       <ExtendedAttributeList>
48060         <ExtendedAttribute name="NoInterfaceObject">
48061           <webidl>NoInterfaceObject</webidl>
48062         </ExtendedAttribute>
48063       </ExtendedAttributeList>
48064       <Attribute readonly="readonly" name="bluetooth" id="::SystemInfo::SystemInfoDeviceCapability::bluetooth">
48065         <webidl>    readonly attribute boolean bluetooth;</webidl>
48066         <descriptive>
48067             <brief>
48068  Indicates whether the device supports Bluetooth.
48069             </brief>
48070             <version>
48071  2.0
48072             </version>
48073         </descriptive>
48074         <Type type="boolean"/>
48075       </Attribute>
48076       <Attribute readonly="readonly" name="nfc" id="::SystemInfo::SystemInfoDeviceCapability::nfc">
48077         <webidl>    readonly attribute boolean nfc;</webidl>
48078         <descriptive>
48079             <brief>
48080  Indicates whether the device supports NFC.
48081             </brief>
48082             <version>
48083  2.0
48084             </version>
48085         </descriptive>
48086         <Type type="boolean"/>
48087       </Attribute>
48088       <Attribute readonly="readonly" name="nfcReservedPush" id="::SystemInfo::SystemInfoDeviceCapability::nfcReservedPush">
48089         <webidl>    readonly attribute boolean nfcReservedPush ;</webidl>
48090         <descriptive>
48091             <brief>
48092  Indicates whether the device supports NFC reserved push.
48093             </brief>
48094             <version>
48095  2.1
48096             </version>
48097         </descriptive>
48098         <Type type="boolean"/>
48099       </Attribute>
48100       <Attribute readonly="readonly" name="multiTouchCount" id="::SystemInfo::SystemInfoDeviceCapability::multiTouchCount">
48101         <webidl>    readonly attribute unsigned short multiTouchCount;</webidl>
48102         <descriptive>
48103             <brief>
48104  The number of point in Multi-point touch.
48105             </brief>
48106             <version>
48107  2.0
48108             </version>
48109         </descriptive>
48110         <Type type="unsigned short"/>
48111       </Attribute>
48112       <Attribute readonly="readonly" name="inputKeyboard" id="::SystemInfo::SystemInfoDeviceCapability::inputKeyboard">
48113         <webidl>    readonly attribute boolean inputKeyboard;</webidl>
48114         <descriptive>
48115             <brief>
48116  Indicates whether the device supports the built-in Keyboard.
48117             </brief>
48118             <version>
48119  2.0
48120             </version>
48121         </descriptive>
48122         <Type type="boolean"/>
48123       </Attribute>
48124       <Attribute readonly="readonly" name="inputKeyboardLayout" id="::SystemInfo::SystemInfoDeviceCapability::inputKeyboardLayout">
48125         <webidl>    readonly attribute boolean inputKeyboardLayout;</webidl>
48126         <descriptive>
48127             <brief>
48128  Indicates whether the device supports the built-in keyboard layout.
48129             </brief>
48130             <version>
48131  2.1
48132             </version>
48133         </descriptive>
48134         <Type type="boolean"/>
48135       </Attribute>
48136       <Attribute readonly="readonly" name="wifi" id="::SystemInfo::SystemInfoDeviceCapability::wifi">
48137         <webidl>    readonly attribute boolean wifi;</webidl>
48138         <descriptive>
48139             <brief>
48140  Indicates whether the device supports Wi-Fi.
48141             </brief>
48142             <version>
48143  2.0
48144             </version>
48145         </descriptive>
48146         <Type type="boolean"/>
48147       </Attribute>
48148       <Attribute readonly="readonly" name="wifiDirect" id="::SystemInfo::SystemInfoDeviceCapability::wifiDirect">
48149         <webidl>    readonly attribute boolean wifiDirect;</webidl>
48150         <descriptive>
48151             <brief>
48152  Indicates whether the device supports Wi-Fi direct.
48153             </brief>
48154             <version>
48155  2.0
48156             </version>
48157         </descriptive>
48158         <Type type="boolean"/>
48159       </Attribute>
48160       <Attribute readonly="readonly" name="opengles" id="::SystemInfo::SystemInfoDeviceCapability::opengles">
48161         <webidl>    readonly attribute boolean opengles;</webidl>
48162         <descriptive>
48163             <brief>
48164  Indicates whether the device supports OpenGL-ES.
48165             </brief>
48166             <version>
48167  2.1
48168             </version>
48169         </descriptive>
48170         <Type type="boolean"/>
48171       </Attribute>
48172       <Attribute readonly="readonly" name="openglestextureFormat" id="::SystemInfo::SystemInfoDeviceCapability::openglestextureFormat">
48173         <webidl>    readonly attribute DOMString openglestextureFormat;</webidl>
48174         <descriptive>
48175             <brief>
48176  The device 3DC texture format for OpenGL-ES.
48177 One example of possible output is as follows: &quot;3dc/atc/etc/ptc/pvrtc/utc&quot;
48178             </brief>
48179             <version>
48180  2.1
48181             </version>
48182         </descriptive>
48183         <Type type="DOMString"/>
48184       </Attribute>
48185       <Attribute readonly="readonly" name="openglesVersion1_1" id="::SystemInfo::SystemInfoDeviceCapability::openglesVersion1_1">
48186         <webidl>    readonly attribute boolean openglesVersion1_1;</webidl>
48187         <descriptive>
48188             <brief>
48189  Indicates whether the device supports OpenGL-ES version 1.1.
48190             </brief>
48191             <version>
48192  2.0
48193             </version>
48194         </descriptive>
48195         <Type type="boolean"/>
48196       </Attribute>
48197       <Attribute readonly="readonly" name="openglesVersion2_0" id="::SystemInfo::SystemInfoDeviceCapability::openglesVersion2_0">
48198         <webidl>    readonly attribute boolean openglesVersion2_0;</webidl>
48199         <descriptive>
48200             <brief>
48201  Indicates whether the device supports OpenGL-ES version 2.0.
48202             </brief>
48203             <version>
48204  2.0
48205             </version>
48206         </descriptive>
48207         <Type type="boolean"/>
48208       </Attribute>
48209       <Attribute readonly="readonly" name="fmRadio" id="::SystemInfo::SystemInfoDeviceCapability::fmRadio">
48210         <webidl>    readonly attribute boolean fmRadio;</webidl>
48211         <descriptive>
48212             <brief>
48213  Indicates whether the device supports FM radio.
48214             </brief>
48215             <version>
48216  2.0
48217             </version>
48218         </descriptive>
48219         <Type type="boolean"/>
48220       </Attribute>
48221       <Attribute readonly="readonly" name="platformVersion" id="::SystemInfo::SystemInfoDeviceCapability::platformVersion">
48222         <webidl>    readonly attribute DOMString platformVersion raises(<ref>WebAPIException</ref>);</webidl>
48223         <descriptive>
48224             <brief>
48225  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>.
48226             </brief>
48227             <version>
48228  2.0
48229             </version>
48230             <privilegelevel>
48231  public
48232             </privilegelevel>
48233             <privilege>
48234  http://tizen.org/privilege/system
48235             </privilege>
48236         </descriptive>
48237         <Type type="DOMString"/>
48238         <Raises>
48239           <RaiseException name="WebAPIException">
48240             <descriptive>
48241                 <description><p>
48242  with error type SecurityError, if this attribute is not allowed.        
48243                 </p></description>
48244             </descriptive>
48245           </RaiseException>
48246         </Raises>
48247       </Attribute>
48248       <Attribute readonly="readonly" name="webApiVersion" id="::SystemInfo::SystemInfoDeviceCapability::webApiVersion">
48249         <webidl>    readonly attribute DOMString webApiVersion raises(<ref>WebAPIException</ref>);</webidl>
48250         <descriptive>
48251             <brief>
48252  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>.
48253             </brief>
48254             <version>
48255  2.1
48256             </version>
48257             <privilegelevel>
48258  public
48259             </privilegelevel>
48260             <privilege>
48261  http://tizen.org/privilege/system
48262             </privilege>
48263         </descriptive>
48264         <Type type="DOMString"/>
48265         <Raises>
48266           <RaiseException name="WebAPIException">
48267             <descriptive>
48268                 <description><p>
48269  with error type SecurityError, if this attribute is not allowed.
48270                 </p></description>
48271             </descriptive>
48272           </RaiseException>
48273         </Raises>
48274       </Attribute>
48275       <Attribute readonly="readonly" name="nativeApiVersion" id="::SystemInfo::SystemInfoDeviceCapability::nativeApiVersion">
48276         <webidl>    readonly attribute DOMString nativeApiVersion raises(<ref>WebAPIException</ref>);</webidl>
48277         <descriptive>
48278             <brief>
48279  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>.
48280             </brief>
48281             <version>
48282  2.1
48283             </version>
48284             <privilegelevel>
48285  public
48286             </privilegelevel>
48287             <privilege>
48288  http://tizen.org/privilege/system
48289             </privilege>
48290         </descriptive>
48291         <Type type="DOMString"/>
48292         <Raises>
48293           <RaiseException name="WebAPIException">
48294             <descriptive>
48295                 <description><p>
48296  with error type SecurityError, if this attribute is not allowed.
48297                 </p></description>
48298             </descriptive>
48299           </RaiseException>
48300         </Raises>
48301       </Attribute>
48302       <Attribute readonly="readonly" name="platformName" id="::SystemInfo::SystemInfoDeviceCapability::platformName">
48303         <webidl>    readonly attribute DOMString platformName;</webidl>
48304         <descriptive>
48305             <brief>
48306  The name of the platform.
48307             </brief>
48308             <version>
48309  2.0
48310             </version>
48311         </descriptive>
48312         <Type type="DOMString"/>
48313       </Attribute>
48314       <Attribute readonly="readonly" name="camera" id="::SystemInfo::SystemInfoDeviceCapability::camera">
48315         <webidl>    readonly attribute boolean camera;</webidl>
48316         <descriptive>
48317             <brief>
48318  Indicates whether the device supports camera.
48319             </brief>
48320             <version>
48321  2.1
48322             </version>
48323         </descriptive>
48324         <Type type="boolean"/>
48325       </Attribute>
48326       <Attribute readonly="readonly" name="cameraFront" id="::SystemInfo::SystemInfoDeviceCapability::cameraFront">
48327         <webidl>    readonly attribute boolean cameraFront;</webidl>
48328         <descriptive>
48329             <brief>
48330  Indicates whether the device supports front camera.
48331             </brief>
48332             <version>
48333  2.0
48334             </version>
48335         </descriptive>
48336         <Type type="boolean"/>
48337       </Attribute>
48338       <Attribute readonly="readonly" name="cameraFrontFlash" id="::SystemInfo::SystemInfoDeviceCapability::cameraFrontFlash">
48339         <webidl>    readonly attribute boolean cameraFrontFlash;</webidl>
48340         <descriptive>
48341             <brief>
48342  Indicates whether the device supports flash on the front camera.
48343             </brief>
48344             <version>
48345  2.0
48346             </version>
48347         </descriptive>
48348         <Type type="boolean"/>
48349       </Attribute>
48350       <Attribute readonly="readonly" name="cameraBack" id="::SystemInfo::SystemInfoDeviceCapability::cameraBack">
48351         <webidl>    readonly attribute boolean cameraBack;</webidl>
48352         <descriptive>
48353             <brief>
48354  Indicates whether the device supports back-side camera.
48355             </brief>
48356             <version>
48357  2.0
48358             </version>
48359         </descriptive>
48360         <Type type="boolean"/>
48361       </Attribute>
48362       <Attribute readonly="readonly" name="cameraBackFlash" id="::SystemInfo::SystemInfoDeviceCapability::cameraBackFlash">
48363         <webidl>    readonly attribute boolean cameraBackFlash;</webidl>
48364         <descriptive>
48365             <brief>
48366  Indicates whether the device supports flash on the back-side camera.
48367             </brief>
48368             <version>
48369  2.0
48370             </version>
48371         </descriptive>
48372         <Type type="boolean"/>
48373       </Attribute>
48374       <Attribute readonly="readonly" name="location" id="::SystemInfo::SystemInfoDeviceCapability::location">
48375         <webidl>    readonly attribute boolean location;</webidl>
48376         <descriptive>
48377             <brief>
48378  Indicates whether the device supports CPS or not.
48379             </brief>
48380             <version>
48381  2.0
48382             </version>
48383         </descriptive>
48384         <Type type="boolean"/>
48385       </Attribute>
48386       <Attribute readonly="readonly" name="locationGps" id="::SystemInfo::SystemInfoDeviceCapability::locationGps">
48387         <webidl>    readonly attribute boolean locationGps;</webidl>
48388         <descriptive>
48389             <brief>
48390  Indicates whether the device supports GPS based location feature.
48391             </brief>
48392             <version>
48393  2.0
48394             </version>
48395         </descriptive>
48396         <Type type="boolean"/>
48397       </Attribute>
48398       <Attribute readonly="readonly" name="locationWps" id="::SystemInfo::SystemInfoDeviceCapability::locationWps">
48399         <webidl>    readonly attribute boolean locationWps;</webidl>
48400         <descriptive>
48401             <brief>
48402  Indicates whether the device supports WPS based location feature.
48403             </brief>
48404             <version>
48405  2.0
48406             </version>
48407         </descriptive>
48408         <Type type="boolean"/>
48409       </Attribute>
48410       <Attribute readonly="readonly" name="microphone" id="::SystemInfo::SystemInfoDeviceCapability::microphone">
48411         <webidl>    readonly attribute boolean microphone;</webidl>
48412         <descriptive>
48413             <brief>
48414  Indicates whether the device supports microphone.
48415             </brief>
48416             <version>
48417  2.0
48418             </version>
48419         </descriptive>
48420         <Type type="boolean"/>
48421       </Attribute>
48422       <Attribute readonly="readonly" name="usbHost" id="::SystemInfo::SystemInfoDeviceCapability::usbHost">
48423         <webidl>    readonly attribute boolean usbHost;</webidl>
48424         <descriptive>
48425             <brief>
48426  Indicates whether the device supports USB host.
48427             </brief>
48428             <version>
48429  2.0
48430             </version>
48431         </descriptive>
48432         <Type type="boolean"/>
48433       </Attribute>
48434       <Attribute readonly="readonly" name="usbAccessory" id="::SystemInfo::SystemInfoDeviceCapability::usbAccessory">
48435         <webidl>    readonly attribute boolean usbAccessory;</webidl>
48436         <descriptive>
48437             <brief>
48438  Indicates whether the device supports USB accessory.
48439             </brief>
48440             <version>
48441  2.0
48442             </version>
48443         </descriptive>
48444         <Type type="boolean"/>
48445       </Attribute>
48446       <Attribute readonly="readonly" name="screenOutputRca" id="::SystemInfo::SystemInfoDeviceCapability::screenOutputRca">
48447         <webidl>    readonly attribute boolean screenOutputRca;</webidl>
48448         <descriptive>
48449             <brief>
48450  Indicates whether the device supports RCA output.
48451             </brief>
48452             <version>
48453  2.0
48454             </version>
48455         </descriptive>
48456         <Type type="boolean"/>
48457       </Attribute>
48458       <Attribute readonly="readonly" name="screenOutputHdmi" id="::SystemInfo::SystemInfoDeviceCapability::screenOutputHdmi">
48459         <webidl>    readonly attribute boolean screenOutputHdmi;</webidl>
48460         <descriptive>
48461             <brief>
48462  Indicates whether the device supports HDMI output.
48463             </brief>
48464             <version>
48465  2.0
48466             </version>
48467         </descriptive>
48468         <Type type="boolean"/>
48469       </Attribute>
48470       <Attribute readonly="readonly" name="platformCoreCpuArch" id="::SystemInfo::SystemInfoDeviceCapability::platformCoreCpuArch">
48471         <webidl>    readonly attribute DOMString platformCoreCpuArch;</webidl>
48472         <descriptive>
48473             <brief>
48474  The device CPU architecture.
48475 The possible values for this attribute are: armv6, armv7, x86.
48476             </brief>
48477             <version>
48478  2.0
48479             </version>
48480         </descriptive>
48481         <Type type="DOMString"/>
48482       </Attribute>
48483       <Attribute readonly="readonly" name="platformCoreFpuArch" id="::SystemInfo::SystemInfoDeviceCapability::platformCoreFpuArch">
48484         <webidl>    readonly attribute DOMString platformCoreFpuArch;</webidl>
48485         <descriptive>
48486             <brief>
48487  The device FPU architecture.
48488 The possible values for this attribute are: vfpv3 / sse2 / sse3 / ssse3.
48489             </brief>
48490             <version>
48491  2.0
48492             </version>
48493         </descriptive>
48494         <Type type="DOMString"/>
48495       </Attribute>
48496       <Attribute readonly="readonly" name="sipVoip" id="::SystemInfo::SystemInfoDeviceCapability::sipVoip">
48497         <webidl>    readonly attribute boolean sipVoip;</webidl>
48498         <descriptive>
48499             <brief>
48500  Indicates whether the device supports VOIP.
48501             </brief>
48502             <version>
48503  2.0
48504             </version>
48505         </descriptive>
48506         <Type type="boolean"/>
48507       </Attribute>
48508       <Attribute readonly="readonly" name="duid" id="::SystemInfo::SystemInfoDeviceCapability::duid">
48509         <webidl>    readonly attribute DOMString duid;</webidl>
48510         <descriptive>
48511             <brief>
48512  The device unique ID.
48513             </brief>
48514             <version>
48515  2.0
48516             </version>
48517         </descriptive>
48518         <Type type="DOMString"/>
48519       </Attribute>
48520       <Attribute readonly="readonly" name="speechRecognition" id="::SystemInfo::SystemInfoDeviceCapability::speechRecognition">
48521         <webidl>    readonly attribute boolean speechRecognition;</webidl>
48522         <descriptive>
48523             <brief>
48524  Indicates whether the device supports speech recognition.
48525             </brief>
48526             <version>
48527  2.0
48528             </version>
48529         </descriptive>
48530         <Type type="boolean"/>
48531       </Attribute>
48532       <Attribute readonly="readonly" name="speechSynthesis" id="::SystemInfo::SystemInfoDeviceCapability::speechSynthesis">
48533         <webidl>    readonly attribute boolean speechSynthesis;</webidl>
48534         <descriptive>
48535             <brief>
48536  Indicates whether the device supports speech synthesis.
48537             </brief>
48538             <version>
48539  2.1
48540             </version>
48541         </descriptive>
48542         <Type type="boolean"/>
48543       </Attribute>
48544       <Attribute readonly="readonly" name="accelerometer" id="::SystemInfo::SystemInfoDeviceCapability::accelerometer">
48545         <webidl>    readonly attribute boolean accelerometer;</webidl>
48546         <descriptive>
48547             <brief>
48548  Indicates whether the device supports Accelerometer sensor.
48549             </brief>
48550             <version>
48551  2.0
48552             </version>
48553         </descriptive>
48554         <Type type="boolean"/>
48555       </Attribute>
48556       <Attribute readonly="readonly" name="accelerometerWakeup" id="::SystemInfo::SystemInfoDeviceCapability::accelerometerWakeup">
48557         <webidl>    readonly attribute boolean accelerometerWakeup;</webidl>
48558         <descriptive>
48559             <brief>
48560  Indicates whether the device supports Accelerometer sensor wake-up feature.
48561             </brief>
48562             <version>
48563  2.1
48564             </version>
48565         </descriptive>
48566         <Type type="boolean"/>
48567       </Attribute>
48568       <Attribute readonly="readonly" name="barometer" id="::SystemInfo::SystemInfoDeviceCapability::barometer">
48569         <webidl>    readonly attribute boolean barometer;</webidl>
48570         <descriptive>
48571             <brief>
48572  Indicates whether the device supports Barometer sensor.
48573             </brief>
48574             <version>
48575  2.0
48576             </version>
48577         </descriptive>
48578         <Type type="boolean"/>
48579       </Attribute>
48580       <Attribute readonly="readonly" name="barometerWakeup" id="::SystemInfo::SystemInfoDeviceCapability::barometerWakeup">
48581         <webidl>    readonly attribute boolean barometerWakeup;</webidl>
48582         <descriptive>
48583             <brief>
48584  Indicates whether the device supports Barometer sensor wake-up feature.
48585             </brief>
48586             <version>
48587  2.1
48588             </version>
48589         </descriptive>
48590         <Type type="boolean"/>
48591       </Attribute>
48592       <Attribute readonly="readonly" name="gyroscope" id="::SystemInfo::SystemInfoDeviceCapability::gyroscope">
48593         <webidl>    readonly attribute boolean gyroscope;</webidl>
48594         <descriptive>
48595             <brief>
48596  Indicates whether the device supports Gyroscope sensor.
48597             </brief>
48598             <version>
48599  2.0
48600             </version>
48601         </descriptive>
48602         <Type type="boolean"/>
48603       </Attribute>
48604       <Attribute readonly="readonly" name="gyroscopeWakeup" id="::SystemInfo::SystemInfoDeviceCapability::gyroscopeWakeup">
48605         <webidl>    readonly attribute boolean gyroscopeWakeup;</webidl>
48606         <descriptive>
48607             <brief>
48608  Indicates whether the device supports Gyroscope sensor wake-up feature.
48609             </brief>
48610             <version>
48611  2.1
48612             </version>
48613         </descriptive>
48614         <Type type="boolean"/>
48615       </Attribute>
48616       <Attribute readonly="readonly" name="magnetometer" id="::SystemInfo::SystemInfoDeviceCapability::magnetometer">
48617         <webidl>    readonly attribute boolean magnetometer;</webidl>
48618         <descriptive>
48619             <brief>
48620  Indicates whether the device supports Magnetometer sensor.
48621             </brief>
48622             <version>
48623  2.0
48624             </version>
48625         </descriptive>
48626         <Type type="boolean"/>
48627       </Attribute>
48628       <Attribute readonly="readonly" name="magnetometerWakeup" id="::SystemInfo::SystemInfoDeviceCapability::magnetometerWakeup">
48629         <webidl>    readonly attribute boolean magnetometerWakeup;</webidl>
48630         <descriptive>
48631             <brief>
48632  Indicates whether the device supports Magnetometer sensor wake-up feature.
48633             </brief>
48634             <version>
48635  2.1
48636             </version>
48637         </descriptive>
48638         <Type type="boolean"/>
48639       </Attribute>
48640       <Attribute readonly="readonly" name="photometer" id="::SystemInfo::SystemInfoDeviceCapability::photometer">
48641         <webidl>    readonly attribute boolean photometer;</webidl>
48642         <descriptive>
48643             <brief>
48644  Indicates whether the device supports Photometer sensor.
48645             </brief>
48646             <version>
48647  2.1
48648             </version>
48649         </descriptive>
48650         <Type type="boolean"/>
48651       </Attribute>
48652       <Attribute readonly="readonly" name="photometerWakeup" id="::SystemInfo::SystemInfoDeviceCapability::photometerWakeup">
48653         <webidl>    readonly attribute boolean photometerWakeup;</webidl>
48654         <descriptive>
48655             <brief>
48656  Indicates whether the device supports Photometer sensor wake-up feature.
48657             </brief>
48658             <version>
48659  2.1
48660             </version>
48661         </descriptive>
48662         <Type type="boolean"/>
48663       </Attribute>
48664       <Attribute readonly="readonly" name="proximity" id="::SystemInfo::SystemInfoDeviceCapability::proximity">
48665         <webidl>    readonly attribute boolean proximity;</webidl>
48666         <descriptive>
48667             <brief>
48668  Indicates whether the device supports Proximity sensor.
48669             </brief>
48670             <version>
48671  2.0
48672             </version>
48673         </descriptive>
48674         <Type type="boolean"/>
48675       </Attribute>
48676       <Attribute readonly="readonly" name="proximityWakeup" id="::SystemInfo::SystemInfoDeviceCapability::proximityWakeup">
48677         <webidl>    readonly attribute boolean proximityWakeup;</webidl>
48678         <descriptive>
48679             <brief>
48680  Indicates whether the device supports Proximity sensor wake-up feature.
48681             </brief>
48682             <version>
48683  2.1
48684             </version>
48685         </descriptive>
48686         <Type type="boolean"/>
48687       </Attribute>
48688       <Attribute readonly="readonly" name="tiltmeter" id="::SystemInfo::SystemInfoDeviceCapability::tiltmeter">
48689         <webidl>    readonly attribute boolean tiltmeter;</webidl>
48690         <descriptive>
48691             <brief>
48692  Indicates whether the device supports Tiltmeter sensor.
48693             </brief>
48694             <version>
48695  2.1
48696             </version>
48697         </descriptive>
48698         <Type type="boolean"/>
48699       </Attribute>
48700       <Attribute readonly="readonly" name="tiltmeterWakeup" id="::SystemInfo::SystemInfoDeviceCapability::tiltmeterWakeup">
48701         <webidl>    readonly attribute boolean tiltmeterWakeup;</webidl>
48702         <descriptive>
48703             <brief>
48704  Indicates whether the device supports Tiltmeter sensor wake-up feature.
48705             </brief>
48706             <version>
48707  2.1
48708             </version>
48709         </descriptive>
48710         <Type type="boolean"/>
48711       </Attribute>
48712       <Attribute readonly="readonly" name="dataEncryption" id="::SystemInfo::SystemInfoDeviceCapability::dataEncryption">
48713         <webidl>    readonly attribute boolean dataEncryption;</webidl>
48714         <descriptive>
48715             <brief>
48716  Indicates whether the device supports data encryption.
48717             </brief>
48718             <version>
48719  2.1
48720             </version>
48721         </descriptive>
48722         <Type type="boolean"/>
48723       </Attribute>
48724       <Attribute readonly="readonly" name="graphicsAcceleration" id="::SystemInfo::SystemInfoDeviceCapability::graphicsAcceleration">
48725         <webidl>    readonly attribute boolean graphicsAcceleration;</webidl>
48726         <descriptive>
48727             <brief>
48728  Indicates whether the device supports hardware acceleration for 2D/3D graphics.
48729             </brief>
48730             <version>
48731  2.1
48732             </version>
48733         </descriptive>
48734         <Type type="boolean"/>
48735       </Attribute>
48736       <Attribute readonly="readonly" name="push" id="::SystemInfo::SystemInfoDeviceCapability::push">
48737         <webidl>    readonly attribute boolean push;</webidl>
48738         <descriptive>
48739             <brief>
48740  Indicates whether the device supports push service.
48741             </brief>
48742             <version>
48743  2.1
48744             </version>
48745         </descriptive>
48746         <Type type="boolean"/>
48747       </Attribute>
48748       <Attribute readonly="readonly" name="telephony" id="::SystemInfo::SystemInfoDeviceCapability::telephony">
48749         <webidl>    readonly attribute boolean telephony;</webidl>
48750         <descriptive>
48751             <brief>
48752  Indicates whether the device supports the telephony feature.
48753             </brief>
48754             <version>
48755  2.1
48756             </version>
48757         </descriptive>
48758         <Type type="boolean"/>
48759       </Attribute>
48760       <Attribute readonly="readonly" name="telephonyMms" id="::SystemInfo::SystemInfoDeviceCapability::telephonyMms">
48761         <webidl>    readonly attribute boolean telephonyMms;</webidl>
48762         <descriptive>
48763             <brief>
48764  Indicates whether the device supports the mms feature.
48765             </brief>
48766             <version>
48767  2.1
48768             </version>
48769         </descriptive>
48770         <Type type="boolean"/>
48771       </Attribute>
48772       <Attribute readonly="readonly" name="telephonySms" id="::SystemInfo::SystemInfoDeviceCapability::telephonySms">
48773         <webidl>    readonly attribute boolean telephonySms;</webidl>
48774         <descriptive>
48775             <brief>
48776  Indicates whether the device supports the sms feature.
48777             </brief>
48778             <version>
48779  2.1
48780             </version>
48781         </descriptive>
48782         <Type type="boolean"/>
48783       </Attribute>
48784       <Attribute readonly="readonly" name="screenSizeNormal" id="::SystemInfo::SystemInfoDeviceCapability::screenSizeNormal">
48785         <webidl>    readonly attribute boolean screenSizeNormal;</webidl>
48786         <descriptive>
48787             <brief>
48788  Indicates whether the device supports the screen normal size.
48789             </brief>
48790             <version>
48791  2.1
48792             </version>
48793         </descriptive>
48794         <Type type="boolean"/>
48795       </Attribute>
48796       <Attribute readonly="readonly" name="screenSize480_800" id="::SystemInfo::SystemInfoDeviceCapability::screenSize480_800">
48797         <webidl>    readonly attribute boolean screenSize480_800;</webidl>
48798         <descriptive>
48799             <brief>
48800  Indicates whether the device supports the 480 * 800 screen size.
48801             </brief>
48802             <version>
48803  2.1
48804             </version>
48805         </descriptive>
48806         <Type type="boolean"/>
48807       </Attribute>
48808       <Attribute readonly="readonly" name="screenSize720_1280" id="::SystemInfo::SystemInfoDeviceCapability::screenSize720_1280">
48809         <webidl>    readonly attribute boolean screenSize720_1280;</webidl>
48810         <descriptive>
48811             <brief>
48812  Indicates whether the device supports the 720 * 1280 screen size.
48813             </brief>
48814             <version>
48815  2.1
48816             </version>
48817         </descriptive>
48818         <Type type="boolean"/>
48819       </Attribute>
48820       <Attribute readonly="readonly" name="autoRotation" id="::SystemInfo::SystemInfoDeviceCapability::autoRotation">
48821         <webidl>    readonly attribute boolean autoRotation;</webidl>
48822         <descriptive>
48823             <brief>
48824  Indicates whether the device supports auto rotation.
48825             </brief>
48826             <version>
48827  2.1
48828             </version>
48829         </descriptive>
48830         <Type type="boolean"/>
48831       </Attribute>
48832       <Attribute readonly="readonly" name="shellAppWidget" id="::SystemInfo::SystemInfoDeviceCapability::shellAppWidget">
48833         <webidl>    readonly attribute boolean shellAppWidget;</webidl>
48834         <descriptive>
48835             <brief>
48836  Indicates whether the device supports shell app widget.
48837             </brief>
48838             <version>
48839  2.1
48840             </version>
48841         </descriptive>
48842         <Type type="boolean"/>
48843       </Attribute>
48844       <Attribute readonly="readonly" name="visionImageRecognition" id="::SystemInfo::SystemInfoDeviceCapability::visionImageRecognition">
48845         <webidl>    readonly attribute boolean visionImageRecognition;</webidl>
48846         <descriptive>
48847             <brief>
48848  Indicates whether the device supports vision image recognition.
48849             </brief>
48850             <version>
48851  2.1
48852             </version>
48853         </descriptive>
48854         <Type type="boolean"/>
48855       </Attribute>
48856       <Attribute readonly="readonly" name="visionQrcodeGeneration" id="::SystemInfo::SystemInfoDeviceCapability::visionQrcodeGeneration">
48857         <webidl>    readonly attribute boolean visionQrcodeGeneration;</webidl>
48858         <descriptive>
48859             <brief>
48860  Indicates whether the device supports vision qrcode generation.
48861             </brief>
48862             <version>
48863  2.1
48864             </version>
48865         </descriptive>
48866         <Type type="boolean"/>
48867       </Attribute>
48868       <Attribute readonly="readonly" name="visionQrcodeRecognition" id="::SystemInfo::SystemInfoDeviceCapability::visionQrcodeRecognition">
48869         <webidl>    readonly attribute boolean visionQrcodeRecognition;</webidl>
48870         <descriptive>
48871             <brief>
48872  Indicates whether the device supports vision qrcode recognition.
48873             </brief>
48874             <version>
48875  2.1
48876             </version>
48877         </descriptive>
48878         <Type type="boolean"/>
48879       </Attribute>
48880       <Attribute readonly="readonly" name="visionFaceRecognition" id="::SystemInfo::SystemInfoDeviceCapability::visionFaceRecognition">
48881         <webidl>    readonly attribute boolean visionFaceRecognition;</webidl>
48882         <descriptive>
48883             <brief>
48884  Indicates whether the device supports vision face recognition.
48885             </brief>
48886             <version>
48887  2.1
48888             </version>
48889         </descriptive>
48890         <Type type="boolean"/>
48891       </Attribute>
48892       <Attribute readonly="readonly" name="secureElement" id="::SystemInfo::SystemInfoDeviceCapability::secureElement">
48893         <webidl>    readonly attribute boolean secureElement;</webidl>
48894         <descriptive>
48895             <brief>
48896  Indicates whether the device supports secure element.
48897             </brief>
48898             <version>
48899  2.1
48900             </version>
48901         </descriptive>
48902         <Type type="boolean"/>
48903       </Attribute>
48904       <Attribute readonly="readonly" name="nativeOspCompatible" id="::SystemInfo::SystemInfoDeviceCapability::nativeOspCompatible">
48905         <webidl>    readonly attribute boolean nativeOspCompatible;</webidl>
48906         <descriptive>
48907             <brief>
48908  Indicates whether the device supports native osp API.
48909             </brief>
48910             <version>
48911  2.1
48912             </version>
48913         </descriptive>
48914         <Type type="boolean"/>
48915       </Attribute>
48916       <Attribute readonly="readonly" name="profile" id="::SystemInfo::SystemInfoDeviceCapability::profile">
48917         <webidl>    readonly attribute <ref>SystemInfoProfile</ref> profile;</webidl>
48918         <descriptive>
48919             <brief>
48920  Represents the profile of the current device.
48921             </brief>
48922             <version>
48923  2.2
48924             </version>
48925         </descriptive>
48926         <Type name="SystemInfoProfile"/>
48927       </Attribute>
48928     </Interface>
48929     <Dictionary name="SystemInfoOptions" id="::SystemInfo::SystemInfoOptions">
48930       <webidl>  dictionary SystemInfoOptions {
48931     unsigned long timeout;
48932
48933     double highThreshold;
48934
48935     double lowThreshold;
48936   };</webidl>
48937       <descriptive>
48938           <brief>
48939  An object containing the various options for fetching the properties requested.
48940           </brief>
48941           <version>
48942  1.0
48943           </version>
48944       </descriptive>
48945       <DictionaryMember name="timeout" id="::SystemInfo::SystemInfoOptions::timeout">
48946         <webidl>    unsigned long timeout;</webidl>
48947         <descriptive>
48948             <brief>
48949  The number of milliseconds beyond which the operation must be interrupted.
48950             </brief>
48951             <version>
48952  1.0
48953             </version>
48954         </descriptive>
48955         <Type type="unsigned long"/>
48956       </DictionaryMember>
48957       <DictionaryMember name="highThreshold" id="::SystemInfo::SystemInfoOptions::highThreshold">
48958         <webidl>    double highThreshold;</webidl>
48959         <descriptive>
48960             <brief>
48961  An attribute to indicate that the <em>successCallback()</em> method in the watch 
48962 operation will be triggered only if the device property is a number and its value is greater than or equal to this number.
48963 This attribute has no effect on the <em>get()</em> method.
48964             </brief>
48965             <version>
48966  1.0
48967             </version>
48968         </descriptive>
48969         <Type type="double"/>
48970       </DictionaryMember>
48971       <DictionaryMember name="lowThreshold" id="::SystemInfo::SystemInfoOptions::lowThreshold">
48972         <webidl>    double lowThreshold;</webidl>
48973         <descriptive>
48974             <brief>
48975  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.
48976 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>.
48977 This attribute has no effect on the get method.
48978             </brief>
48979             <version>
48980  1.0
48981             </version>
48982         </descriptive>
48983         <Type type="double"/>
48984       </DictionaryMember>
48985     </Dictionary>
48986     <Interface name="SystemInfoPropertySuccessCallback" id="::SystemInfo::SystemInfoPropertySuccessCallback">
48987       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface SystemInfoPropertySuccessCallback {
48988     void onsuccess(<ref>SystemInfoProperty</ref> prop);
48989   };</webidl>
48990       <descriptive>
48991           <brief>
48992  Systemfinfo specific success callback.
48993           </brief>
48994          <description>
48995           <p>
48996 This callback interface specifies a success callback with SystemInfoProperty as input argument. 
48997 It is used in asynchronous
48998 operations, such as getPropertyValue() or addPropertyValueChangeListener()
48999           </p>
49000          </description>
49001           <version>
49002  1.0
49003           </version>
49004       </descriptive>
49005       <ExtendedAttributeList>
49006         <ExtendedAttribute name="Callback" value="FunctionOnly">
49007           <webidl>Callback</webidl>
49008         </ExtendedAttribute>
49009         <ExtendedAttribute name="NoInterfaceObject">
49010           <webidl> NoInterfaceObject</webidl>
49011         </ExtendedAttribute>
49012       </ExtendedAttributeList>
49013       <Operation name="onsuccess" id="::SystemInfo::SystemInfoPropertySuccessCallback::onsuccess">
49014         <webidl>    void onsuccess(<ref>SystemInfoProperty</ref> prop);</webidl>
49015         <descriptive>
49016             <brief>
49017  Method invoked when the asynchronous call completes successfully.
49018             </brief>
49019             <version>
49020  1.0
49021             </version>
49022         </descriptive>
49023         <Type type="void"/>
49024         <ArgumentList>
49025           <Argument name="prop">
49026             <descriptive>
49027                 <description><p>
49028  The property returned from a successful asynchronous operation.
49029                 </p></description>
49030             </descriptive>
49031             <Type name="SystemInfoProperty"/>
49032           </Argument>
49033         </ArgumentList>
49034       </Operation>
49035     </Interface>
49036     <Interface name="SystemInfoProperty" id="::SystemInfo::SystemInfoProperty">
49037       <webidl>  [NoInterfaceObject] interface SystemInfoProperty {
49038   };</webidl>
49039       <descriptive>
49040           <brief>
49041  This is a common abstract interface used by different types of system information objects.
49042           </brief>
49043           <version>
49044  1.0
49045           </version>
49046       </descriptive>
49047       <ExtendedAttributeList>
49048         <ExtendedAttribute name="NoInterfaceObject">
49049           <webidl>NoInterfaceObject</webidl>
49050         </ExtendedAttribute>
49051       </ExtendedAttributeList>
49052     </Interface>
49053     <Interface name="SystemInfoBattery" id="::SystemInfo::SystemInfoBattery">
49054       <webidl>  [NoInterfaceObject] interface SystemInfoBattery : <ref>SystemInfoProperty</ref> {
49055     readonly attribute double level;
49056
49057     readonly attribute boolean isCharging;
49058   };</webidl>
49059       <descriptive>
49060           <brief>
49061  This property reflects the general state of the system's battery
49062           </brief>
49063           <version>
49064  1.0
49065           </version>
49066       </descriptive>
49067       <ExtendedAttributeList>
49068         <ExtendedAttribute name="NoInterfaceObject">
49069           <webidl>NoInterfaceObject</webidl>
49070         </ExtendedAttribute>
49071       </ExtendedAttributeList>
49072       <InterfaceInheritance>
49073         <Name name="SystemInfoProperty"/>
49074       </InterfaceInheritance>
49075       <Attribute readonly="readonly" name="level" id="::SystemInfo::SystemInfoBattery::level">
49076         <webidl>    readonly attribute double level;</webidl>
49077         <descriptive>
49078             <brief>
49079  An attribute to specify the remaining level of an internal battery, scaled from <var>0 </var>to <var>1</var>:
49080             </brief>
49081            <description>
49082             <ul>
49083               <li>
49084 <var>0 </var>indicates that the battery level is the lowest and the system is about to enter shutdown mode.              </li>
49085               <li>
49086 <var>1 </var>indicates that the system's charge is maximum.              </li>
49087             </ul>
49088             <p>
49089 Any threshold parameter used in a watch operation to monitor this property applies to this attribute.
49090             </p>
49091            </description>
49092             <version>
49093  1.0
49094             </version>
49095         </descriptive>
49096         <Type type="double"/>
49097       </Attribute>
49098       <Attribute readonly="readonly" name="isCharging" id="::SystemInfo::SystemInfoBattery::isCharging">
49099         <webidl>    readonly attribute boolean isCharging;</webidl>
49100         <descriptive>
49101             <brief>
49102  Indicates whether the battery source is currently charging.
49103             </brief>
49104             <version>
49105  1.0
49106             </version>
49107         </descriptive>
49108         <Type type="boolean"/>
49109       </Attribute>
49110     </Interface>
49111     <Interface name="SystemInfoCpu" id="::SystemInfo::SystemInfoCpu">
49112       <webidl>  [NoInterfaceObject] interface SystemInfoCpu : <ref>SystemInfoProperty</ref> {
49113     readonly attribute double load;
49114   };</webidl>
49115       <descriptive>
49116           <brief>
49117  This property reflects the state of the CPUs available to this system.
49118           </brief>
49119           <version>
49120  1.0
49121           </version>
49122       </descriptive>
49123       <ExtendedAttributeList>
49124         <ExtendedAttribute name="NoInterfaceObject">
49125           <webidl>NoInterfaceObject</webidl>
49126         </ExtendedAttribute>
49127       </ExtendedAttributeList>
49128       <InterfaceInheritance>
49129         <Name name="SystemInfoProperty"/>
49130       </InterfaceInheritance>
49131       <Attribute readonly="readonly" name="load" id="::SystemInfo::SystemInfoCpu::load">
49132         <webidl>    readonly attribute double load;</webidl>
49133         <descriptive>
49134             <brief>
49135   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.
49136 Any threshold parameter used in a watch function to monitor this property applies to this attribute.
49137             </brief>
49138             <version>
49139  1.0
49140             </version>
49141         </descriptive>
49142         <Type type="double"/>
49143       </Attribute>
49144     </Interface>
49145     <Interface name="SystemInfoStorage" id="::SystemInfo::SystemInfoStorage">
49146       <webidl>  [NoInterfaceObject] interface SystemInfoStorage : <ref>SystemInfoProperty</ref> {
49147     readonly attribute <ref>SystemInfoStorageUnit</ref>[] units;
49148   };</webidl>
49149       <descriptive>
49150           <brief>
49151  This property exposes the data storage devices connected to this system.
49152           </brief>
49153           <version>
49154  1.0
49155           </version>
49156       </descriptive>
49157       <ExtendedAttributeList>
49158         <ExtendedAttribute name="NoInterfaceObject">
49159           <webidl>NoInterfaceObject</webidl>
49160         </ExtendedAttribute>
49161       </ExtendedAttributeList>
49162       <InterfaceInheritance>
49163         <Name name="SystemInfoProperty"/>
49164       </InterfaceInheritance>
49165       <Attribute readonly="readonly" name="units" id="::SystemInfo::SystemInfoStorage::units">
49166         <webidl>    readonly attribute <ref>SystemInfoStorageUnit</ref>[] units;</webidl>
49167         <descriptive>
49168             <brief>
49169  The array of storage units connected to this device.
49170             </brief>
49171             <version>
49172  1.0
49173             </version>
49174         </descriptive>
49175         <Type type="array">
49176           <Type name="SystemInfoStorageUnit"/>
49177         </Type>
49178       </Attribute>
49179     </Interface>
49180     <Interface name="SystemInfoStorageUnit" id="::SystemInfo::SystemInfoStorageUnit">
49181       <webidl>  [NoInterfaceObject] interface SystemInfoStorageUnit : <ref>SystemInfoProperty</ref> {
49182     readonly attribute DOMString type;
49183
49184     readonly attribute unsigned long long capacity;
49185
49186     readonly attribute unsigned long long availableCapacity;
49187
49188     readonly attribute boolean isRemovable;
49189
49190     readonly attribute boolean isRemoveable;
49191   };</webidl>
49192       <descriptive>
49193           <brief>
49194  This property exposes a single storage device connected to this system.
49195           </brief>
49196       </descriptive>
49197       <ExtendedAttributeList>
49198         <ExtendedAttribute name="NoInterfaceObject">
49199           <webidl>NoInterfaceObject</webidl>
49200         </ExtendedAttribute>
49201       </ExtendedAttributeList>
49202       <InterfaceInheritance>
49203         <Name name="SystemInfoProperty"/>
49204       </InterfaceInheritance>
49205       <Attribute readonly="readonly" name="type" id="::SystemInfo::SystemInfoStorageUnit::type">
49206         <webidl>    readonly attribute DOMString type;</webidl>
49207         <descriptive>
49208             <brief>
49209  The type of a storage device. The value is one of the constants defined for this type.
49210             </brief>
49211            <description>
49212             <p>
49213 The supported storage unit types are:
49214             </p>
49215             <ul>
49216               <li>
49217 UNKNOWN              </li>
49218               <li>
49219 INTERNAL               </li>
49220               <li>
49221 USB_HOST              </li>
49222               <li>
49223 MMC              </li>
49224         
49225
49226             </ul>
49227            </description>
49228             <version>
49229  1.0
49230             </version>
49231         </descriptive>
49232         <Type type="DOMString"/>
49233       </Attribute>
49234       <Attribute readonly="readonly" name="capacity" id="::SystemInfo::SystemInfoStorageUnit::capacity">
49235         <webidl>    readonly attribute unsigned long long capacity;</webidl>
49236         <descriptive>
49237             <brief>
49238  The amount of data that this device can hold, in bytes.
49239             </brief>
49240             <version>
49241  1.0
49242             </version>
49243         </descriptive>
49244         <Type type="unsigned long long"/>
49245       </Attribute>
49246       <Attribute readonly="readonly" name="availableCapacity" id="::SystemInfo::SystemInfoStorageUnit::availableCapacity">
49247         <webidl>    readonly attribute unsigned long long availableCapacity;</webidl>
49248         <descriptive>
49249             <brief>
49250  The amount of available data that this device can hold, in bytes.
49251             </brief>
49252             <version>
49253  1.0
49254             </version>
49255         </descriptive>
49256         <Type type="unsigned long long"/>
49257       </Attribute>
49258       <Attribute readonly="readonly" name="isRemovable" id="::SystemInfo::SystemInfoStorageUnit::isRemovable">
49259         <webidl>    readonly attribute boolean isRemovable;</webidl>
49260         <descriptive>
49261             <brief>
49262  An attribute to indicate whether a device can be removed or not.
49263             </brief>
49264            <description>
49265             <p>
49266 The following values are supported:
49267             </p>
49268             <ul>
49269               <li>
49270 <var>true </var> - If this storage unit can be removed from the system (such as an sdcard unplugged)              </li>
49271               <li>
49272 <var>false</var> - If this storage unit cannot be removed from the system              </li>
49273             </ul>
49274            </description>
49275             <version>
49276  2.1
49277             </version>
49278         </descriptive>
49279         <Type type="boolean"/>
49280       </Attribute>
49281       <Attribute readonly="readonly" name="isRemoveable" id="::SystemInfo::SystemInfoStorageUnit::isRemoveable">
49282         <webidl>    readonly attribute boolean isRemoveable;</webidl>
49283         <descriptive>
49284             <brief>
49285  true if this unit can be removed from the system (such as an sdcard unplugged), false otherwise.
49286             </brief>
49287             <version>
49288  1.0
49289             </version>
49290             <deprecated>
49291  A typographic error.
49292             </deprecated>
49293         </descriptive>
49294         <Type type="boolean"/>
49295       </Attribute>
49296     </Interface>
49297     <Interface name="SystemInfoDisplay" id="::SystemInfo::SystemInfoDisplay">
49298       <webidl>  [NoInterfaceObject] interface SystemInfoDisplay : <ref>SystemInfoProperty</ref> {
49299     readonly attribute unsigned long resolutionWidth;
49300
49301     readonly attribute unsigned long resolutionHeight;
49302
49303     readonly attribute unsigned long dotsPerInchWidth;
49304
49305     readonly attribute unsigned long dotsPerInchHeight;
49306
49307     readonly attribute double physicalWidth;
49308
49309     readonly attribute double physicalHeight;
49310
49311     readonly attribute double brightness;
49312   };</webidl>
49313       <descriptive>
49314           <brief>
49315  This property reflects the information of the Display.
49316           </brief>
49317           <version>
49318  1.0
49319           </version>
49320       </descriptive>
49321       <ExtendedAttributeList>
49322         <ExtendedAttribute name="NoInterfaceObject">
49323           <webidl>NoInterfaceObject</webidl>
49324         </ExtendedAttribute>
49325       </ExtendedAttributeList>
49326       <InterfaceInheritance>
49327         <Name name="SystemInfoProperty"/>
49328       </InterfaceInheritance>
49329       <Attribute readonly="readonly" name="resolutionWidth" id="::SystemInfo::SystemInfoDisplay::resolutionWidth">
49330         <webidl>    readonly attribute unsigned long resolutionWidth;</webidl>
49331         <descriptive>
49332             <brief>
49333  The total number of addressable pixels in the horizontal direction of a rectangular entity
49334 (such as Camera, Display, Image, Video, ...) when held in its default orientation.
49335             </brief>
49336             <version>
49337  1.0
49338             </version>
49339         </descriptive>
49340         <Type type="unsigned long"/>
49341       </Attribute>
49342       <Attribute readonly="readonly" name="resolutionHeight" id="::SystemInfo::SystemInfoDisplay::resolutionHeight">
49343         <webidl>    readonly attribute unsigned long resolutionHeight;</webidl>
49344         <descriptive>
49345             <brief>
49346  The total number of addressable pixels in the vertical direction of a rectangular element
49347 (such as Camera, Display, Image, Video, ...) when held in its default orientation.
49348             </brief>
49349             <version>
49350  1.0
49351             </version>
49352         </descriptive>
49353         <Type type="unsigned long"/>
49354       </Attribute>
49355       <Attribute readonly="readonly" name="dotsPerInchWidth" id="::SystemInfo::SystemInfoDisplay::dotsPerInchWidth">
49356         <webidl>    readonly attribute unsigned long dotsPerInchWidth;</webidl>
49357         <descriptive>
49358             <brief>
49359  Resolution of this device, along its width, in dots per inch.
49360             </brief>
49361             <version>
49362  1.0
49363             </version>
49364         </descriptive>
49365         <Type type="unsigned long"/>
49366       </Attribute>
49367       <Attribute readonly="readonly" name="dotsPerInchHeight" id="::SystemInfo::SystemInfoDisplay::dotsPerInchHeight">
49368         <webidl>    readonly attribute unsigned long dotsPerInchHeight;</webidl>
49369         <descriptive>
49370             <brief>
49371  Resolution of this device, along its height, in dots per inch.
49372             </brief>
49373             <version>
49374  1.0
49375             </version>
49376         </descriptive>
49377         <Type type="unsigned long"/>
49378       </Attribute>
49379       <Attribute readonly="readonly" name="physicalWidth" id="::SystemInfo::SystemInfoDisplay::physicalWidth">
49380         <webidl>    readonly attribute double physicalWidth;</webidl>
49381         <descriptive>
49382             <brief>
49383  The display's physical width in millimeters.
49384             </brief>
49385             <version>
49386  1.0
49387             </version>
49388         </descriptive>
49389         <Type type="double"/>
49390       </Attribute>
49391       <Attribute readonly="readonly" name="physicalHeight" id="::SystemInfo::SystemInfoDisplay::physicalHeight">
49392         <webidl>    readonly attribute double physicalHeight;</webidl>
49393         <descriptive>
49394             <brief>
49395  The display's physical height in millimeters.
49396             </brief>
49397             <version>
49398  1.0
49399             </version>
49400         </descriptive>
49401         <Type type="double"/>
49402       </Attribute>
49403       <Attribute readonly="readonly" name="brightness" id="::SystemInfo::SystemInfoDisplay::brightness">
49404         <webidl>    readonly attribute double brightness;</webidl>
49405         <descriptive>
49406             <brief>
49407  The current brightness of a display ranging between <var>0 </var>to <var>1</var>.
49408             </brief>
49409             <version>
49410  1.0
49411             </version>
49412         </descriptive>
49413         <Type type="double"/>
49414       </Attribute>
49415     </Interface>
49416     <Interface name="SystemInfoDeviceOrientation" id="::SystemInfo::SystemInfoDeviceOrientation">
49417       <webidl>  [NoInterfaceObject] interface SystemInfoDeviceOrientation : <ref>SystemInfoProperty</ref> {
49418
49419     readonly attribute <ref>SystemInfoDeviceOrientationStatus</ref> status;
49420     readonly attribute boolean isAutoRotation;
49421   };</webidl>
49422       <descriptive>
49423           <brief>
49424  This property reflects the information of the device orientation in this system.
49425           </brief>
49426           <version>
49427  2.0
49428           </version>
49429       </descriptive>
49430       <ExtendedAttributeList>
49431         <ExtendedAttribute name="NoInterfaceObject">
49432           <webidl>NoInterfaceObject</webidl>
49433         </ExtendedAttribute>
49434       </ExtendedAttributeList>
49435       <InterfaceInheritance>
49436         <Name name="SystemInfoProperty"/>
49437       </InterfaceInheritance>
49438       <Attribute readonly="readonly" name="status" id="::SystemInfo::SystemInfoDeviceOrientation::status">
49439         <webidl>    readonly attribute <ref>SystemInfoDeviceOrientationStatus</ref> status;</webidl>
49440         <descriptive>
49441             <brief>
49442  Represents the status of the current device orientation.
49443             </brief>
49444             <version>
49445  2.0
49446             </version>
49447         </descriptive>
49448         <Type name="SystemInfoDeviceOrientationStatus"/>
49449       </Attribute>
49450       <Attribute readonly="readonly" name="isAutoRotation" id="::SystemInfo::SystemInfoDeviceOrientation::isAutoRotation">
49451         <webidl>    readonly attribute boolean isAutoRotation;</webidl>
49452         <descriptive>
49453             <brief>
49454  whether the device is in autorotation.
49455             </brief>
49456             <version>
49457  2.2
49458             </version>
49459         </descriptive>
49460         <Type type="boolean"/>
49461       </Attribute>
49462     </Interface>
49463     <Interface name="SystemInfoBuild" id="::SystemInfo::SystemInfoBuild">
49464       <webidl>  [NoInterfaceObject] interface SystemInfoBuild : <ref>SystemInfoProperty</ref> {
49465
49466     readonly attribute DOMString model;
49467     readonly attribute DOMString manufacturer;
49468     readonly attribute DOMString buildVersion;
49469   };</webidl>
49470       <descriptive>
49471           <brief>
49472  This property reflects the information of the current device.
49473           </brief>
49474           <version>
49475  2.0
49476           </version>
49477       </descriptive>
49478       <ExtendedAttributeList>
49479         <ExtendedAttribute name="NoInterfaceObject">
49480           <webidl>NoInterfaceObject</webidl>
49481         </ExtendedAttribute>
49482       </ExtendedAttributeList>
49483       <InterfaceInheritance>
49484         <Name name="SystemInfoProperty"/>
49485       </InterfaceInheritance>
49486       <Attribute readonly="readonly" name="model" id="::SystemInfo::SystemInfoBuild::model">
49487         <webidl>    readonly attribute DOMString model;</webidl>
49488         <descriptive>
49489             <brief>
49490  Represents the model name of the current device.
49491             </brief>
49492             <version>
49493  2.0
49494             </version>
49495         </descriptive>
49496         <Type type="DOMString"/>
49497       </Attribute>
49498       <Attribute readonly="readonly" name="manufacturer" id="::SystemInfo::SystemInfoBuild::manufacturer">
49499         <webidl>    readonly attribute DOMString manufacturer;</webidl>
49500         <descriptive>
49501             <brief>
49502  Represents the manufacturer of the device.
49503             </brief>
49504             <version>
49505  2.1
49506             </version>
49507         </descriptive>
49508         <Type type="DOMString"/>
49509       </Attribute>
49510       <Attribute readonly="readonly" name="buildVersion" id="::SystemInfo::SystemInfoBuild::buildVersion">
49511         <webidl>    readonly attribute DOMString buildVersion;</webidl>
49512         <descriptive>
49513             <brief>
49514  Represents the build version information of the device.
49515             </brief>
49516             <version>
49517  2.2
49518             </version>
49519         </descriptive>
49520         <Type type="DOMString"/>
49521       </Attribute>
49522     </Interface>
49523     <Interface name="SystemInfoLocale" id="::SystemInfo::SystemInfoLocale">
49524       <webidl>  [NoInterfaceObject] interface SystemInfoLocale : <ref>SystemInfoProperty</ref> {
49525
49526     readonly attribute DOMString language;
49527
49528     readonly attribute DOMString country;
49529   };</webidl>
49530       <descriptive>
49531           <brief>
49532  This property reflects the locale information of the current device.
49533           </brief>
49534           <version>
49535  2.1
49536           </version>
49537       </descriptive>
49538       <ExtendedAttributeList>
49539         <ExtendedAttribute name="NoInterfaceObject">
49540           <webidl>NoInterfaceObject</webidl>
49541         </ExtendedAttribute>
49542       </ExtendedAttributeList>
49543       <InterfaceInheritance>
49544         <Name name="SystemInfoProperty"/>
49545       </InterfaceInheritance>
49546       <Attribute readonly="readonly" name="language" id="::SystemInfo::SystemInfoLocale::language">
49547         <webidl>    readonly attribute DOMString language;</webidl>
49548         <descriptive>
49549             <brief>
49550  Indicates the current language setting in the (LANGUAGE)_(REGION) syntax.
49551 The language setting is in the ISO 630-2 format and the region setting is in the ISO 3166-1 format. 
49552 The language setting is case-sensitive.
49553             </brief>
49554             <version>
49555  2.1
49556             </version>
49557         </descriptive>
49558         <Type type="DOMString"/>
49559       </Attribute>
49560       <Attribute readonly="readonly" name="country" id="::SystemInfo::SystemInfoLocale::country">
49561         <webidl>    readonly attribute DOMString country;</webidl>
49562         <descriptive>
49563             <brief>
49564  Indicates the current country setting in the (LANGUAGE)_(REGION) syntax.
49565 The language setting is in the ISO 630-2 format and the region setting is in the ISO 3166-1 format.
49566 The country setting is case-sensitive.
49567             </brief>
49568             <version>
49569  2.1
49570             </version>
49571         </descriptive>
49572         <Type type="DOMString"/>
49573       </Attribute>
49574     </Interface>
49575     <Interface name="SystemInfoNetwork" id="::SystemInfo::SystemInfoNetwork">
49576       <webidl>  [NoInterfaceObject] interface SystemInfoNetwork : <ref>SystemInfoProperty</ref> {    
49577
49578     readonly attribute <ref>SystemInfoNetworkType</ref> networkType;    
49579   };</webidl>
49580       <descriptive>
49581           <brief>
49582  This property reflects the information of the data network in this system.    
49583           </brief>
49584           <version>
49585  2.0    
49586           </version>
49587       </descriptive>
49588       <ExtendedAttributeList>
49589         <ExtendedAttribute name="NoInterfaceObject">
49590           <webidl>NoInterfaceObject</webidl>
49591         </ExtendedAttribute>
49592       </ExtendedAttributeList>
49593       <InterfaceInheritance>
49594         <Name name="SystemInfoProperty"/>
49595       </InterfaceInheritance>
49596       <Attribute readonly="readonly" name="networkType" id="::SystemInfo::SystemInfoNetwork::networkType">
49597         <webidl>    readonly attribute <ref>SystemInfoNetworkType</ref> networkType;</webidl>
49598         <descriptive>
49599             <brief>
49600  Represents the network type of the current data network.    
49601             </brief>
49602             <version>
49603  2.0    
49604             </version>
49605         </descriptive>
49606         <Type name="SystemInfoNetworkType"/>
49607       </Attribute>
49608     </Interface>
49609     <Interface name="SystemInfoWifiNetwork" id="::SystemInfo::SystemInfoWifiNetwork">
49610       <webidl>   [NoInterfaceObject] interface SystemInfoWifiNetwork : <ref>SystemInfoProperty</ref> {    
49611
49612     readonly attribute DOMString status;    
49613     readonly attribute DOMString ssid;    
49614     readonly attribute DOMString ipAddress;    
49615      readonly attribute DOMString ipv6Address;    
49616     readonly attribute double signalStrength;    
49617   };</webidl>
49618       <descriptive>
49619           <brief>
49620  This property reflects the information of the Wi-Fi network in this system.    
49621           </brief>
49622           <version>
49623  1.0    
49624           </version>
49625       </descriptive>
49626       <ExtendedAttributeList>
49627         <ExtendedAttribute name="NoInterfaceObject">
49628           <webidl>NoInterfaceObject</webidl>
49629         </ExtendedAttribute>
49630       </ExtendedAttributeList>
49631       <InterfaceInheritance>
49632         <Name name="SystemInfoProperty"/>
49633       </InterfaceInheritance>
49634       <Attribute readonly="readonly" name="status" id="::SystemInfo::SystemInfoWifiNetwork::status">
49635         <webidl>    readonly attribute DOMString status;</webidl>
49636         <descriptive>
49637             <brief>
49638  Represents the status (ON or OFF) of the Wi-Fi interface.    
49639             </brief>
49640             <version>
49641  1.0    
49642             </version>
49643         </descriptive>
49644         <Type type="DOMString"/>
49645       </Attribute>
49646       <Attribute readonly="readonly" name="ssid" id="::SystemInfo::SystemInfoWifiNetwork::ssid">
49647         <webidl>    readonly attribute DOMString ssid;</webidl>
49648         <descriptive>
49649             <brief>
49650  Represents the SSID of a Wi-Fi network.    
49651             </brief>
49652             <version>
49653  1.0    
49654             </version>
49655         </descriptive>
49656         <Type type="DOMString"/>
49657       </Attribute>
49658       <Attribute readonly="readonly" name="ipAddress" id="::SystemInfo::SystemInfoWifiNetwork::ipAddress">
49659         <webidl>    readonly attribute DOMString ipAddress;</webidl>
49660         <descriptive>
49661             <brief>
49662  Represents the IPv4 address of Wi-Fi network.    
49663             </brief>
49664             <version>
49665  1.0    
49666             </version>
49667         </descriptive>
49668         <Type type="DOMString"/>
49669       </Attribute>
49670       <Attribute readonly="readonly" name="ipv6Address" id="::SystemInfo::SystemInfoWifiNetwork::ipv6Address">
49671         <webidl>     readonly attribute DOMString ipv6Address;</webidl>
49672         <descriptive>
49673             <brief>
49674  Represents the IPv6 address of Wi-Fi network.    
49675             </brief>
49676             <version>
49677  2.0    
49678             </version>
49679         </descriptive>
49680         <Type type="DOMString"/>
49681       </Attribute>
49682       <Attribute readonly="readonly" name="signalStrength" id="::SystemInfo::SystemInfoWifiNetwork::signalStrength">
49683         <webidl>    readonly attribute double signalStrength;</webidl>
49684         <descriptive>
49685             <brief>
49686  This connection's signal strength, as a normalized value between 0 (no signal detected) and 1 (the level is at its maximum value).    
49687             </brief>
49688             <version>
49689  1.0    
49690             </version>
49691         </descriptive>
49692         <Type type="double"/>
49693       </Attribute>
49694     </Interface>
49695     <Interface name="SystemInfoCellularNetwork" id="::SystemInfo::SystemInfoCellularNetwork">
49696       <webidl>  [NoInterfaceObject] interface SystemInfoCellularNetwork : <ref>SystemInfoProperty</ref> {    
49697
49698     readonly attribute DOMString status;    
49699     readonly attribute DOMString apn;    
49700     readonly attribute DOMString ipAddress;    
49701     readonly attribute DOMString ipv6Address;    
49702     readonly attribute unsigned short mcc;    
49703     readonly attribute unsigned short mnc;    
49704     readonly attribute unsigned short cellId;    
49705     readonly attribute unsigned short lac;    
49706     readonly attribute boolean isRoaming;
49707     readonly attribute boolean isFlightMode;
49708     readonly attribute DOMString imei raises(<ref>WebAPIException</ref>);
49709   };</webidl>
49710       <descriptive>
49711           <brief>
49712  This property reflects the information of the Cellular network in this system.    
49713           </brief>
49714           <version>
49715  1.0    
49716           </version>
49717       </descriptive>
49718       <ExtendedAttributeList>
49719         <ExtendedAttribute name="NoInterfaceObject">
49720           <webidl>NoInterfaceObject</webidl>
49721         </ExtendedAttribute>
49722       </ExtendedAttributeList>
49723       <InterfaceInheritance>
49724         <Name name="SystemInfoProperty"/>
49725       </InterfaceInheritance>
49726       <Attribute readonly="readonly" name="status" id="::SystemInfo::SystemInfoCellularNetwork::status">
49727         <webidl>    readonly attribute DOMString status;</webidl>
49728         <descriptive>
49729             <brief>
49730  Represents the status (ON or OFF) of the cellular network.    
49731             </brief>
49732             <version>
49733  1.0    
49734             </version>
49735         </descriptive>
49736         <Type type="DOMString"/>
49737       </Attribute>
49738       <Attribute readonly="readonly" name="apn" id="::SystemInfo::SystemInfoCellularNetwork::apn">
49739         <webidl>    readonly attribute DOMString apn;</webidl>
49740         <descriptive>
49741             <brief>
49742  Represents an Access Point Name of the cellular network.    
49743             </brief>
49744             <version>
49745  1.0    
49746             </version>
49747         </descriptive>
49748         <Type type="DOMString"/>
49749       </Attribute>
49750       <Attribute readonly="readonly" name="ipAddress" id="::SystemInfo::SystemInfoCellularNetwork::ipAddress">
49751         <webidl>    readonly attribute DOMString ipAddress;</webidl>
49752         <descriptive>
49753             <brief>
49754  Represents the IPv4 address of the cellular network.    
49755             </brief>
49756             <version>
49757  1.0    
49758             </version>
49759         </descriptive>
49760         <Type type="DOMString"/>
49761       </Attribute>
49762       <Attribute readonly="readonly" name="ipv6Address" id="::SystemInfo::SystemInfoCellularNetwork::ipv6Address">
49763         <webidl>    readonly attribute DOMString ipv6Address;</webidl>
49764         <descriptive>
49765             <brief>
49766  Represents the IPv6 address of the cellular network.    
49767             </brief>
49768             <version>
49769  2.0    
49770             </version>
49771         </descriptive>
49772         <Type type="DOMString"/>
49773       </Attribute>
49774       <Attribute readonly="readonly" name="mcc" id="::SystemInfo::SystemInfoCellularNetwork::mcc">
49775         <webidl>    readonly attribute unsigned short mcc;</webidl>
49776         <descriptive>
49777             <brief>
49778  Represents Mobile Country Code (MCC) of the cellular network.    
49779             </brief>
49780             <version>
49781  1.0    
49782             </version>
49783         </descriptive>
49784         <Type type="unsigned short"/>
49785       </Attribute>
49786       <Attribute readonly="readonly" name="mnc" id="::SystemInfo::SystemInfoCellularNetwork::mnc">
49787         <webidl>    readonly attribute unsigned short mnc;</webidl>
49788         <descriptive>
49789             <brief>
49790  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    
49791 identify a mobile phone operator/carrier using the GSM, CDMA, iDEN, TETRA and UMTS public land mobile networks and some satellite mobile networks.    
49792             </brief>
49793             <version>
49794  1.0    
49795             </version>
49796         </descriptive>
49797         <Type type="unsigned short"/>
49798       </Attribute>
49799       <Attribute readonly="readonly" name="cellId" id="::SystemInfo::SystemInfoCellularNetwork::cellId">
49800         <webidl>    readonly attribute unsigned short cellId;</webidl>
49801         <descriptive>
49802             <brief>
49803  Represents Cell Id.    
49804             </brief>
49805             <version>
49806  1.0    
49807             </version>
49808         </descriptive>
49809         <Type type="unsigned short"/>
49810       </Attribute>
49811       <Attribute readonly="readonly" name="lac" id="::SystemInfo::SystemInfoCellularNetwork::lac">
49812         <webidl>    readonly attribute unsigned short lac;</webidl>
49813         <descriptive>
49814             <brief>
49815  Represents Location Area Code.    
49816             </brief>
49817             <version>
49818  1.0    
49819             </version>
49820         </descriptive>
49821         <Type type="unsigned short"/>
49822       </Attribute>
49823       <Attribute readonly="readonly" name="isRoaming" id="::SystemInfo::SystemInfoCellularNetwork::isRoaming">
49824         <webidl>    readonly attribute boolean isRoaming;</webidl>
49825         <descriptive>
49826             <brief>
49827  Whether the connection is set up while the device is roaming.    
49828             </brief>
49829             <version>
49830  1.0    
49831             </version>
49832         </descriptive>
49833         <Type type="boolean"/>
49834       </Attribute>
49835       <Attribute readonly="readonly" name="isFlightMode" id="::SystemInfo::SystemInfoCellularNetwork::isFlightMode">
49836         <webidl>    readonly attribute boolean isFlightMode;</webidl>
49837         <descriptive>
49838             <brief>
49839  Indicates whether the device is in flight mode.
49840             </brief>
49841             <version>
49842  2.1
49843             </version>
49844         </descriptive>
49845         <Type type="boolean"/>
49846       </Attribute>
49847       <Attribute readonly="readonly" name="imei" id="::SystemInfo::SystemInfoCellularNetwork::imei">
49848         <webidl>    readonly attribute DOMString imei raises(<ref>WebAPIException</ref>);</webidl>
49849         <descriptive>
49850             <brief>
49851  Represents the International Mobile Equipment Identity (IMEI).
49852             </brief>
49853             <version>
49854  2.1
49855             </version>
49856             <privilegelevel>
49857  partner
49858             </privilegelevel>
49859             <privilege>
49860  http://tizen.org/privilege/systemmanager
49861             </privilege>
49862         </descriptive>
49863         <Type type="DOMString"/>
49864         <Raises>
49865           <RaiseException name="WebAPIException">
49866             <descriptive>
49867                 <description><p>
49868  with error type SecurityError, if this attribute is not allowed.
49869                 </p></description>
49870             </descriptive>
49871           </RaiseException>
49872         </Raises>
49873       </Attribute>
49874     </Interface>
49875     <Interface name="SystemInfoSIM" id="::SystemInfo::SystemInfoSIM">
49876       <webidl>  [NoInterfaceObject] interface SystemInfoSIM : <ref>SystemInfoProperty</ref> {
49877     readonly attribute <ref>SystemInfoSimState</ref> state raises(<ref>WebAPIException</ref>);
49878     readonly attribute DOMString operatorName raises(<ref>WebAPIException</ref>);
49879     readonly attribute DOMString msisdn raises(<ref>WebAPIException</ref>);
49880     readonly attribute DOMString iccid raises(<ref>WebAPIException</ref>);
49881     readonly attribute unsigned short mcc raises(<ref>WebAPIException</ref>);
49882     readonly attribute unsigned short mnc raises(<ref>WebAPIException</ref>);
49883     readonly attribute DOMString msin raises(<ref>WebAPIException</ref>);
49884     readonly attribute DOMString spn raises(<ref>WebAPIException</ref>);
49885   };</webidl>
49886       <descriptive>
49887           <brief>
49888  This property reflects the information of the SIM card information.    
49889           </brief>
49890           <version>
49891  2.0
49892           </version>
49893       </descriptive>
49894       <ExtendedAttributeList>
49895         <ExtendedAttribute name="NoInterfaceObject">
49896           <webidl>NoInterfaceObject</webidl>
49897         </ExtendedAttribute>
49898       </ExtendedAttributeList>
49899       <InterfaceInheritance>
49900         <Name name="SystemInfoProperty"/>
49901       </InterfaceInheritance>
49902       <Attribute readonly="readonly" name="state" id="::SystemInfo::SystemInfoSIM::state">
49903         <webidl>    readonly attribute <ref>SystemInfoSimState</ref> state raises(<ref>WebAPIException</ref>);</webidl>
49904         <descriptive>
49905             <brief>
49906  Represents the SIM card state.
49907             </brief>
49908             <version>
49909  2.1
49910             </version>
49911             <privilegelevel>
49912  public
49913             </privilegelevel>
49914             <privilege>
49915  http://tizen.org/privilege/system
49916             </privilege>
49917         </descriptive>
49918         <Type name="SystemInfoSimState"/>
49919         <Raises>
49920           <RaiseException name="WebAPIException">
49921             <descriptive>
49922                 <description><p>
49923  with error type SecurityError, if this attribute is not allowed.
49924                 </p></description>
49925             </descriptive>
49926           </RaiseException>
49927         </Raises>
49928       </Attribute>
49929       <Attribute readonly="readonly" name="operatorName" id="::SystemInfo::SystemInfoSIM::operatorName">
49930         <webidl>    readonly attribute DOMString operatorName raises(<ref>WebAPIException</ref>);</webidl>
49931         <descriptive>
49932             <brief>
49933  Represents the Operator Name String (ONS) of Common PCN Handset Specification (CPHS) in SIM card.     
49934             </brief>
49935             <version>
49936  2.0    
49937             </version>
49938             <privilegelevel>
49939  public
49940             </privilegelevel>
49941             <privilege>
49942  http://tizen.org/privilege/system
49943             </privilege>
49944         </descriptive>
49945         <Type type="DOMString"/>
49946         <Raises>
49947           <RaiseException name="WebAPIException">
49948             <descriptive>
49949                 <description><p>
49950  with error type SecurityError, if this attribute is not allowed.
49951                 </p></description>
49952             </descriptive>
49953           </RaiseException>
49954         </Raises>
49955       </Attribute>
49956       <Attribute readonly="readonly" name="msisdn" id="::SystemInfo::SystemInfoSIM::msisdn">
49957         <webidl>    readonly attribute DOMString msisdn raises(<ref>WebAPIException</ref>);</webidl>
49958         <descriptive>
49959             <brief>
49960  Represents the SIM card subscriber number.     
49961             </brief>
49962             <version>
49963  2.0    
49964             </version>
49965             <privilegelevel>
49966  partner
49967             </privilegelevel>
49968             <privilege>
49969  http://tizen.org/privilege/systemmanager
49970             </privilege>
49971         </descriptive>
49972         <Type type="DOMString"/>
49973         <Raises>
49974           <RaiseException name="WebAPIException">
49975             <descriptive>
49976                 <description><p>
49977  with error type SecurityError, if this attribute is not allowed.
49978                 </p></description>
49979             </descriptive>
49980           </RaiseException>
49981         </Raises>
49982       </Attribute>
49983       <Attribute readonly="readonly" name="iccid" id="::SystemInfo::SystemInfoSIM::iccid">
49984         <webidl>    readonly attribute DOMString iccid raises(<ref>WebAPIException</ref>);</webidl>
49985         <descriptive>
49986             <brief>
49987  Represents the Integrated Circuit Card ID.    
49988             </brief>
49989             <version>
49990  2.0    
49991             </version>
49992             <privilegelevel>
49993  public
49994             </privilegelevel>
49995             <privilege>
49996  http://tizen.org/privilege/system
49997             </privilege>
49998         </descriptive>
49999         <Type type="DOMString"/>
50000         <Raises>
50001           <RaiseException name="WebAPIException">
50002             <descriptive>
50003                 <description><p>
50004  with error type SecurityError, if this attribute is not allowed.
50005                 </p></description>
50006             </descriptive>
50007           </RaiseException>
50008         </Raises>
50009       </Attribute>
50010       <Attribute readonly="readonly" name="mcc" id="::SystemInfo::SystemInfoSIM::mcc">
50011         <webidl>    readonly attribute unsigned short mcc raises(<ref>WebAPIException</ref>);</webidl>
50012         <descriptive>
50013             <brief>
50014  Represents the Mobile Country Code (MCC) of SIM provider.     
50015             </brief>
50016             <version>
50017  2.0    
50018             </version>
50019             <privilegelevel>
50020  public
50021             </privilegelevel>
50022             <privilege>
50023  http://tizen.org/privilege/system
50024             </privilege>
50025         </descriptive>
50026         <Type type="unsigned short"/>
50027         <Raises>
50028           <RaiseException name="WebAPIException">
50029             <descriptive>
50030                 <description><p>
50031  with error type SecurityError, if this attribute is not allowed.
50032                 </p></description>
50033             </descriptive>
50034           </RaiseException>
50035         </Raises>
50036       </Attribute>
50037       <Attribute readonly="readonly" name="mnc" id="::SystemInfo::SystemInfoSIM::mnc">
50038         <webidl>    readonly attribute unsigned short mnc raises(<ref>WebAPIException</ref>);</webidl>
50039         <descriptive>
50040             <brief>
50041  Represents the Mobile Network Code (MNC) of SIM provider.     
50042             </brief>
50043             <version>
50044  2.0    
50045             </version>
50046             <privilegelevel>
50047  public
50048             </privilegelevel>
50049             <privilege>
50050  http://tizen.org/privilege/system
50051             </privilege>
50052         </descriptive>
50053         <Type type="unsigned short"/>
50054         <Raises>
50055           <RaiseException name="WebAPIException">
50056             <descriptive>
50057                 <description><p>
50058  with error type SecurityError, if this attribute is not allowed.
50059                 </p></description>
50060             </descriptive>
50061           </RaiseException>
50062         </Raises>
50063       </Attribute>
50064       <Attribute readonly="readonly" name="msin" id="::SystemInfo::SystemInfoSIM::msin">
50065         <webidl>    readonly attribute DOMString msin raises(<ref>WebAPIException</ref>);</webidl>
50066         <descriptive>
50067             <brief>
50068  Represents the Mobile Subscription Identification Number (MSIN) of SIM provider.     
50069             </brief>
50070             <version>
50071  2.0    
50072             </version>
50073             <privilegelevel>
50074  partner
50075             </privilegelevel>
50076             <privilege>
50077  http://tizen.org/privilege/systemmanager
50078             </privilege>
50079         </descriptive>
50080         <Type type="DOMString"/>
50081         <Raises>
50082           <RaiseException name="WebAPIException">
50083             <descriptive>
50084                 <description><p>
50085  with error type SecurityError, if this attribute is not allowed.
50086                 </p></description>
50087             </descriptive>
50088           </RaiseException>
50089         </Raises>
50090       </Attribute>
50091       <Attribute readonly="readonly" name="spn" id="::SystemInfo::SystemInfoSIM::spn">
50092         <webidl>    readonly attribute DOMString spn raises(<ref>WebAPIException</ref>);</webidl>
50093         <descriptive>
50094             <brief>
50095  Represents the Service Provider Name (SPN) of SIM card.     
50096             </brief>
50097             <version>
50098  2.0    
50099             </version>
50100             <privilegelevel>
50101  public
50102             </privilegelevel>
50103             <privilege>
50104  http://tizen.org/privilege/system
50105             </privilege>
50106         </descriptive>
50107         <Type type="DOMString"/>
50108         <Raises>
50109           <RaiseException name="WebAPIException">
50110             <descriptive>
50111                 <description><p>
50112  with error type SecurityError, if this attribute is not allowed.
50113                 </p></description>
50114             </descriptive>
50115           </RaiseException>
50116         </Raises>
50117       </Attribute>
50118     </Interface>
50119     <Interface name="SystemInfoPeripheral" id="::SystemInfo::SystemInfoPeripheral">
50120       <webidl>  [NoInterfaceObject] interface SystemInfoPeripheral : <ref>SystemInfoProperty</ref> {
50121
50122     readonly attribute boolean isVideoOutputOn;
50123   };</webidl>
50124       <descriptive>
50125           <brief>
50126  This property reflects the peripheral information of the current device.
50127           </brief>
50128           <version>
50129  2.1
50130           </version>
50131       </descriptive>
50132       <ExtendedAttributeList>
50133         <ExtendedAttribute name="NoInterfaceObject">
50134           <webidl>NoInterfaceObject</webidl>
50135         </ExtendedAttribute>
50136       </ExtendedAttributeList>
50137       <InterfaceInheritance>
50138         <Name name="SystemInfoProperty"/>
50139       </InterfaceInheritance>
50140       <Attribute readonly="readonly" name="isVideoOutputOn" id="::SystemInfo::SystemInfoPeripheral::isVideoOutputOn">
50141         <webidl>    readonly attribute boolean isVideoOutputOn;</webidl>
50142         <descriptive>
50143             <brief>
50144  Represents the video out status.
50145             </brief>
50146             <version>
50147  2.1
50148             </version>
50149         </descriptive>
50150         <Type type="boolean"/>
50151       </Attribute>
50152     </Interface>
50153   </Module>
50154   <Module name="SystemSetting" id="::SystemSetting">
50155     <webidl>module SystemSetting {
50156
50157   [NoInterfaceObject] interface SystemSettingObject {
50158     readonly attribute <ref>SystemSettingManager</ref> systemsetting;
50159   };
50160     <ref>Tizen</ref> implements <ref>SystemSettingObject</ref>;
50161
50162   enum SystemSettingType {&quot;HOME_SCREEN&quot;, &quot;LOCK_SCREEN&quot;, &quot;INCOMING_CALL&quot;, &quot;NOTIFICATION_EMAIL&quot;};
50163
50164   [NoInterfaceObject] interface SystemSettingManager {
50165
50166      void setProperty(<ref>SystemSettingType</ref> type,
50167               DOMString value,
50168               <ref>SuccessCallback</ref> successCallback,
50169               optional <ref>ErrorCallback</ref>? errorCallback) raises (<ref>WebAPIException</ref>);
50170
50171      void getProperty(<ref>SystemSettingType</ref> type,
50172               <ref>SystemSettingSuccessCallback</ref> successCallback,
50173               optional <ref>ErrorCallback</ref>? errorCallback) raises (<ref>WebAPIException</ref>);
50174      
50175   };
50176
50177   [Callback=FunctionOnly, NoInterfaceObject] interface SystemSettingSuccessCallback {
50178     void onsuccess(DOMString value);
50179   };
50180
50181 };</webidl>
50182     <descriptive>
50183         <brief>
50184  This API provides interfaces and methods providing Web applications with access to various values of the system.
50185         </brief>
50186        <description>
50187         <p>
50188 This API provides an interface and method through features such as:
50189         </p>
50190         <ul>
50191           <li>
50192  HOME_SCREEN          </li>
50193           <li>
50194  LOCK_SCREEN          </li>
50195           <li>
50196  INCOMING_CALL          </li>
50197           <li>
50198  NOTIFICATION_EMAIL          </li>
50199         </ul>
50200         <p>
50201 For more information on the SystemSetting features, see <a href="../../org.tizen.web.appprogramming/html/guide/sys_guide/systemsetting.htm">System Setting Guide</a>.
50202         </p>
50203        </description>
50204         <version>
50205  2.0
50206         </version>
50207     </descriptive>
50208     <Interface name="SystemSettingObject" id="::SystemSetting::SystemSettingObject">
50209       <webidl>  [NoInterfaceObject] interface SystemSettingObject {
50210     readonly attribute <ref>SystemSettingManager</ref> systemsetting;
50211   };</webidl>
50212       <descriptive>
50213           <brief>
50214  This interface defines what is instantiated by the <em>Tizen </em>object from the Tizen Platform.
50215           </brief>
50216          <description>
50217           <p>
50218 There will be a <em>tizen.systemsetting </em>object that allows accessing the functionality of the SystemSetting API.
50219           </p>
50220          </description>
50221           <version>
50222  2.0
50223           </version>
50224       </descriptive>
50225       <ExtendedAttributeList>
50226         <ExtendedAttribute name="NoInterfaceObject">
50227           <webidl>NoInterfaceObject</webidl>
50228         </ExtendedAttribute>
50229       </ExtendedAttributeList>
50230       <Attribute readonly="readonly" name="systemsetting" id="::SystemSetting::SystemSettingObject::systemsetting">
50231         <webidl>    readonly attribute <ref>SystemSettingManager</ref> systemsetting;</webidl>
50232         <Type name="SystemSettingManager"/>
50233       </Attribute>
50234     </Interface>
50235     <Implements name1="Tizen" name2="SystemSettingObject">
50236       <webidl>    <ref>Tizen</ref> implements <ref>SystemSettingObject</ref>;</webidl>
50237     </Implements>
50238     <Enum name="SystemSettingType" id="::SystemSetting::SystemSettingType">
50239       <webidl>  enum SystemSettingType {&quot;HOME_SCREEN&quot;, &quot;LOCK_SCREEN&quot;, &quot;INCOMING_CALL&quot;, &quot;NOTIFICATION_EMAIL&quot;};</webidl>
50240       <descriptive>
50241           <brief>
50242  This enumerator indicates the type of supported system setting.
50243 The following values are supported in this release:
50244           </brief>
50245          <description>
50246           <ul>
50247             <li>
50248 HOME_SCREEN - For homescreen background image.            </li>
50249             <li>
50250 LOCK_SCREEN - For lockscreen background image.            </li>
50251             <li>
50252 INCOMING_CALL - For incoming call ringtone.            </li>
50253             <li>
50254 NOTIFICATION_EMAIL - For email notification alert tone.            </li>
50255           </ul>
50256           <p>
50257 Defines supporting setting types.
50258 The HOME_SCREEN and LOCK_SCREEN are supported for images files.
50259 The INCOMING_CALL and NOTIFICATION_EMAIL are support for sound files.
50260           </p>
50261          </description>
50262           <version>
50263  2.0
50264           </version>
50265       </descriptive>
50266       <EnumValue stringvalue="HOME_SCREEN">
50267         <webidl>&quot;HOME_SCREEN</webidl>
50268       </EnumValue>
50269       <EnumValue stringvalue="LOCK_SCREEN">
50270         <webidl> &quot;LOCK_SCREEN</webidl>
50271       </EnumValue>
50272       <EnumValue stringvalue="INCOMING_CALL">
50273         <webidl> &quot;INCOMING_CALL</webidl>
50274       </EnumValue>
50275       <EnumValue stringvalue="NOTIFICATION_EMAIL">
50276         <webidl> &quot;NOTIFICATION_EMAIL</webidl>
50277       </EnumValue>
50278     </Enum>
50279     <Interface name="SystemSettingManager" id="::SystemSetting::SystemSettingManager">
50280       <webidl>  [NoInterfaceObject] interface SystemSettingManager {
50281
50282      void setProperty(<ref>SystemSettingType</ref> type,
50283               DOMString value,
50284               <ref>SuccessCallback</ref> successCallback,
50285               optional <ref>ErrorCallback</ref>? errorCallback) raises (<ref>WebAPIException</ref>);
50286
50287      void getProperty(<ref>SystemSettingType</ref> type,
50288               <ref>SystemSettingSuccessCallback</ref> successCallback,
50289               optional <ref>ErrorCallback</ref>? errorCallback) raises (<ref>WebAPIException</ref>);
50290      
50291   };</webidl>
50292       <descriptive>
50293           <brief>
50294  This is the top-level interface for the SystemSetting API that provides
50295 access to the module functionalities.
50296           </brief>
50297       </descriptive>
50298       <ExtendedAttributeList>
50299         <ExtendedAttribute name="NoInterfaceObject">
50300           <webidl>NoInterfaceObject</webidl>
50301         </ExtendedAttribute>
50302       </ExtendedAttributeList>
50303       <Operation name="setProperty" id="::SystemSetting::SystemSettingManager::setProperty">
50304         <webidl>     void setProperty(<ref>SystemSettingType</ref> type,
50305               DOMString value,
50306               <ref>SuccessCallback</ref> successCallback,
50307               optional <ref>ErrorCallback</ref>? errorCallback) raises (<ref>WebAPIException</ref>);</webidl>
50308         <descriptive>
50309             <brief>
50310  Sets the property of a device.
50311             </brief>
50312            <description>
50313             <p>
50314 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.
50315             </p>
50316            </description>
50317             <version>
50318  2.0
50319             </version>
50320            <description>
50321             <p>
50322 The ErrorCallback is launched with these error types:
50323             </p>
50324             <ul>
50325               <li>
50326 TypeMismatchError - If any input parameter is not compatible with the expected type for that parameter.               </li>
50327               <li>
50328 InvalidValuesError - If any of the input parameters contain an invalid value.              </li>
50329               <li>
50330 UnknownError - If any other error occurs.              </li>
50331             </ul>
50332            </description>
50333             <privilegelevel>
50334  public
50335             </privilegelevel>
50336             <privilege>
50337  http://tizen.org/privilege/setting
50338             </privilege>
50339             <Code> // Define the success callback
50340  function successCallback() {
50341    console.log(&quot;Success to setProperty&quot;);
50342  }
50343
50344  // Define the error callback.
50345  function errorCallback(error) {
50346    console.log(&quot;Fail to setProperty&quot; + error.message);
50347  }
50348
50349  tizen.systemsetting.setProperty(&quot;HOME_SCREEN&quot;, &quot;/opt/usr/media/Images/image1.jpg&quot;, successCallback, errorCallback);
50350
50351  </Code>
50352         </descriptive>
50353         <Type type="void"/>
50354         <ArgumentList>
50355           <Argument name="type">
50356             <descriptive>
50357                 <description><p>
50358  The setting type to set.
50359                 </p></description>
50360             </descriptive>
50361             <Type name="SystemSettingType"/>
50362           </Argument>
50363           <Argument name="value">
50364             <descriptive>
50365                 <description><p>
50366  The location path of a wallpaper or ringtone file.
50367                 </p></description>
50368             </descriptive>
50369             <Type type="DOMString"/>
50370           </Argument>
50371           <Argument name="successCallback">
50372             <descriptive>
50373                 <description><p>
50374  To be invoked if the setting value is successfully set.
50375                 </p></description>
50376             </descriptive>
50377             <Type name="SuccessCallback"/>
50378           </Argument>
50379           <Argument optional="optional" name="errorCallback">
50380             <descriptive>
50381                 <description><p>
50382  To be invoked if the setting value cannot be set.
50383                 </p></description>
50384             </descriptive>
50385             <Type name="ErrorCallback" nullable="nullable"/>
50386           </Argument>
50387         </ArgumentList>
50388         <Raises>
50389           <RaiseException name="WebAPIException">
50390             <descriptive>
50391                 <description><p>
50392  with error type InvalidValuesError, if any of the input parameters contain an invalid value.
50393                 </p></description>
50394                 <description><p>
50395  with error type NotSupportedError, if this feature is not supported.
50396                 </p></description>
50397                 <description><p>
50398  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
50399                 </p></description>
50400                 <description><p>
50401  with error type SecurityError, if this functionality is not allowed.
50402                 </p></description>
50403                 <description><p>
50404  with error type UnknownError in any other error case.
50405                 </p></description>
50406             </descriptive>
50407           </RaiseException>
50408         </Raises>
50409       </Operation>
50410       <Operation name="getProperty" id="::SystemSetting::SystemSettingManager::getProperty">
50411         <webidl>     void getProperty(<ref>SystemSettingType</ref> type,
50412               <ref>SystemSettingSuccessCallback</ref> successCallback,
50413               optional <ref>ErrorCallback</ref>? errorCallback) raises (<ref>WebAPIException</ref>);</webidl>
50414         <descriptive>
50415             <brief>
50416   Gets the value of the property of a device.
50417             </brief>
50418            <description>
50419             <p>
50420 This method allows the user to get the value of the specified system property as wallpaper or ringtone of a device.
50421             </p>
50422            </description>
50423             <version>
50424  2.0
50425             </version>
50426            <description>
50427             <p>
50428 The ErrorCallback is launched with these error types:
50429             </p>
50430             <ul>
50431               <li>
50432 TypeMismatchError - If any input parameter is not compatible with the expected type for that parameter.               </li>
50433               <li>
50434 InvalidValuesError - If any of the input parameters contain an invalid value.              </li>
50435               <li>
50436 UnknownError - If any other error occurs.              </li>
50437             </ul>
50438            </description>
50439             <Code> // Define the success callback
50440  function getPropertySuccessCallback(value) {
50441    console.log(&quot;Success to getProperty : &quot; + value);
50442  }
50443
50444  // Define the error callback.
50445  function errorCallback(error) {
50446    console.log(&quot;Fail to getProperty&quot; + error.message);
50447  }
50448
50449  tizen.systemsetting.getProperty(&quot;HOME_SCREEN&quot;, getPropertySuccessCallback, errorCallback);
50450
50451  </Code>
50452         </descriptive>
50453         <Type type="void"/>
50454         <ArgumentList>
50455           <Argument name="type">
50456             <descriptive>
50457                 <description><p>
50458  The type of the property to get.
50459                 </p></description>
50460             </descriptive>
50461             <Type name="SystemSettingType"/>
50462           </Argument>
50463           <Argument name="successCallback">
50464             <descriptive>
50465                 <description><p>
50466  To be invoked if the setting value is successfully retrieved.
50467                 </p></description>
50468             </descriptive>
50469             <Type name="SystemSettingSuccessCallback"/>
50470           </Argument>
50471           <Argument optional="optional" name="errorCallback">
50472             <descriptive>
50473                 <description><p>
50474  To be invoked if the setting value cannot be retrieved.
50475                 </p></description>
50476             </descriptive>
50477             <Type name="ErrorCallback" nullable="nullable"/>
50478           </Argument>
50479         </ArgumentList>
50480         <Raises>
50481           <RaiseException name="WebAPIException">
50482             <descriptive>
50483                 <description><p>
50484  with error type InvalidValuesError, if any of the input parameters contain an invalid value.
50485                 </p></description>
50486                 <description><p>
50487  with error type NotSupportedError, if this feature is not supported.
50488                 </p></description>
50489                 <description><p>
50490  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
50491                 </p></description>
50492                 <description><p>
50493  with error type UnknownError in any other error case.     
50494                 </p></description>
50495             </descriptive>
50496           </RaiseException>
50497         </Raises>
50498       </Operation>
50499     </Interface>
50500     <Interface name="SystemSettingSuccessCallback" id="::SystemSetting::SystemSettingSuccessCallback">
50501       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface SystemSettingSuccessCallback {
50502     void onsuccess(DOMString value);
50503   };</webidl>
50504       <descriptive>
50505           <brief>
50506  The success callback for getProperty().
50507           </brief>
50508           <version>
50509  2.0
50510           </version>
50511       </descriptive>
50512       <ExtendedAttributeList>
50513         <ExtendedAttribute name="Callback" value="FunctionOnly">
50514           <webidl>Callback</webidl>
50515         </ExtendedAttribute>
50516         <ExtendedAttribute name="NoInterfaceObject">
50517           <webidl> NoInterfaceObject</webidl>
50518         </ExtendedAttribute>
50519       </ExtendedAttributeList>
50520       <Operation name="onsuccess" id="::SystemSetting::SystemSettingSuccessCallback::onsuccess">
50521         <webidl>    void onsuccess(DOMString value);</webidl>
50522         <Type type="void"/>
50523         <ArgumentList>
50524           <Argument name="value">
50525             <Type type="DOMString"/>
50526           </Argument>
50527         </ArgumentList>
50528       </Operation>
50529     </Interface>
50530   </Module>
50531   <Module name="Time" id="::Time">
50532     <webidl>module Time {
50533   
50534   enum TimeDurationUnit { &quot;MSECS&quot;, &quot;SECS&quot;, &quot;MINS&quot;, &quot;HOURS&quot;, &quot;DAYS&quot; };
50535   
50536   [NoInterfaceObject] interface TimeManagerObject {
50537     readonly attribute <ref>TimeUtil</ref> time;
50538   };
50539   <ref>Tizen</ref> implements <ref>TimeManagerObject</ref>;
50540   
50541   [NoInterfaceObject] interface TimeUtil {
50542     <ref>TZDate</ref> getCurrentDateTime() raises(<ref>WebAPIException</ref>);
50543     
50544     DOMString getLocalTimezone() raises(<ref>WebAPIException</ref>);
50545     
50546     DOMString[] getAvailableTimezones() raises(<ref>WebAPIException</ref>);
50547                                            
50548     DOMString getDateFormat(optional boolean? shortformat) raises(<ref>WebAPIException</ref>);
50549     
50550     DOMString getTimeFormat() raises(<ref>WebAPIException</ref>);
50551     
50552     boolean isLeapYear(long year) raises(<ref>WebAPIException</ref>);
50553   };
50554
50555
50556   [Constructor(optional Date? datetime, optional DOMString? timezone),
50557    Constructor(long year, long month, long day, optional long? hours, optional long? minutes, optional long? seconds, optional long? milliseconds, optional DOMString? timezone)]
50558
50559   interface TZDate {
50560     long getDate();
50561     
50562     void setDate(long date);
50563     
50564     long getDay();
50565     
50566     long getFullYear();
50567     
50568     void setFullYear(long year);
50569     
50570     long getHours();
50571     
50572     void setHours(long hours);
50573     
50574     long getMilliseconds();
50575     
50576     void setMilliseconds(long ms);
50577     
50578     long getMinutes();
50579     
50580     void setMinutes(long minutes);
50581     
50582     long getMonth();
50583     
50584     void setMonth(long month);
50585     
50586     long getSeconds();
50587     
50588     void setSeconds(long seconds);
50589     
50590     long getUTCDate();
50591     
50592     void setUTCDate(long date);
50593     
50594     long getUTCDay();
50595     
50596     long getUTCFullYear();
50597     
50598     void setUTCFullYear(long year);
50599     
50600     long getUTCHours();
50601     
50602     void setUTCHours(long hours);
50603     
50604     long getUTCMilliseconds();
50605     
50606     void setUTCMilliseconds(long ms);
50607     
50608     long getUTCMinutes();
50609     
50610     void setUTCMinutes(long minutes);
50611     
50612     long getUTCMonth();
50613     
50614     void setUTCMonth(long month);
50615     
50616     long getUTCSeconds();
50617     
50618     void setUTCSeconds(long seconds);
50619     
50620     DOMString getTimezone();
50621     
50622     <ref>TZDate</ref> toTimezone(DOMString tzid) raises(<ref>WebAPIException</ref>);
50623     
50624     <ref>TZDate</ref> toLocalTimezone() raises(<ref>WebAPIException</ref>);
50625     
50626     <ref>TZDate</ref> toUTC() raises(<ref>WebAPIException</ref>);
50627     
50628     <ref>TimeDuration</ref> difference(<ref>TZDate</ref> other) raises(<ref>WebAPIException</ref>);
50629
50630     boolean equalsTo(<ref>TZDate</ref> other) raises(<ref>WebAPIException</ref>);
50631     
50632     boolean earlierThan(<ref>TZDate</ref> other) raises(<ref>WebAPIException</ref>);
50633     
50634     boolean laterThan(<ref>TZDate</ref> other) raises(<ref>WebAPIException</ref>);
50635     
50636     <ref>TZDate</ref> addDuration(<ref>TimeDuration</ref> duration) raises(<ref>WebAPIException</ref>);
50637     
50638     DOMString toLocaleDateString();
50639     
50640     DOMString toLocaleTimeString();
50641     
50642     DOMString toLocaleString();
50643     
50644     DOMString toDateString();
50645     
50646     DOMString toTimeString();
50647     
50648     DOMString toString();
50649     
50650     DOMString getTimezoneAbbreviation() raises(<ref>WebAPIException</ref>);
50651     
50652     long secondsFromUTC() raises(<ref>WebAPIException</ref>);
50653     
50654     boolean isDST() raises(<ref>WebAPIException</ref>);
50655     
50656     <ref>TZDate</ref>? getPreviousDSTTransition() raises(<ref>WebAPIException</ref>);
50657     
50658     <ref>TZDate</ref>? getNextDSTTransition() raises(<ref>WebAPIException</ref>);
50659   };
50660   
50661   [Constructor(long long length, optional <ref>TimeDurationUnit</ref>? unit)]
50662   interface TimeDuration
50663   {   
50664     attribute long long length;
50665     
50666     attribute <ref>TimeDurationUnit</ref> unit;
50667     
50668     <ref>TimeDuration</ref> difference(<ref>TimeDuration</ref> other) raises(<ref>WebAPIException</ref>);
50669     
50670     boolean equalsTo(<ref>TimeDuration</ref> other) raises(<ref>WebAPIException</ref>);
50671     
50672     boolean lessThan(<ref>TimeDuration</ref> other) raises(<ref>WebAPIException</ref>);
50673     
50674     boolean greaterThan(<ref>TimeDuration</ref> other) raises(<ref>WebAPIException</ref>);
50675   };
50676 };</webidl>
50677     <descriptive>
50678         <brief>
50679   The Time API provides information regarding date / time and time zones.
50680         </brief>
50681         <version>
50682  1.0
50683         </version>
50684        <description>
50685         <p>
50686 The JavaScript Date object does not have full timezone support.
50687 Date objects allow only simple representations to denote a particular location's
50688 offset from Universal Coordinated Time (UTC). This is typically provided as a +/-
50689 offset from UTC-0 (also known as Greenwich Mean Time, or GMT) for example, +05:30 denotes
50690 that a location is 5 hours and 30 minutes ahead of UTC +00:00.
50691 The issue with this method is not getting the correct
50692 local time for a given date. The existing methods are sufficient for this purpose.
50693 The issue is correctly converting to and from local time and UTC for all points in
50694 time - in any of the past, present, and future - based on an initial time provided.
50695 This is important for defining relative dates, where a time in a given location may
50696 observe different UTC offsets, according to any Daylight Savings Rules (DST) in effect
50697 or any other changes that may occur to a location's time zone over time.
50698 Without the communication of the explicit time zone rules governing a given date and
50699 time, the ability to effectively calculate the offset of the local time to UTC or to
50700 any other time zone at any point in the past or future is lost. 
50701         </p>
50702         <p>
50703 This API can be used to get TZDate objects with full time zone support, convert them
50704 between timezones, retrieve available timezones.
50705         </p>
50706         <p>
50707 For more information on the Time features, see <a href="../../org.tizen.web.appprogramming/html/guide/sys_guide/time.htm">Time Guide</a>. 
50708         </p>
50709        </description>
50710     </descriptive>
50711     <Enum name="TimeDurationUnit" id="::Time::TimeDurationUnit">
50712       <webidl>  enum TimeDurationUnit { &quot;MSECS&quot;, &quot;SECS&quot;, &quot;MINS&quot;, &quot;HOURS&quot;, &quot;DAYS&quot; };</webidl>
50713       <descriptive>
50714           <brief>
50715  TimeDuration unit (milliseconds, seconds, minutes, hours or days).
50716           </brief>
50717          <description>
50718           <p>
50719 At least the following values must be supported:
50720           </p>
50721           <ul>
50722             <li>
50723 MSECS - Indicates a duration in milliseconds            </li>
50724             <li>
50725 SECS - Indicates a duration in seconds             </li>
50726             <li>
50727 MINS - Indicates a duration in minutes             </li>
50728             <li>
50729 HOURS - Indicates a duration in hours             </li>
50730             <li>
50731 DAYS - Indicates a duration in days            </li>
50732           </ul>
50733          </description>
50734           <version>
50735  1.0
50736           </version>
50737       </descriptive>
50738       <EnumValue stringvalue="MSECS">
50739         <webidl> &quot;MSECS</webidl>
50740       </EnumValue>
50741       <EnumValue stringvalue="SECS">
50742         <webidl> &quot;SECS</webidl>
50743       </EnumValue>
50744       <EnumValue stringvalue="MINS">
50745         <webidl> &quot;MINS</webidl>
50746       </EnumValue>
50747       <EnumValue stringvalue="HOURS">
50748         <webidl> &quot;HOURS</webidl>
50749       </EnumValue>
50750       <EnumValue stringvalue="DAYS">
50751         <webidl> &quot;DAYS</webidl>
50752       </EnumValue>
50753     </Enum>
50754     <Interface name="TimeManagerObject" id="::Time::TimeManagerObject">
50755       <webidl>  [NoInterfaceObject] interface TimeManagerObject {
50756     readonly attribute <ref>TimeUtil</ref> time;
50757   };</webidl>
50758       <descriptive>
50759           <brief>
50760  Defines what is instantiated in the tizen object by the Tizen Platform.
50761           </brief>
50762          <description>
50763           <p>
50764 There will be a tizen.time object that allows accessing the
50765 functionality of the Time API.
50766           </p>
50767          </description>
50768           <version>
50769  1.0
50770           </version>
50771       </descriptive>
50772       <ExtendedAttributeList>
50773         <ExtendedAttribute name="NoInterfaceObject">
50774           <webidl>NoInterfaceObject</webidl>
50775         </ExtendedAttribute>
50776       </ExtendedAttributeList>
50777       <Attribute readonly="readonly" name="time" id="::Time::TimeManagerObject::time">
50778         <webidl>    readonly attribute <ref>TimeUtil</ref> time;</webidl>
50779         <Type name="TimeUtil"/>
50780       </Attribute>
50781     </Interface>
50782     <Implements name1="Tizen" name2="TimeManagerObject">
50783       <webidl>  <ref>Tizen</ref> implements <ref>TimeManagerObject</ref>;</webidl>
50784     </Implements>
50785     <Interface name="TimeUtil" id="::Time::TimeUtil">
50786       <webidl>  [NoInterfaceObject] interface TimeUtil {
50787     <ref>TZDate</ref> getCurrentDateTime() raises(<ref>WebAPIException</ref>);
50788     
50789     DOMString getLocalTimezone() raises(<ref>WebAPIException</ref>);
50790     
50791     DOMString[] getAvailableTimezones() raises(<ref>WebAPIException</ref>);
50792                                            
50793     DOMString getDateFormat(optional boolean? shortformat) raises(<ref>WebAPIException</ref>);
50794     
50795     DOMString getTimeFormat() raises(<ref>WebAPIException</ref>);
50796     
50797     boolean isLeapYear(long year) raises(<ref>WebAPIException</ref>);
50798   };</webidl>
50799       <descriptive>
50800           <brief>
50801  The TimeUtil class that provides access to the time API.
50802           </brief>
50803          <description>
50804           <p>
50805 This interface offers methods to manage date / time as well as timezones such as:
50806           </p>
50807           <ul>
50808             <li>
50809 Get the current date / time using getCurrentDateTime().            </li>
50810             <li>
50811 Get timezones using getLocalTimezone() and getAvailableTimezones().            </li>
50812           </ul>
50813          </description>
50814           <version>
50815  1.0
50816           </version>
50817       </descriptive>
50818       <ExtendedAttributeList>
50819         <ExtendedAttribute name="NoInterfaceObject">
50820           <webidl>NoInterfaceObject</webidl>
50821         </ExtendedAttribute>
50822       </ExtendedAttributeList>
50823       <Operation name="getCurrentDateTime" id="::Time::TimeUtil::getCurrentDateTime">
50824         <webidl>    <ref>TZDate</ref> getCurrentDateTime() raises(<ref>WebAPIException</ref>);</webidl>
50825         <descriptive>
50826             <brief>
50827  Returns the current date / time.
50828             </brief>
50829             <version>
50830  1.0
50831             </version>
50832             <Code> var current_dt = tizen.time.getCurrentDateTime();
50833  console.log(&quot;current date / time is &quot; + current_dt.toLocaleString());
50834  </Code>
50835         </descriptive>
50836         <Type name="TZDate">
50837           <descriptive>
50838               <description><p>
50839  TZDate Current TZDate object.
50840               </p></description>
50841           </descriptive>
50842         </Type>
50843         <ArgumentList/>
50844         <Raises>
50845           <RaiseException name="WebAPIException">
50846             <descriptive>
50847                 <description><p>
50848  with error type UnknownError, if the call failed due to an unknown error.
50849                 </p></description>
50850             </descriptive>
50851           </RaiseException>
50852         </Raises>
50853       </Operation>
50854       <Operation name="getLocalTimezone" id="::Time::TimeUtil::getLocalTimezone">
50855         <webidl>    DOMString getLocalTimezone() raises(<ref>WebAPIException</ref>);</webidl>
50856         <descriptive>
50857             <brief>
50858  Returns identifier of the local system timezone.
50859             </brief>
50860             <version>
50861  1.0
50862             </version>
50863             <Code> console.log(&quot;The local time zone is &quot; + tizen.time.getLocalTimezone());
50864  </Code>
50865         </descriptive>
50866         <Type type="DOMString">
50867           <descriptive>
50868               <description><p>
50869  Timezone Local timezone.
50870               </p></description>
50871           </descriptive>
50872         </Type>
50873         <ArgumentList/>
50874         <Raises>
50875           <RaiseException name="WebAPIException">
50876             <descriptive>
50877                 <description><p>
50878  with error type UnknownError, if the call failed due to an unknown error.
50879                 </p></description>
50880             </descriptive>
50881           </RaiseException>
50882         </Raises>
50883       </Operation>
50884       <Operation name="getAvailableTimezones" id="::Time::TimeUtil::getAvailableTimezones">
50885         <webidl>    DOMString[] getAvailableTimezones() raises(<ref>WebAPIException</ref>);</webidl>
50886         <descriptive>
50887             <brief>
50888  Returns synchronously the identifiers of the timezones supported by the device.
50889             </brief>
50890            <description>
50891             <p>
50892 Zero or more slashes separate different components of a timezone identifier,
50893 with the most general descriptor first and the most specific one last. For example,
50894 'Europe/Berlin', 'America/Argentina/Buenos_Aires'.
50895             </p>
50896            </description>
50897             <version>
50898  1.0
50899             </version>
50900             <Code> var tzids = tizen.time.getAvailableTimezones();
50901  console.log(&quot;The device supports &quot; + tzids.length + &quot; time zones.&quot;);
50902  </Code>
50903         </descriptive>
50904         <Type type="array">
50905           <descriptive>
50906               <description><p>
50907  Array of time zone identifiers.
50908               </p></description>
50909           </descriptive>
50910           <Type type="DOMString"/>
50911         </Type>
50912         <ArgumentList/>
50913         <Raises>
50914           <RaiseException name="WebAPIException">
50915             <descriptive>
50916                 <description><p>
50917  with error type UnknownError, if the call failed due to an unknown error.
50918                 </p></description>
50919             </descriptive>
50920           </RaiseException>
50921         </Raises>
50922       </Operation>
50923       <Operation name="getDateFormat" id="::Time::TimeUtil::getDateFormat">
50924         <webidl>    DOMString getDateFormat(optional boolean? shortformat) raises(<ref>WebAPIException</ref>);</webidl>
50925         <descriptive>
50926            <description>
50927             <p>
50928 Returns the date format according to the system's locale settings.
50929             </p>
50930             <p>
50931 These expressions may be used in the returned string:
50932             </p>
50933             <ul>
50934               <li>
50935 &quot;d&quot; = day number (1 to 31)              </li>
50936               <li>
50937 &quot;D&quot; = day name              </li>
50938               <li>
50939 &quot;m&quot; = month number (1 to 12)              </li>
50940               <li>
50941 &quot;M&quot; = month name              </li>
50942               <li>
50943 &quot;y&quot; = year              </li>
50944             </ul>
50945             <p>
50946 Examples of string formats include: &quot;d/m/y&quot;, &quot;y-d-m&quot;, &quot;D, M d y&quot;.
50947             </p>
50948            </description>
50949             <version>
50950  1.0
50951             </version>
50952         </descriptive>
50953         <Type type="DOMString">
50954           <descriptive>
50955               <description><p>
50956  DOMString The date format according to the system's locale settings.
50957               </p></description>
50958           </descriptive>
50959         </Type>
50960         <ArgumentList>
50961           <Argument optional="optional" name="shortformat">
50962             <descriptive>
50963                 <description><p>
50964  Flag indicating if the user is interested in the short
50965 date format (23/10/2011) instead of a long date format (&quot;Monday, October 23 2011&quot;).
50966 By default, this attribute is set to false.
50967                 </p></description>
50968             </descriptive>
50969             <Type type="boolean" nullable="nullable"/>
50970           </Argument>
50971         </ArgumentList>
50972         <Raises>
50973           <RaiseException name="WebAPIException">
50974             <descriptive>
50975                 <description><p>
50976  with error type UnknownError, if the call failed due to an unknown error.
50977                 </p></description>
50978             </descriptive>
50979           </RaiseException>
50980         </Raises>
50981       </Operation>
50982       <Operation name="getTimeFormat" id="::Time::TimeUtil::getTimeFormat">
50983         <webidl>    DOMString getTimeFormat() raises(<ref>WebAPIException</ref>);</webidl>
50984         <descriptive>
50985            <description>
50986             <p>
50987 Returns the time format according to the system's locale settings.
50988             </p>
50989             <p>
50990 These expressions may be used in the returned string:
50991             </p>
50992             <ul>
50993               <li>
50994 &quot;h&quot; = hours (0 to 23 or 1 to 12 if AM/PM display)              </li>
50995               <li>
50996 &quot;m&quot; = minutes (0 to 59)              </li>
50997               <li>
50998 &quot;s&quot; = seconds (0 to 59)              </li>
50999               <li>
51000 &quot;ap&quot; = AM/PM display              </li>
51001             </ul>
51002             <p>
51003 Examples of string formats include: &quot;h:m:s ap&quot;, &quot;h:m:s&quot;.
51004             </p>
51005            </description>
51006             <version>
51007  1.0
51008             </version>
51009         </descriptive>
51010         <Type type="DOMString">
51011           <descriptive>
51012               <description><p>
51013  DOMString The time format according to the system's locale settings.
51014               </p></description>
51015           </descriptive>
51016         </Type>
51017         <ArgumentList/>
51018         <Raises>
51019           <RaiseException name="WebAPIException">
51020             <descriptive>
51021                 <description><p>
51022  with error type UnknownError, if the call failed due to an unknown error.
51023                 </p></description>
51024             </descriptive>
51025           </RaiseException>
51026         </Raises>
51027       </Operation>
51028       <Operation name="isLeapYear" id="::Time::TimeUtil::isLeapYear">
51029         <webidl>    boolean isLeapYear(long year) raises(<ref>WebAPIException</ref>);</webidl>
51030         <descriptive>
51031             <brief>
51032  Returns <em>true</em> if the given year is a leap year.
51033             </brief>
51034             <version>
51035  1.0
51036             </version>
51037             <Code> var current_dt = tizen.time.getCurrentDateTime();
51038  var is_leap = tizen.time.isLeapYear(current_dt.getFullYear());
51039  if (is_leap)
51040    console.log(&quot;This year is a leap year.&quot;);
51041  </Code>
51042         </descriptive>
51043         <Type type="boolean">
51044           <descriptive>
51045               <description><p>
51046  boolean <em>true</em>, if the year is a leap year.
51047               </p></description>
51048           </descriptive>
51049         </Type>
51050         <ArgumentList>
51051           <Argument name="year">
51052             <descriptive>
51053                 <description><p>
51054  Year to check.
51055                 </p></description>
51056             </descriptive>
51057             <Type type="long"/>
51058           </Argument>
51059         </ArgumentList>
51060         <Raises>
51061           <RaiseException name="WebAPIException">
51062             <descriptive>
51063                 <description><p>
51064  with error type TypeMismatchError, if the input parameter
51065 is not compatible with the expected type for that parameter.
51066                 </p></description>
51067                 <description><p>
51068  with error type InvalidValuesError, if any of the input 
51069 parameters contain an invalid value.    
51070                 </p></description>
51071                 <description><p>
51072  with error type UnknownError, if the call failed due to an unknown error.
51073                 </p></description>
51074             </descriptive>
51075           </RaiseException>
51076         </Raises>
51077       </Operation>
51078     </Interface>
51079     <Interface name="TZDate" id="::Time::TZDate">
51080       <webidl>  [Constructor(optional Date? datetime, optional DOMString? timezone),
51081    Constructor(long year, long month, long day, optional long? hours, optional long? minutes, optional long? seconds, optional long? milliseconds, optional DOMString? timezone)]
51082
51083   interface TZDate {
51084     long getDate();
51085     
51086     void setDate(long date);
51087     
51088     long getDay();
51089     
51090     long getFullYear();
51091     
51092     void setFullYear(long year);
51093     
51094     long getHours();
51095     
51096     void setHours(long hours);
51097     
51098     long getMilliseconds();
51099     
51100     void setMilliseconds(long ms);
51101     
51102     long getMinutes();
51103     
51104     void setMinutes(long minutes);
51105     
51106     long getMonth();
51107     
51108     void setMonth(long month);
51109     
51110     long getSeconds();
51111     
51112     void setSeconds(long seconds);
51113     
51114     long getUTCDate();
51115     
51116     void setUTCDate(long date);
51117     
51118     long getUTCDay();
51119     
51120     long getUTCFullYear();
51121     
51122     void setUTCFullYear(long year);
51123     
51124     long getUTCHours();
51125     
51126     void setUTCHours(long hours);
51127     
51128     long getUTCMilliseconds();
51129     
51130     void setUTCMilliseconds(long ms);
51131     
51132     long getUTCMinutes();
51133     
51134     void setUTCMinutes(long minutes);
51135     
51136     long getUTCMonth();
51137     
51138     void setUTCMonth(long month);
51139     
51140     long getUTCSeconds();
51141     
51142     void setUTCSeconds(long seconds);
51143     
51144     DOMString getTimezone();
51145     
51146     <ref>TZDate</ref> toTimezone(DOMString tzid) raises(<ref>WebAPIException</ref>);
51147     
51148     <ref>TZDate</ref> toLocalTimezone() raises(<ref>WebAPIException</ref>);
51149     
51150     <ref>TZDate</ref> toUTC() raises(<ref>WebAPIException</ref>);
51151     
51152     <ref>TimeDuration</ref> difference(<ref>TZDate</ref> other) raises(<ref>WebAPIException</ref>);
51153
51154     boolean equalsTo(<ref>TZDate</ref> other) raises(<ref>WebAPIException</ref>);
51155     
51156     boolean earlierThan(<ref>TZDate</ref> other) raises(<ref>WebAPIException</ref>);
51157     
51158     boolean laterThan(<ref>TZDate</ref> other) raises(<ref>WebAPIException</ref>);
51159     
51160     <ref>TZDate</ref> addDuration(<ref>TimeDuration</ref> duration) raises(<ref>WebAPIException</ref>);
51161     
51162     DOMString toLocaleDateString();
51163     
51164     DOMString toLocaleTimeString();
51165     
51166     DOMString toLocaleString();
51167     
51168     DOMString toDateString();
51169     
51170     DOMString toTimeString();
51171     
51172     DOMString toString();
51173     
51174     DOMString getTimezoneAbbreviation() raises(<ref>WebAPIException</ref>);
51175     
51176     long secondsFromUTC() raises(<ref>WebAPIException</ref>);
51177     
51178     boolean isDST() raises(<ref>WebAPIException</ref>);
51179     
51180     <ref>TZDate</ref>? getPreviousDSTTransition() raises(<ref>WebAPIException</ref>);
51181     
51182     <ref>TZDate</ref>? getNextDSTTransition() raises(<ref>WebAPIException</ref>);
51183   };</webidl>
51184       <descriptive>
51185           <brief>
51186  The TZDate object represents information regarding a given
51187 date / time in a predefined timezone.
51188 If its date / time is exceed the platform limit, TZDate will be invalid.
51189           </brief>
51190           <version>
51191  1.0
51192           </version>
51193       </descriptive>
51194       <ExtendedAttributeList>
51195         <ExtendedAttribute name="Constructor">
51196           <webidl>Constructor(optional Date? datetime, optional DOMString? timezone)</webidl>
51197           <ArgumentList>
51198             <Argument optional="optional" name="datetime">
51199               <Type type="Date" nullable="nullable"/>
51200             </Argument>
51201             <Argument optional="optional" name="timezone">
51202               <Type type="DOMString" nullable="nullable"/>
51203             </Argument>
51204           </ArgumentList>
51205         </ExtendedAttribute>
51206         <ExtendedAttribute name="Constructor">
51207           <webidl>   Constructor(long year, long month, long day, optional long? hours, optional long? minutes, optional long? seconds, optional long? milliseconds, optional DOMString? timezone)</webidl>
51208           <descriptive>
51209              <description>
51210               <ul>
51211                 <li>
51212 <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>
51213               </ul>
51214              </description>
51215           </descriptive>
51216           <ArgumentList>
51217             <Argument name="year">
51218               <Type type="long"/>
51219             </Argument>
51220             <Argument name="month">
51221               <Type type="long"/>
51222             </Argument>
51223             <Argument name="day">
51224               <Type type="long"/>
51225             </Argument>
51226             <Argument optional="optional" name="hours">
51227               <Type type="long" nullable="nullable"/>
51228             </Argument>
51229             <Argument optional="optional" name="minutes">
51230               <Type type="long" nullable="nullable"/>
51231             </Argument>
51232             <Argument optional="optional" name="seconds">
51233               <Type type="long" nullable="nullable"/>
51234             </Argument>
51235             <Argument optional="optional" name="milliseconds">
51236               <Type type="long" nullable="nullable"/>
51237             </Argument>
51238             <Argument optional="optional" name="timezone">
51239               <Type type="DOMString" nullable="nullable"/>
51240             </Argument>
51241           </ArgumentList>
51242         </ExtendedAttribute>
51243       </ExtendedAttributeList>
51244       <Operation name="getDate" id="::Time::TZDate::getDate">
51245         <webidl>    long getDate();</webidl>
51246         <descriptive>
51247             <brief>
51248  Returns the day of the month (from 1-31).
51249             </brief>
51250             <version>
51251  1.0
51252             </version>
51253         </descriptive>
51254         <Type type="long">
51255           <descriptive>
51256               <description><p>
51257  long The day of the month.
51258               </p></description>
51259           </descriptive>
51260         </Type>
51261         <ArgumentList/>
51262       </Operation>
51263       <Operation name="setDate" id="::Time::TZDate::setDate">
51264         <webidl>    void setDate(long date);</webidl>
51265         <descriptive>
51266             <brief>
51267  Sets the day of the month (from 1-31).
51268             </brief>
51269            <description>
51270             <p>
51271 If it tries to set the day bigger than the last day of the month or smaller than 1, it will be calculated automatically.
51272 For example, if TZDate's month is May and parameter is 32, it will be June 1.
51273             </p>
51274            </description>
51275             <version>
51276  1.0
51277             </version>
51278         </descriptive>
51279         <Type type="void"/>
51280         <ArgumentList>
51281           <Argument name="date">
51282             <descriptive>
51283                 <description><p>
51284  Date to set.
51285                 </p></description>
51286             </descriptive>
51287             <Type type="long"/>
51288           </Argument>
51289         </ArgumentList>
51290       </Operation>
51291       <Operation name="getDay" id="::Time::TZDate::getDay">
51292         <webidl>    long getDay();</webidl>
51293         <descriptive>
51294             <brief>
51295  Returns the day of the week (from 0-6).
51296             </brief>
51297             <version>
51298  1.0
51299             </version>
51300         </descriptive>
51301         <Type type="long">
51302           <descriptive>
51303               <description><p>
51304  long The day of the week.
51305               </p></description>
51306           </descriptive>
51307         </Type>
51308         <ArgumentList/>
51309       </Operation>
51310       <Operation name="getFullYear" id="::Time::TZDate::getFullYear">
51311         <webidl>    long getFullYear();</webidl>
51312         <descriptive>
51313             <brief>
51314  Returns the year.
51315             </brief>
51316            <description>
51317             <p>
51318 Positive values indicate AD(Anno Domini) years. 0 and negative values indicate BC(Before Christ) years.
51319 For example, 1 = AD 1, 0 = BC 1, -1 = BC 2.
51320             </p>
51321            </description>
51322             <version>
51323  1.0
51324             </version>
51325         </descriptive>
51326         <Type type="long">
51327           <descriptive>
51328               <description><p>
51329  long The year.
51330               </p></description>
51331           </descriptive>
51332         </Type>
51333         <ArgumentList/>
51334       </Operation>
51335       <Operation name="setFullYear" id="::Time::TZDate::setFullYear">
51336         <webidl>    void setFullYear(long year);</webidl>
51337         <descriptive>
51338             <brief>
51339  Sets the year.
51340             </brief>
51341             <version>
51342  1.0
51343             </version>
51344         </descriptive>
51345         <Type type="void"/>
51346         <ArgumentList>
51347           <Argument name="year">
51348             <descriptive>
51349                 <description><p>
51350  Year to set.
51351                 </p></description>
51352             </descriptive>
51353             <Type type="long"/>
51354           </Argument>
51355         </ArgumentList>
51356       </Operation>
51357       <Operation name="getHours" id="::Time::TZDate::getHours">
51358         <webidl>    long getHours();</webidl>
51359         <descriptive>
51360             <brief>
51361  Returns the hour (0-23).
51362             </brief>
51363             <version>
51364  1.0
51365             </version>
51366         </descriptive>
51367         <Type type="long">
51368           <descriptive>
51369               <description><p>
51370  long The hour.
51371               </p></description>
51372           </descriptive>
51373         </Type>
51374         <ArgumentList/>
51375       </Operation>
51376       <Operation name="setHours" id="::Time::TZDate::setHours">
51377         <webidl>    void setHours(long hours);</webidl>
51378         <descriptive>
51379             <brief>
51380  Sets the hour (0-23).
51381             </brief>
51382            <description>
51383             <p>
51384 If it tries to set the hour bigger than 23 or smaller than 0, it will be calculated automatically.
51385 For example, if hours is 24, it will set 0 and add to a date.
51386             </p>
51387            </description>
51388             <version>
51389  1.0
51390             </version>
51391         </descriptive>
51392         <Type type="void"/>
51393         <ArgumentList>
51394           <Argument name="hours">
51395             <descriptive>
51396                 <description><p>
51397  Hours to set.
51398                 </p></description>
51399             </descriptive>
51400             <Type type="long"/>
51401           </Argument>
51402         </ArgumentList>
51403       </Operation>
51404       <Operation name="getMilliseconds" id="::Time::TZDate::getMilliseconds">
51405         <webidl>    long getMilliseconds();</webidl>
51406         <descriptive>
51407             <brief>
51408  Returns the milliseconds (from 0-999).
51409             </brief>
51410             <version>
51411  1.0
51412             </version>
51413         </descriptive>
51414         <Type type="long">
51415           <descriptive>
51416               <description><p>
51417  long The milliseconds.
51418               </p></description>
51419           </descriptive>
51420         </Type>
51421         <ArgumentList/>
51422       </Operation>
51423       <Operation name="setMilliseconds" id="::Time::TZDate::setMilliseconds">
51424         <webidl>    void setMilliseconds(long ms);</webidl>
51425         <descriptive>
51426             <brief>
51427  Sets the milliseconds (from 0-999).
51428             </brief>
51429            <description>
51430             <p>
51431 If it tries to set the millisecond bigger than 999 or smaller than 0, it will be calculated automatically.
51432 For example, if ms is 1000, it will set 0 and add to a second.
51433             </p>
51434            </description>
51435             <version>
51436  1.0
51437             </version>
51438         </descriptive>
51439         <Type type="void"/>
51440         <ArgumentList>
51441           <Argument name="ms">
51442             <descriptive>
51443                 <description><p>
51444  Milliseconds to set.
51445                 </p></description>
51446             </descriptive>
51447             <Type type="long"/>
51448           </Argument>
51449         </ArgumentList>
51450       </Operation>
51451       <Operation name="getMinutes" id="::Time::TZDate::getMinutes">
51452         <webidl>    long getMinutes();</webidl>
51453         <descriptive>
51454             <brief>
51455  Returns the minutes (from 0-59).
51456             </brief>
51457             <version>
51458  1.0
51459             </version>
51460         </descriptive>
51461         <Type type="long">
51462           <descriptive>
51463               <description><p>
51464  long The minutes.
51465               </p></description>
51466           </descriptive>
51467         </Type>
51468         <ArgumentList/>
51469       </Operation>
51470       <Operation name="setMinutes" id="::Time::TZDate::setMinutes">
51471         <webidl>    void setMinutes(long minutes);</webidl>
51472         <descriptive>
51473             <brief>
51474  Sets the minutes.
51475             </brief>
51476            <description>
51477             <p>
51478 If it tries to set the minute bigger than 59 or smaller than 0, it will be calculated automatically.
51479 For example, if minutes is 60, it will set 0 and add to an hour.
51480             </p>
51481            </description>
51482             <version>
51483  1.0
51484             </version>
51485         </descriptive>
51486         <Type type="void"/>
51487         <ArgumentList>
51488           <Argument name="minutes">
51489             <descriptive>
51490                 <description><p>
51491  Minutes to set.
51492                 </p></description>
51493             </descriptive>
51494             <Type type="long"/>
51495           </Argument>
51496         </ArgumentList>
51497       </Operation>
51498       <Operation name="getMonth" id="::Time::TZDate::getMonth">
51499         <webidl>    long getMonth();</webidl>
51500         <descriptive>
51501             <brief>
51502  Returns the month (from 0-11).
51503             </brief>
51504             <version>
51505  1.0
51506             </version>
51507         </descriptive>
51508         <Type type="long">
51509           <descriptive>
51510               <description><p>
51511  long The month.
51512               </p></description>
51513           </descriptive>
51514         </Type>
51515         <ArgumentList/>
51516       </Operation>
51517       <Operation name="setMonth" id="::Time::TZDate::setMonth">
51518         <webidl>    void setMonth(long month);</webidl>
51519         <descriptive>
51520             <brief>
51521  Sets the month (from 0-11).
51522             </brief>
51523            <description>
51524             <p>
51525 If it tries to set the month bigger than 11 or smaller than 0, it will be calculated automatically.
51526 For example, if month is 12, it will set 0 and add to a year.
51527             </p>
51528            </description>
51529             <version>
51530  1.0
51531             </version>
51532         </descriptive>
51533         <Type type="void"/>
51534         <ArgumentList>
51535           <Argument name="month">
51536             <descriptive>
51537                 <description><p>
51538  Month to set.
51539                 </p></description>
51540             </descriptive>
51541             <Type type="long"/>
51542           </Argument>
51543         </ArgumentList>
51544       </Operation>
51545       <Operation name="getSeconds" id="::Time::TZDate::getSeconds">
51546         <webidl>    long getSeconds();</webidl>
51547         <descriptive>
51548             <brief>
51549  Returns the seconds (from 0-59).
51550             </brief>
51551             <version>
51552  1.0
51553             </version>
51554         </descriptive>
51555         <Type type="long">
51556           <descriptive>
51557               <description><p>
51558  long The seconds.
51559               </p></description>
51560           </descriptive>
51561         </Type>
51562         <ArgumentList/>
51563       </Operation>
51564       <Operation name="setSeconds" id="::Time::TZDate::setSeconds">
51565         <webidl>    void setSeconds(long seconds);</webidl>
51566         <descriptive>
51567             <brief>
51568  Sets the seconds (from 0-59).
51569             </brief>
51570            <description>
51571             <p>
51572 If it tries to set the second bigger than 59 or smaller than 0, it will be calculated automatically.
51573 For example, if seconds is 60, it will set 0 and add to a minute.
51574             </p>
51575            </description>
51576             <version>
51577  1.0
51578             </version>
51579         </descriptive>
51580         <Type type="void"/>
51581         <ArgumentList>
51582           <Argument name="seconds">
51583             <descriptive>
51584                 <description><p>
51585  Seconds to set.
51586                 </p></description>
51587             </descriptive>
51588             <Type type="long"/>
51589           </Argument>
51590         </ArgumentList>
51591       </Operation>
51592       <Operation name="getUTCDate" id="::Time::TZDate::getUTCDate">
51593         <webidl>    long getUTCDate();</webidl>
51594         <descriptive>
51595             <brief>
51596  Returns the day of the month, according to universal time (from 1-31).
51597             </brief>
51598             <version>
51599  1.0
51600             </version>
51601         </descriptive>
51602         <Type type="long">
51603           <descriptive>
51604               <description><p>
51605  long The day of the month, according to universal time.
51606               </p></description>
51607           </descriptive>
51608         </Type>
51609         <ArgumentList/>
51610       </Operation>
51611       <Operation name="setUTCDate" id="::Time::TZDate::setUTCDate">
51612         <webidl>    void setUTCDate(long date);</webidl>
51613         <descriptive>
51614             <brief>
51615  Sets the day of the month, according to universal time (from 1-31).
51616             </brief>
51617            <description>
51618             <p>
51619 If it tries to set the day bigger than the last day of the month or smaller than 1, it will be calculated automatically.
51620 For example, if TZDate's month is May and date is 32, it will be June 1.
51621             </p>
51622            </description>
51623             <version>
51624  1.0
51625             </version>
51626         </descriptive>
51627         <Type type="void"/>
51628         <ArgumentList>
51629           <Argument name="date">
51630             <descriptive>
51631                 <description><p>
51632  Date to set.
51633                 </p></description>
51634             </descriptive>
51635             <Type type="long"/>
51636           </Argument>
51637         </ArgumentList>
51638       </Operation>
51639       <Operation name="getUTCDay" id="::Time::TZDate::getUTCDay">
51640         <webidl>    long getUTCDay();</webidl>
51641         <descriptive>
51642             <brief>
51643  Returns the day of the week, according to universal time (from 0-6).
51644             </brief>
51645             <version>
51646  1.0
51647             </version>
51648         </descriptive>
51649         <Type type="long">
51650           <descriptive>
51651               <description><p>
51652  long The day of the week, according to universal time.
51653               </p></description>
51654           </descriptive>
51655         </Type>
51656         <ArgumentList/>
51657       </Operation>
51658       <Operation name="getUTCFullYear" id="::Time::TZDate::getUTCFullYear">
51659         <webidl>    long getUTCFullYear();</webidl>
51660         <descriptive>
51661             <brief>
51662  Returns the year, according to universal time.
51663             </brief>
51664            <description>
51665             <p>
51666 Positive values indicate AD(Anno Domini) years. 0 and negative values indicate BC(Before Christ) years.
51667 For example, 1 = AD 1, 0 = BC 1, -1 = BC 2.
51668             </p>
51669            </description>
51670             <version>
51671  1.0
51672             </version>
51673         </descriptive>
51674         <Type type="long">
51675           <descriptive>
51676               <description><p>
51677  long The year, according to universal time.
51678               </p></description>
51679           </descriptive>
51680         </Type>
51681         <ArgumentList/>
51682       </Operation>
51683       <Operation name="setUTCFullYear" id="::Time::TZDate::setUTCFullYear">
51684         <webidl>    void setUTCFullYear(long year);</webidl>
51685         <descriptive>
51686             <brief>
51687  Sets the year, according to universal time.
51688             </brief>
51689             <version>
51690  1.0
51691             </version>
51692         </descriptive>
51693         <Type type="void"/>
51694         <ArgumentList>
51695           <Argument name="year">
51696             <descriptive>
51697                 <description><p>
51698  Year to set.
51699                 </p></description>
51700             </descriptive>
51701             <Type type="long"/>
51702           </Argument>
51703         </ArgumentList>
51704       </Operation>
51705       <Operation name="getUTCHours" id="::Time::TZDate::getUTCHours">
51706         <webidl>    long getUTCHours();</webidl>
51707         <descriptive>
51708             <brief>
51709  Returns the hour, according to universal time (0-23).
51710             </brief>
51711             <version>
51712  1.0
51713             </version>
51714         </descriptive>
51715         <Type type="long">
51716           <descriptive>
51717               <description><p>
51718  long The hour, according to universal time.
51719               </p></description>
51720           </descriptive>
51721         </Type>
51722         <ArgumentList/>
51723       </Operation>
51724       <Operation name="setUTCHours" id="::Time::TZDate::setUTCHours">
51725         <webidl>    void setUTCHours(long hours);</webidl>
51726         <descriptive>
51727             <brief>
51728  Sets the hour, according to universal time (0-23).
51729             </brief>
51730            <description>
51731             <p>
51732 If it tries to set the hour bigger than 23 or smaller than 0, it will be calculated automatically.
51733 For example, if hours is 24, it will set 0 and add to a date.
51734             </p>
51735            </description>
51736             <version>
51737  1.0
51738             </version>
51739         </descriptive>
51740         <Type type="void"/>
51741         <ArgumentList>
51742           <Argument name="hours">
51743             <descriptive>
51744                 <description><p>
51745  Hours to set.
51746                 </p></description>
51747             </descriptive>
51748             <Type type="long"/>
51749           </Argument>
51750         </ArgumentList>
51751       </Operation>
51752       <Operation name="getUTCMilliseconds" id="::Time::TZDate::getUTCMilliseconds">
51753         <webidl>    long getUTCMilliseconds();</webidl>
51754         <descriptive>
51755             <brief>
51756  Returns the milliseconds, according to universal time (from 0-999).
51757             </brief>
51758             <version>
51759  1.0
51760             </version>
51761         </descriptive>
51762         <Type type="long">
51763           <descriptive>
51764               <description><p>
51765  long The milliseconds, according to universal time.
51766               </p></description>
51767           </descriptive>
51768         </Type>
51769         <ArgumentList/>
51770       </Operation>
51771       <Operation name="setUTCMilliseconds" id="::Time::TZDate::setUTCMilliseconds">
51772         <webidl>    void setUTCMilliseconds(long ms);</webidl>
51773         <descriptive>
51774             <brief>
51775  Sets the milliseconds, according to universal time (from 0-999).
51776             </brief>
51777            <description>
51778             <p>
51779 If it tries to set the millisecond bigger than 999 or smaller than 0, it will be calculated automatically.
51780 For example, if ms is 1000, it will set 0 and add to a second.
51781             </p>
51782            </description>
51783             <version>
51784  1.0
51785             </version>
51786         </descriptive>
51787         <Type type="void"/>
51788         <ArgumentList>
51789           <Argument name="ms">
51790             <descriptive>
51791                 <description><p>
51792  Milliseconds to set.
51793                 </p></description>
51794             </descriptive>
51795             <Type type="long"/>
51796           </Argument>
51797         </ArgumentList>
51798       </Operation>
51799       <Operation name="getUTCMinutes" id="::Time::TZDate::getUTCMinutes">
51800         <webidl>    long getUTCMinutes();</webidl>
51801         <descriptive>
51802             <brief>
51803  Returns the minutes, according to universal time (from 0-59).
51804             </brief>
51805             <version>
51806  1.0
51807             </version>
51808         </descriptive>
51809         <Type type="long">
51810           <descriptive>
51811               <description><p>
51812  long The minutes, according to universal time.
51813               </p></description>
51814           </descriptive>
51815         </Type>
51816         <ArgumentList/>
51817       </Operation>
51818       <Operation name="setUTCMinutes" id="::Time::TZDate::setUTCMinutes">
51819         <webidl>    void setUTCMinutes(long minutes);</webidl>
51820         <descriptive>
51821             <brief>
51822  Sets the minutes, according to universal time (from 0-59).
51823             </brief>
51824            <description>
51825             <p>
51826 If it tries to set the minute bigger than 59 or smaller than 0, it will be calculated automatically.
51827 For example, if minutes is 60, it will set 0 and add to an hour.
51828             </p>
51829            </description>
51830             <version>
51831  1.0
51832             </version>
51833         </descriptive>
51834         <Type type="void"/>
51835         <ArgumentList>
51836           <Argument name="minutes">
51837             <descriptive>
51838                 <description><p>
51839  Minutes to set.
51840                 </p></description>
51841             </descriptive>
51842             <Type type="long"/>
51843           </Argument>
51844         </ArgumentList>
51845       </Operation>
51846       <Operation name="getUTCMonth" id="::Time::TZDate::getUTCMonth">
51847         <webidl>    long getUTCMonth();</webidl>
51848         <descriptive>
51849             <brief>
51850  Returns the month, according to universal time (from 0-11).
51851             </brief>
51852             <version>
51853  1.0
51854             </version>
51855         </descriptive>
51856         <Type type="long">
51857           <descriptive>
51858               <description><p>
51859  long The month, according to universal time.
51860               </p></description>
51861           </descriptive>
51862         </Type>
51863         <ArgumentList/>
51864       </Operation>
51865       <Operation name="setUTCMonth" id="::Time::TZDate::setUTCMonth">
51866         <webidl>    void setUTCMonth(long month);</webidl>
51867         <descriptive>
51868             <brief>
51869  Sets the month, according to universal time (from 0-11).
51870             </brief>
51871            <description>
51872             <p>
51873 If it tries to set the month bigger than 11 or smaller than 0, it will be calculated automatically.
51874 For example, if month is 12, it will set 0 and add to a year.
51875             </p>
51876            </description>
51877             <version>
51878  1.0
51879             </version>
51880         </descriptive>
51881         <Type type="void"/>
51882         <ArgumentList>
51883           <Argument name="month">
51884             <descriptive>
51885                 <description><p>
51886  Month to set.
51887                 </p></description>
51888             </descriptive>
51889             <Type type="long"/>
51890           </Argument>
51891         </ArgumentList>
51892       </Operation>
51893       <Operation name="getUTCSeconds" id="::Time::TZDate::getUTCSeconds">
51894         <webidl>    long getUTCSeconds();</webidl>
51895         <descriptive>
51896             <brief>
51897  Returns the seconds, according to universal time (from 0-59).
51898             </brief>
51899             <version>
51900  1.0
51901             </version>
51902         </descriptive>
51903         <Type type="long">
51904           <descriptive>
51905               <description><p>
51906  long The seconds, according to universal time.
51907               </p></description>
51908           </descriptive>
51909         </Type>
51910         <ArgumentList/>
51911       </Operation>
51912       <Operation name="setUTCSeconds" id="::Time::TZDate::setUTCSeconds">
51913         <webidl>    void setUTCSeconds(long seconds);</webidl>
51914         <descriptive>
51915             <brief>
51916  Sets the seconds, according to universal time (from 0-59).
51917             </brief>
51918            <description>
51919             <p>
51920 If it tries to set the second bigger than 59 or smaller than 0, it will be calculated automatically.
51921 For example, if seconds is 60, it will set 0 and add to a minute.
51922             </p>
51923            </description>
51924             <version>
51925  1.0
51926             </version>
51927         </descriptive>
51928         <Type type="void"/>
51929         <ArgumentList>
51930           <Argument name="seconds">
51931             <descriptive>
51932                 <description><p>
51933  Seconds to set.
51934                 </p></description>
51935             </descriptive>
51936             <Type type="long"/>
51937           </Argument>
51938         </ArgumentList>
51939       </Operation>
51940       <Operation name="getTimezone" id="::Time::TZDate::getTimezone">
51941         <webidl>    DOMString getTimezone();</webidl>
51942         <descriptive>
51943             <brief>
51944  Returns timezone identifier.
51945             </brief>
51946            <description>
51947             <p>
51948 Zero or more slashes separate different components, with the most general
51949 descriptor first and the most specific one last. For example,
51950 'Europe/Berlin', 'America/Argentina/Buenos_Aires'.
51951             </p>
51952             <p>
51953 This attribute uniquely identifies the timezone.
51954             </p>
51955            </description>
51956             <version>
51957  1.0
51958             </version>
51959         </descriptive>
51960         <Type type="DOMString">
51961           <descriptive>
51962               <description><p>
51963  DOMString String timezone identifier. If TZDate is invalid, it will return 'Invalid Date'.
51964               </p></description>
51965           </descriptive>
51966         </Type>
51967         <ArgumentList/>
51968       </Operation>
51969       <Operation name="toTimezone" id="::Time::TZDate::toTimezone">
51970         <webidl>    <ref>TZDate</ref> toTimezone(DOMString tzid) raises(<ref>WebAPIException</ref>);</webidl>
51971         <descriptive>
51972             <brief>
51973  Returns a copy of the TZDate converted to a given time zone.
51974             </brief>
51975             <version>
51976  1.0
51977             </version>
51978         </descriptive>
51979         <Type name="TZDate">
51980           <descriptive>
51981               <description><p>
51982  TZDate New TZDate in given Timezone. 
51983               </p></description>
51984           </descriptive>
51985         </Type>
51986         <ArgumentList>
51987           <Argument name="tzid">
51988             <descriptive>
51989                 <description><p>
51990  Timezone identifier to set.
51991                 </p></description>
51992             </descriptive>
51993             <Type type="DOMString"/>
51994           </Argument>
51995         </ArgumentList>
51996         <Raises>
51997           <RaiseException name="WebAPIException">
51998             <descriptive>
51999                 <description><p>
52000  with error type TypeMismatchError, if the input parameter
52001 is not compatible with the expected type for that parameter.
52002                 </p></description>
52003                 <description><p>
52004  with error type InvalidValuesError, if the provided TZID
52005 is not recognized as a valid timezone identifier.
52006                 </p></description>
52007                 <description><p>
52008  with error type UnknownError, if the call failed due to an unknown error.
52009                 </p></description>
52010             </descriptive>
52011           </RaiseException>
52012         </Raises>
52013       </Operation>
52014       <Operation name="toLocalTimezone" id="::Time::TZDate::toLocalTimezone">
52015         <webidl>    <ref>TZDate</ref> toLocalTimezone() raises(<ref>WebAPIException</ref>);</webidl>
52016         <descriptive>
52017             <brief>
52018  Returns a copy of the TZDate converted to the local time zone.
52019             </brief>
52020             <version>
52021  1.0
52022             </version>
52023         </descriptive>
52024         <Type name="TZDate">
52025           <descriptive>
52026               <description><p>
52027  TZDate The new TZDate in local Timezone. 
52028               </p></description>
52029           </descriptive>
52030         </Type>
52031         <ArgumentList/>
52032         <Raises>
52033           <RaiseException name="WebAPIException">
52034             <descriptive>
52035                 <description><p>
52036  with error type UnknownError, if the call failed due to an unknown error.
52037                 </p></description>
52038             </descriptive>
52039           </RaiseException>
52040         </Raises>
52041       </Operation>
52042       <Operation name="toUTC" id="::Time::TZDate::toUTC">
52043         <webidl>    <ref>TZDate</ref> toUTC() raises(<ref>WebAPIException</ref>);</webidl>
52044         <descriptive>
52045             <brief>
52046  Returns a copy of the TZDate converted to Coordinated Universal Time (UTC).
52047             </brief>
52048             <version>
52049  1.0
52050             </version>
52051         </descriptive>
52052         <Type name="TZDate">
52053           <descriptive>
52054               <description><p>
52055  TZDate Date/Time in UTC.
52056               </p></description>
52057           </descriptive>
52058         </Type>
52059         <ArgumentList/>
52060         <Raises>
52061           <RaiseException name="WebAPIException">
52062             <descriptive>
52063                 <description><p>
52064  with error type UnknownError, if the call failed due to an unknown error.
52065                 </p></description>
52066             </descriptive>
52067           </RaiseException>
52068         </Raises>
52069       </Operation>
52070       <Operation name="difference" id="::Time::TZDate::difference">
52071         <webidl>    <ref>TimeDuration</ref> difference(<ref>TZDate</ref> other) raises(<ref>WebAPIException</ref>);</webidl>
52072         <descriptive>
52073             <brief>
52074  Calculates the difference with another TZDate object.
52075             </brief>
52076            <description>
52077             <p>
52078 Calculates the difference in time between <em>this</em> and other.
52079 This comparison method takes timezones into consideration for the comparison.
52080             </p>
52081             <p>
52082 The TimeDuration that is returned is effectively <em>this</em> - other.
52083 The return value is a duration in milliseconds both TZDate objects have a time component, in days, otherwise.
52084 The result value will be:
52085             </p>
52086             <ul>
52087               <li>
52088 Negative, if other is in the future              </li>
52089               <li>
52090 0 if the two date / times are equal              </li>
52091               <li>
52092 Positive, if other is in the past              </li>
52093             </ul>
52094            </description>
52095             <version>
52096  1.0
52097             </version>
52098         </descriptive>
52099         <Type name="TimeDuration">
52100           <descriptive>
52101               <description><p>
52102  TimeDuration Duration in milliseconds between the two date / time objects
52103 (or in days for comparison between dates with no time component).
52104               </p></description>
52105           </descriptive>
52106         </Type>
52107         <ArgumentList>
52108           <Argument name="other">
52109             <descriptive>
52110                 <description><p>
52111  Other Date/Time to compare to.
52112                 </p></description>
52113             </descriptive>
52114             <Type name="TZDate"/>
52115           </Argument>
52116         </ArgumentList>
52117         <Raises>
52118           <RaiseException name="WebAPIException">
52119             <descriptive>
52120                 <description><p>
52121  with error type TypeMismatchError, if the input parameter
52122 is not compatible with the expected type for that parameter.
52123                 </p></description>
52124                 <description><p>
52125  with error type UnknownError, if the call failed due to an unknown error.
52126                 </p></description>
52127             </descriptive>
52128           </RaiseException>
52129         </Raises>
52130       </Operation>
52131       <Operation name="equalsTo" id="::Time::TZDate::equalsTo">
52132         <webidl>    boolean equalsTo(<ref>TZDate</ref> other) raises(<ref>WebAPIException</ref>);</webidl>
52133         <descriptive>
52134             <brief>
52135  Checks if the TZDate is equal to another.
52136             </brief>
52137            <description>
52138             <p>
52139 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.
52140             </p>
52141            </description>
52142             <version>
52143  1.0
52144             </version>
52145         </descriptive>
52146         <Type type="boolean">
52147           <descriptive>
52148               <description><p>
52149  boolean <em>true</em> if the 2 date/times are the same.
52150               </p></description>
52151           </descriptive>
52152         </Type>
52153         <ArgumentList>
52154           <Argument name="other">
52155             <descriptive>
52156                 <description><p>
52157  Other Date/Time to compare to.
52158                 </p></description>
52159             </descriptive>
52160             <Type name="TZDate"/>
52161           </Argument>
52162         </ArgumentList>
52163         <Raises>
52164           <RaiseException name="WebAPIException">
52165             <descriptive>
52166                 <description><p>
52167  with error type TypeMismatchError, if the input parameter
52168 is not compatible with the expected type for that parameter.
52169                 </p></description>
52170                 <description><p>
52171  with error type UnknownError, if the call failed due to an unknown error.
52172                 </p></description>
52173             </descriptive>
52174           </RaiseException>
52175         </Raises>
52176       </Operation>
52177       <Operation name="earlierThan" id="::Time::TZDate::earlierThan">
52178         <webidl>    boolean earlierThan(<ref>TZDate</ref> other) raises(<ref>WebAPIException</ref>);</webidl>
52179         <descriptive>
52180             <brief>
52181  Checks if the TZDate is earlier than another.
52182             </brief>
52183            <description>
52184             <p>
52185 This method takes the timezones into consideration.
52186             </p>
52187            </description>
52188             <version>
52189  1.0
52190             </version>
52191         </descriptive>
52192         <Type type="boolean">
52193           <descriptive>
52194               <description><p>
52195  boolean <em>true</em>, if the Date/Time is earlier than the one passed in argument.
52196               </p></description>
52197           </descriptive>
52198         </Type>
52199         <ArgumentList>
52200           <Argument name="other">
52201             <descriptive>
52202                 <description><p>
52203  Other Date/Time to compare to.
52204                 </p></description>
52205             </descriptive>
52206             <Type name="TZDate"/>
52207           </Argument>
52208         </ArgumentList>
52209         <Raises>
52210           <RaiseException name="WebAPIException">
52211             <descriptive>
52212                 <description><p>
52213  with error type TypeMismatchError, if the input parameter
52214 is not compatible with the expected type for that parameter.
52215                 </p></description>
52216                 <description><p>
52217  with error type UnknownError, if the call failed due to an unknown error.
52218                 </p></description>
52219             </descriptive>
52220           </RaiseException>
52221         </Raises>
52222       </Operation>
52223       <Operation name="laterThan" id="::Time::TZDate::laterThan">
52224         <webidl>    boolean laterThan(<ref>TZDate</ref> other) raises(<ref>WebAPIException</ref>);</webidl>
52225         <descriptive>
52226             <brief>
52227  Checks if the TZDate is later than another.
52228             </brief>
52229            <description>
52230             <p>
52231 This method takes the timezones into consideration.
52232             </p>
52233            </description>
52234             <version>
52235  1.0
52236             </version>
52237         </descriptive>
52238         <Type type="boolean">
52239           <descriptive>
52240               <description><p>
52241  boolean <em>true</em>, if the Date/Time is later than the one passed in argument.
52242               </p></description>
52243           </descriptive>
52244         </Type>
52245         <ArgumentList>
52246           <Argument name="other">
52247             <descriptive>
52248                 <description><p>
52249  Other Date/Time to compare to.
52250                 </p></description>
52251             </descriptive>
52252             <Type name="TZDate"/>
52253           </Argument>
52254         </ArgumentList>
52255         <Raises>
52256           <RaiseException name="WebAPIException">
52257             <descriptive>
52258                 <description><p>
52259  with error type TypeMismatchError, if the input parameter
52260 is not compatible with the expected type for that parameter.
52261                 </p></description>
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="addDuration" id="::Time::TZDate::addDuration">
52270         <webidl>    <ref>TZDate</ref> addDuration(<ref>TimeDuration</ref> duration) raises(<ref>WebAPIException</ref>);</webidl>
52271         <descriptive>
52272             <brief>
52273  Returns a new date by adding a duration to the current TZDate object.
52274             </brief>
52275            <description>
52276             <p>
52277 If the length of duration is negative, the new date / time will be
52278 earlier than it used to.
52279             </p>
52280             <p>
52281 Note that calling this method does not alter the current object.
52282             </p>
52283            </description>
52284             <version>
52285  1.0
52286             </version>
52287             <Code> var now = tizen.time.getCurrentDateTime();
52288  var in_one_week = now.addDuration(new tizen.TimeDuration(7, &quot;DAYS&quot;));
52289  </Code>
52290         </descriptive>
52291         <Type name="TZDate">
52292           <descriptive>
52293               <description><p>
52294  TZDate The new TZDate by adding a duration.
52295               </p></description>
52296           </descriptive>
52297         </Type>
52298         <ArgumentList>
52299           <Argument name="duration">
52300             <descriptive>
52301                 <description><p>
52302  TimeDuration to add.  
52303                 </p></description>
52304             </descriptive>
52305             <Type name="TimeDuration"/>
52306           </Argument>
52307         </ArgumentList>
52308         <Raises>
52309           <RaiseException name="WebAPIException">
52310             <descriptive>
52311                 <description><p>
52312  with error type TypeMismatchError, if the input parameter
52313 is not compatible with the expected type for that parameter. 
52314                 </p></description>
52315                 <description><p>
52316  with error type UnknownError, if the call failed due to an unknown error.
52317                 </p></description>
52318             </descriptive>
52319           </RaiseException>
52320         </Raises>
52321       </Operation>
52322       <Operation name="toLocaleDateString" id="::Time::TZDate::toLocaleDateString">
52323         <webidl>    DOMString toLocaleDateString();</webidl>
52324         <descriptive>
52325             <brief>
52326  Returns the date portion of a TZDate object as a string, using locale conventions.
52327             </brief>
52328             <version>
52329  1.0
52330             </version>
52331         </descriptive>
52332         <Type type="DOMString">
52333           <descriptive>
52334               <description><p>
52335  DOMString Date portion of the TZDate object as a string, using locale conventions. If TZDate is invalid, it will return 'Invalid Date'.
52336               </p></description>
52337           </descriptive>
52338         </Type>
52339         <ArgumentList/>
52340       </Operation>
52341       <Operation name="toLocaleTimeString" id="::Time::TZDate::toLocaleTimeString">
52342         <webidl>    DOMString toLocaleTimeString();</webidl>
52343         <descriptive>
52344             <brief>
52345  Returns the time portion of a TZDate object as a string, using locale conventions.
52346             </brief>
52347             <version>
52348  1.0
52349             </version>
52350         </descriptive>
52351         <Type type="DOMString">
52352           <descriptive>
52353               <description><p>
52354  DOMString Time portion of the TZDate object as a string, using locale conventions. If TZDate is invalid, it will return 'Invalid Date'.
52355               </p></description>
52356           </descriptive>
52357         </Type>
52358         <ArgumentList/>
52359       </Operation>
52360       <Operation name="toLocaleString" id="::Time::TZDate::toLocaleString">
52361         <webidl>    DOMString toLocaleString();</webidl>
52362         <descriptive>
52363             <brief>
52364  Converts a TZDate object to a string, using locale conventions.
52365             </brief>
52366             <version>
52367  1.0
52368             </version>
52369         </descriptive>
52370         <Type type="DOMString">
52371           <descriptive>
52372               <description><p>
52373  DOMString String representation of the TZDate object, using locale conventions. If TZDate is invalid, it will return 'Invalid Date'.
52374               </p></description>
52375           </descriptive>
52376         </Type>
52377         <ArgumentList/>
52378       </Operation>
52379       <Operation name="toDateString" id="::Time::TZDate::toDateString">
52380         <webidl>    DOMString toDateString();</webidl>
52381         <descriptive>
52382             <brief>
52383  Returns the date portion of a TZDate object as a string.
52384             </brief>
52385             <version>
52386  1.0
52387             </version>
52388         </descriptive>
52389         <Type type="DOMString">
52390           <descriptive>
52391               <description><p>
52392  DOMString Date portion of the TZDate object as a string. If TZDate is invalid, it will return 'Invalid Date'.
52393               </p></description>
52394           </descriptive>
52395         </Type>
52396         <ArgumentList/>
52397       </Operation>
52398       <Operation name="toTimeString" id="::Time::TZDate::toTimeString">
52399         <webidl>    DOMString toTimeString();</webidl>
52400         <descriptive>
52401             <brief>
52402  Returns the time portion of a TZDate object as a string.
52403             </brief>
52404             <version>
52405  1.0
52406             </version>
52407         </descriptive>
52408         <Type type="DOMString">
52409           <descriptive>
52410               <description><p>
52411  DOMString Time portion of the TZDate object as a string. If TZDate is invalid, it will return 'Invalid Date'.
52412               </p></description>
52413           </descriptive>
52414         </Type>
52415         <ArgumentList/>
52416       </Operation>
52417       <Operation name="toString" id="::Time::TZDate::toString">
52418         <webidl>    DOMString toString();</webidl>
52419         <descriptive>
52420             <brief>
52421  Converts a TZDate object to a string.
52422             </brief>
52423             <version>
52424  1.0
52425             </version>
52426         </descriptive>
52427         <Type type="DOMString">
52428           <descriptive>
52429               <description><p>
52430  DOMString String representation of the TZDate object. If TZDate is invalid, it will return 'Invalid Date'.
52431               </p></description>
52432           </descriptive>
52433         </Type>
52434         <ArgumentList/>
52435       </Operation>
52436       <Operation name="getTimezoneAbbreviation" id="::Time::TZDate::getTimezoneAbbreviation">
52437         <webidl>    DOMString getTimezoneAbbreviation() raises(<ref>WebAPIException</ref>);</webidl>
52438         <descriptive>
52439             <brief>
52440  Determines the time zone abbreviation to be used at a particular date in the time zone.
52441             </brief>
52442            <description>
52443             <p>
52444 For example, in Toronto this is currently &quot;EST&quot; during the winter months and &quot;EDT&quot; during the
52445 summer months when daylight savings time is in effect.
52446             </p>
52447            </description>
52448             <version>
52449  1.0
52450             </version>
52451             <deprecated>
52452  Some timezones return &quot;GMT[+-]hh:mm&quot;. It is inconsistent.
52453             </deprecated>
52454         </descriptive>
52455         <Type type="DOMString">
52456           <descriptive>
52457               <description><p>
52458  DOMString Abbreviation of the time zone (such as &quot;EST&quot;). If TZDate is invalid, it will return 'Invalid Date'.
52459               </p></description>
52460           </descriptive>
52461         </Type>
52462         <ArgumentList/>
52463         <Raises>
52464           <RaiseException name="WebAPIException">
52465             <descriptive>
52466                 <description><p>
52467  with error type UnknownError, if the call failed due to an unknown error.
52468                 </p></description>
52469             </descriptive>
52470           </RaiseException>
52471         </Raises>
52472       </Operation>
52473       <Operation name="secondsFromUTC" id="::Time::TZDate::secondsFromUTC">
52474         <webidl>    long secondsFromUTC() raises(<ref>WebAPIException</ref>);</webidl>
52475         <descriptive>
52476             <brief>
52477  Gets the number of seconds from Coordinated Universal Time (UTC) offset for the timezone.
52478             </brief>
52479            <description>
52480             <p>
52481 Returns the offset (in seconds) from UTC of the timezone, accounting for daylight
52482 savings if in effect in the timezone. For example, if time zone is GMT+8, it will return -32,400.
52483             </p>
52484            </description>
52485             <version>
52486  1.0
52487             </version>
52488             <Code> var offset = tizen.time.getCurrentDateTime().secondsFromUTC();
52489  var myDate = new Date();
52490  var exp_offset = myDate.getTimezoneOffset()*60;
52491  //offset is equals to exp_offset.
52492  </Code>
52493         </descriptive>
52494         <Type type="long">
52495           <descriptive>
52496               <description><p>
52497  long Offset from UTC in seconds.
52498               </p></description>
52499           </descriptive>
52500         </Type>
52501         <ArgumentList/>
52502         <Raises>
52503           <RaiseException name="WebAPIException">
52504             <descriptive>
52505                 <description><p>
52506  with error type UnknownError, if the call failed due to an unknown error.
52507                 </p></description>
52508             </descriptive>
52509           </RaiseException>
52510         </Raises>
52511       </Operation>
52512       <Operation name="isDST" id="::Time::TZDate::isDST">
52513         <webidl>    boolean isDST() raises(<ref>WebAPIException</ref>);</webidl>
52514         <descriptive>
52515             <brief>
52516  Indicates if Daylight Saving Time(DST) is active for this TZDate.
52517             </brief>
52518            <description>
52519             <p>
52520 Indicates if daylight savings are in effect for the time zone and instant
52521 identified by the TZDate object.
52522             </p>
52523            </description>
52524             <version>
52525  1.0
52526             </version>
52527         </descriptive>
52528         <Type type="boolean">
52529           <descriptive>
52530               <description><p>
52531  boolean Flag indicating if daylight saving are in effect.
52532               </p></description>
52533           </descriptive>
52534         </Type>
52535         <ArgumentList/>
52536         <Raises>
52537           <RaiseException name="WebAPIException">
52538             <descriptive>
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="getPreviousDSTTransition" id="::Time::TZDate::getPreviousDSTTransition">
52547         <webidl>    <ref>TZDate</ref>? getPreviousDSTTransition() raises(<ref>WebAPIException</ref>);</webidl>
52548         <descriptive>
52549             <brief>
52550  Returns the date of the previous daylight saving time transition for the timezone.
52551             </brief>
52552             <version>
52553  1.0
52554             </version>
52555         </descriptive>
52556         <Type name="TZDate" nullable="nullable">
52557           <descriptive>
52558               <description><p>
52559  TZDate The date of the previous daylight saving transition (before the instant identified by the TZDate).
52560               </p></description>
52561           </descriptive>
52562         </Type>
52563         <ArgumentList/>
52564         <Raises>
52565           <RaiseException name="WebAPIException">
52566             <descriptive>
52567                 <description><p>
52568  with error type UnknownError, if the call failed due to an unknown error.
52569                 </p></description>
52570             </descriptive>
52571           </RaiseException>
52572         </Raises>
52573       </Operation>
52574       <Operation name="getNextDSTTransition" id="::Time::TZDate::getNextDSTTransition">
52575         <webidl>    <ref>TZDate</ref>? getNextDSTTransition() raises(<ref>WebAPIException</ref>);</webidl>
52576         <descriptive>
52577             <brief>
52578  Returns the date of the next daylight saving time transition for the timezone.
52579             </brief>
52580             <version>
52581  1.0
52582             </version>
52583         </descriptive>
52584         <Type name="TZDate" nullable="nullable">
52585           <descriptive>
52586               <description><p>
52587  TZDate The date of the next daylight saving transition (after the instant identified by the TZDate).
52588               </p></description>
52589           </descriptive>
52590         </Type>
52591         <ArgumentList/>
52592         <Raises>
52593           <RaiseException name="WebAPIException">
52594             <descriptive>
52595                 <description><p>
52596  with error type UnknownError, if the call failed due to an unknown error.
52597                 </p></description>
52598             </descriptive>
52599           </RaiseException>
52600         </Raises>
52601       </Operation>
52602     </Interface>
52603     <Interface name="TimeDuration" id="::Time::TimeDuration">
52604       <webidl>  [Constructor(long long length, optional <ref>TimeDurationUnit</ref>? unit)]
52605   interface TimeDuration
52606   {   
52607     attribute long long length;
52608     
52609     attribute <ref>TimeDurationUnit</ref> unit;
52610     
52611     <ref>TimeDuration</ref> difference(<ref>TimeDuration</ref> other) raises(<ref>WebAPIException</ref>);
52612     
52613     boolean equalsTo(<ref>TimeDuration</ref> other) raises(<ref>WebAPIException</ref>);
52614     
52615     boolean lessThan(<ref>TimeDuration</ref> other) raises(<ref>WebAPIException</ref>);
52616     
52617     boolean greaterThan(<ref>TimeDuration</ref> other) raises(<ref>WebAPIException</ref>);
52618   };</webidl>
52619       <descriptive>
52620           <brief>
52621  The TimeDuration object that contains the length and its associated 
52622 time unit.
52623           </brief>
52624           <version>
52625  1.0
52626           </version>
52627           <Code> var now = tizen.time.getCurrentDateTime();
52628  var tomorrow = now.addDuration(new tizen.TimeDuration(1, &quot;DAYS&quot;)); // Becomes tomorrow, same time.
52629  </Code>
52630       </descriptive>
52631       <ExtendedAttributeList>
52632         <ExtendedAttribute name="Constructor">
52633           <webidl>Constructor(long long length, optional <ref>TimeDurationUnit</ref>? unit)</webidl>
52634           <ArgumentList>
52635             <Argument name="length">
52636               <Type type="long long"/>
52637             </Argument>
52638             <Argument optional="optional" name="unit">
52639               <Type name="TimeDurationUnit" nullable="nullable"/>
52640             </Argument>
52641           </ArgumentList>
52642         </ExtendedAttribute>
52643       </ExtendedAttributeList>
52644       <Attribute name="length" id="::Time::TimeDuration::length">
52645         <webidl>    attribute long long length;</webidl>
52646         <descriptive>
52647             <brief>
52648  Duration length.
52649             </brief>
52650            <description>
52651             <p>
52652 The unit of the duration length (milliseconds, seconds, minutes, hours, or days)
52653 is determined by the duration unit attribute.
52654             </p>
52655            </description>
52656             <version>
52657  1.0
52658             </version>
52659         </descriptive>
52660         <Type type="long long"/>
52661       </Attribute>
52662       <Attribute name="unit" id="::Time::TimeDuration::unit">
52663         <webidl>    attribute <ref>TimeDurationUnit</ref> unit;</webidl>
52664         <descriptive>
52665             <brief>
52666  Duration unit (milliseconds, seconds, minutes, hours, or days).
52667             </brief>
52668            <description>
52669             <p>
52670 The default value is &quot;MSECS&quot; (milliseconds unit).
52671             </p>
52672            </description>
52673             <version>
52674  1.0
52675             </version>
52676         </descriptive>
52677         <Type name="TimeDurationUnit"/>
52678       </Attribute>
52679       <Operation name="difference" id="::Time::TimeDuration::difference">
52680         <webidl>    <ref>TimeDuration</ref> difference(<ref>TimeDuration</ref> other) raises(<ref>WebAPIException</ref>);</webidl>
52681         <descriptive>
52682             <brief>
52683  Calculates the difference between two TimeDuration objects.
52684             </brief>
52685            <description>
52686             <p>
52687 Calculates the difference in time between <em>this</em> and <em>other</em>.
52688 The TimeDuration that is returned is effectively <em>first</em> - <em>other</em> (that is: positive if the first parameter is larger).
52689             </p>
52690             <p>
52691 The returned TimeDuration is the biggest possible unit without losing the precision.
52692             </p>
52693            </description>
52694             <version>
52695  1.0
52696             </version>
52697             <Code> // Compute event1.duration - event2.duration
52698  var diff = event1.duration.difference(event2.duration);
52699  if (diff.length > 0)
52700    console.log(&quot;event 1's duration is longer than event 2's&quot;);
52701  else if (diff.length == 0)
52702    console.log(&quot;event 1's duration is as long as event 2's&quot;);
52703  else
52704    console.log(&quot;event 1's duration is shorter than event 2's&quot;);
52705  </Code>
52706         </descriptive>
52707         <Type name="TimeDuration">
52708           <descriptive>
52709               <description><p>
52710  New TimeDuration object corresponding to the result of <em>this</em> - <em>other</em>.
52711               </p></description>
52712           </descriptive>
52713         </Type>
52714         <ArgumentList>
52715           <Argument name="other">
52716             <descriptive>
52717                 <description><p>
52718  Other TimeDuration object to compare to.
52719                 </p></description>
52720             </descriptive>
52721             <Type name="TimeDuration"/>
52722           </Argument>
52723         </ArgumentList>
52724         <Raises>
52725           <RaiseException name="WebAPIException">
52726             <descriptive>
52727                 <description><p>
52728  with error type TypeMismatchError, if the input parameter
52729 is not compatible with the expected type for that parameter.
52730                 </p></description>
52731                 <description><p>
52732  with error type UnknownError, if the call failed due to an unknown error.
52733                 </p></description>
52734             </descriptive>
52735           </RaiseException>
52736         </Raises>
52737       </Operation>
52738       <Operation name="equalsTo" id="::Time::TimeDuration::equalsTo">
52739         <webidl>    boolean equalsTo(<ref>TimeDuration</ref> other) raises(<ref>WebAPIException</ref>);</webidl>
52740         <descriptive>
52741             <brief>
52742  Checks if the TimeDuration is equal to another.
52743             </brief>
52744            <description>
52745             <p>
52746 This method takes the units into consideration and will return true
52747 if the two TimeDuration objects represent the same duration in different units.
52748             </p>
52749            </description>
52750             <version>
52751  1.0
52752             </version>
52753             <Code> var d1 = new tizen.TimeDuration(60, &quot;MINS&quot;); // 60 minutes
52754  var d2 = new tizen.TimeDuration(1, &quot;HOURS&quot;); // 1 hour
52755  var ret = d1.equalsTo(d2); // Returns true
52756  </Code>
52757         </descriptive>
52758         <Type type="boolean">
52759           <descriptive>
52760               <description><p>
52761  boolean <em>true</em> if the two TimeDuration object represent the same duration.
52762               </p></description>
52763           </descriptive>
52764         </Type>
52765         <ArgumentList>
52766           <Argument name="other">
52767             <descriptive>
52768                 <description><p>
52769  Other TimeDuration object to compare to.
52770                 </p></description>
52771             </descriptive>
52772             <Type name="TimeDuration"/>
52773           </Argument>
52774         </ArgumentList>
52775         <Raises>
52776           <RaiseException name="WebAPIException">
52777             <descriptive>
52778                 <description><p>
52779  with error type TypeMismatchError, if the input parameter
52780 is not compatible with the expected type for that parameter.
52781                 </p></description>
52782                 <description><p>
52783  with error type UnknownError, if the call failed due to an unknown error.
52784                 </p></description>
52785             </descriptive>
52786           </RaiseException>
52787         </Raises>
52788       </Operation>
52789       <Operation name="lessThan" id="::Time::TimeDuration::lessThan">
52790         <webidl>    boolean lessThan(<ref>TimeDuration</ref> other) raises(<ref>WebAPIException</ref>);</webidl>
52791         <descriptive>
52792             <brief>
52793  Checks if the TimeDuration is lower than another.
52794             </brief>
52795            <description>
52796             <p>
52797 This method takes the units into consideration when doing the comparison.
52798             </p>
52799            </description>
52800             <version>
52801  1.0
52802             </version>
52803             <Code> var d1 = new tizen.TimeDuration(1, &quot;HOURS&quot;); // 1 hour
52804  var d2 = new tizen.TimeDuration(120, &quot;MINS&quot;); // 120 minutes
52805  var ret = d1.lessThan(d2); // Returns true
52806  </Code>
52807         </descriptive>
52808         <Type type="boolean">
52809           <descriptive>
52810               <description><p>
52811  boolean <em>true</em> if the TimeDuration is less than <em>other</em>.
52812               </p></description>
52813           </descriptive>
52814         </Type>
52815         <ArgumentList>
52816           <Argument name="other">
52817             <descriptive>
52818                 <description><p>
52819  Other TimeDuration object to compare to.
52820                 </p></description>
52821             </descriptive>
52822             <Type name="TimeDuration"/>
52823           </Argument>
52824         </ArgumentList>
52825         <Raises>
52826           <RaiseException name="WebAPIException">
52827             <descriptive>
52828                 <description><p>
52829  with error type TypeMismatchError, if the input parameter is not compatible with the expected type for that parameter.
52830                 </p></description>
52831                 <description><p>
52832  with error type UnknownError, if the call failed due to an unknown error.
52833                 </p></description>
52834             </descriptive>
52835           </RaiseException>
52836         </Raises>
52837       </Operation>
52838       <Operation name="greaterThan" id="::Time::TimeDuration::greaterThan">
52839         <webidl>    boolean greaterThan(<ref>TimeDuration</ref> other) raises(<ref>WebAPIException</ref>);</webidl>
52840         <descriptive>
52841             <brief>
52842  Checks if the TimeDuration is greater than another.
52843             </brief>
52844            <description>
52845             <p>
52846 This method takes the units into consideration when doing the comparison.
52847             </p>
52848            </description>
52849             <version>
52850  1.0
52851             </version>
52852             <Code> var d1 = new tizen.TimeDuration(120, &quot;MINS&quot;); // 120 minutes
52853  var d2 = new tizen.TimeDuration(1, &quot;HOURS&quot;); // 1 hour
52854  var ret = d1.greaterThan(d2); // Returns true
52855  </Code>
52856         </descriptive>
52857         <Type type="boolean">
52858           <descriptive>
52859               <description><p>
52860  boolean <em>true</em> if the TimeDuration is greater than <em>other</em>.
52861               </p></description>
52862           </descriptive>
52863         </Type>
52864         <ArgumentList>
52865           <Argument name="other">
52866             <descriptive>
52867                 <description><p>
52868  Other TimeDuration object to compare to.
52869                 </p></description>
52870             </descriptive>
52871             <Type name="TimeDuration"/>
52872           </Argument>
52873         </ArgumentList>
52874         <Raises>
52875           <RaiseException name="WebAPIException">
52876             <descriptive>
52877                 <description><p>
52878  with error type TypeMismatchError, if the input parameter
52879 is not compatible with the expected type for that parameter.
52880                 </p></description>
52881                 <description><p>
52882  with error type UnknownError, if the call failed due to an unknown error.
52883                 </p></description>
52884             </descriptive>
52885           </RaiseException>
52886         </Raises>
52887       </Operation>
52888     </Interface>
52889   </Module>
52890   <Module name="Tizen" id="::Tizen">
52891     <webidl>module Tizen {
52892   enum FilterMatchFlag { &quot;EXACTLY&quot;, &quot;FULLSTRING&quot;, &quot;CONTAINS&quot;, &quot;STARTSWITH&quot;, &quot;ENDSWITH&quot;, &quot;EXISTS&quot; };
52893
52894   enum SortModeOrder { &quot;ASC&quot;, &quot;DESC&quot; };
52895
52896   enum CompositeFilterType { &quot;UNION&quot;, &quot;INTERSECTION&quot; };
52897
52898   [NoInterfaceObject] interface TizenObject {
52899     readonly attribute <ref>Tizen</ref> tizen;
52900   };
52901   <ref>Window</ref> implements <ref>TizenObject</ref>;
52902
52903   [NoInterfaceObject] interface Tizen {
52904   };
52905
52906   [NoInterfaceObject] interface AbstractFilter {
52907   };
52908
52909   [Constructor(DOMString attributeName, optional <ref>FilterMatchFlag</ref>? matchFlag, optional any matchValue)]
52910   interface AttributeFilter : <ref>AbstractFilter</ref> {
52911     attribute DOMString attributeName;
52912
52913     attribute <ref>FilterMatchFlag</ref> matchFlag setraises(<ref>WebAPIException</ref>);
52914
52915     attribute any matchValue;
52916   };
52917
52918   [Constructor(DOMString attributeName, optional any initialValue, optional any endValue)]
52919   interface AttributeRangeFilter : <ref>AbstractFilter</ref> {
52920     attribute DOMString attributeName;
52921
52922     attribute any initialValue;
52923
52924     attribute any endValue;
52925   };
52926
52927   [Constructor(<ref>CompositeFilterType</ref> type, optional <ref>AbstractFilter</ref>[]? filters)]
52928   interface CompositeFilter : <ref>AbstractFilter</ref> {
52929
52930     attribute <ref>CompositeFilterType</ref> type;
52931
52932     attribute <ref>AbstractFilter</ref>[] filters;
52933   };
52934
52935   [Constructor(DOMString attributeName, optional <ref>SortModeOrder</ref>? order)]
52936   interface SortMode {
52937     attribute DOMString attributeName;
52938
52939     attribute <ref>SortModeOrder</ref> order setraises(<ref>WebAPIException</ref>);
52940   };
52941
52942   [Constructor(double latitude, double longitude)]
52943   interface SimpleCoordinates {
52944     attribute double latitude setraises(<ref>WebAPIException</ref>);
52945
52946     attribute double longitude setraises(<ref>WebAPIException</ref>);
52947   };
52948
52949   [NoInterfaceObject]
52950   interface WebAPIException {
52951     readonly attribute unsigned short code;
52952
52953     readonly attribute DOMString name;
52954
52955     readonly attribute DOMString message;
52956
52957     const unsigned short INDEX_SIZE_ERR = 1;
52958     const unsigned short DOMSTRING_SIZE_ERR = 2; 
52959     const unsigned short HIERARCHY_REQUEST_ERR = 3;
52960     const unsigned short WRONG_DOCUMENT_ERR = 4;
52961     const unsigned short INVALID_CHARACTER_ERR = 5;
52962     const unsigned short NO_DATA_ALLOWED_ERR = 6; 
52963     const unsigned short NO_MODIFICATION_ALLOWED_ERR = 7;
52964     const unsigned short NOT_FOUND_ERR = 8;
52965     const unsigned short NOT_SUPPORTED_ERR = 9;
52966     const unsigned short INUSE_ATTRIBUTE_ERR = 10; 
52967     const unsigned short INVALID_STATE_ERR = 11;
52968     const unsigned short SYNTAX_ERR = 12;
52969     const unsigned short INVALID_MODIFICATION_ERR = 13;
52970     const unsigned short NAMESPACE_ERR = 14;
52971     const unsigned short INVALID_ACCESS_ERR = 15;
52972     const unsigned short VALIDATION_ERR = 16; 
52973     const unsigned short TYPE_MISMATCH_ERR = 17;
52974     const unsigned short SECURITY_ERR = 18;
52975     const unsigned short NETWORK_ERR = 19;
52976     const unsigned short ABORT_ERR = 20;
52977     const unsigned short URL_MISMATCH_ERR = 21;
52978     const unsigned short QUOTA_EXCEEDED_ERR = 22;
52979     const unsigned short TIMEOUT_ERR = 23;
52980     const unsigned short INVALID_NODE_TYPE_ERR = 24;
52981     const unsigned short DATA_CLONE_ERR = 25;
52982   };
52983
52984   [NoInterfaceObject]
52985   interface WebAPIError {
52986     readonly attribute unsigned short code;
52987
52988     readonly attribute DOMString name;
52989
52990     readonly attribute DOMString message;
52991   };
52992
52993   [Callback=FunctionOnly, NoInterfaceObject]
52994   interface SuccessCallback {
52995     void onsuccess ();
52996   };
52997
52998   [Callback=FunctionOnly, NoInterfaceObject]
52999   interface ErrorCallback {
53000
53001     void onerror (<ref>WebAPIError</ref> error);
53002   };
53003 };</webidl>
53004     <descriptive>
53005         <brief>
53006  This API provides common Tizen functionality.
53007         </brief>
53008        <description>
53009         <p>
53010 The API provides the basic definitions that are used in the Tizen Web Device API.
53011 These include generic callbacks that are invoked when the operations succeed or fail,
53012 WebAPIError and WebAPIException that gives information of the platform's error and
53013 filters interfaces that are used to make query for searching.
53014         </p>
53015         <p>
53016 Additionally, this API specifies the location in the ECMAScript hierarchy in which
53017 the Tizen Web Device API is instantiated (<em>window.tizen</em>).
53018         </p>
53019         <p>
53020 For more information on the Tizen features, see <a href="../../org.tizen.web.appprogramming/html/guide/tizen_guide/tizen.htm">Tizen Guide</a>.  
53021         </p>
53022        </description>
53023         <version>
53024  1.0
53025         </version>
53026     </descriptive>
53027     <Enum name="FilterMatchFlag" id="::Tizen::FilterMatchFlag">
53028       <webidl>  enum FilterMatchFlag { &quot;EXACTLY&quot;, &quot;FULLSTRING&quot;, &quot;CONTAINS&quot;, &quot;STARTSWITH&quot;, &quot;ENDSWITH&quot;, &quot;EXISTS&quot; };</webidl>
53029       <descriptive>
53030           <brief>
53031  Filter match flag.
53032           </brief>
53033          <description>
53034           <p>
53035 These values are supported:
53036           </p>
53037           <ul>
53038             <li>
53039 EXACTLY - Indicates that an attribute value should match exactly with the specified default value. 
53040 For strings, this type of comparison is case-sensitive.            </li>
53041             <li>
53042 FULLSTRING - Indicates String-based comparison and that the attribute value should match the whole string (case insensitive).            </li>
53043             <li>
53044 CONTAINS - Indicates that an attribute value should contain the specified string. This type of comparison works only on strings and is case insensitive.            </li>
53045             <li>
53046 STARTSWITH - Indicates that an attribute value should start with the specified string. 
53047 This type of comparison works only on strings and is case insensitive.            </li>
53048             <li>
53049 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>
53050             <li>
53051 EXISTS - Indicates that a filter comparison should match if the specified attribute exists.            </li>
53052           </ul>
53053          </description>
53054           <version>
53055  1.0
53056           </version>
53057       </descriptive>
53058       <EnumValue stringvalue="EXACTLY">
53059         <webidl> &quot;EXACTLY</webidl>
53060       </EnumValue>
53061       <EnumValue stringvalue="FULLSTRING">
53062         <webidl> &quot;FULLSTRING</webidl>
53063       </EnumValue>
53064       <EnumValue stringvalue="CONTAINS">
53065         <webidl> &quot;CONTAINS</webidl>
53066       </EnumValue>
53067       <EnumValue stringvalue="STARTSWITH">
53068         <webidl> &quot;STARTSWITH</webidl>
53069       </EnumValue>
53070       <EnumValue stringvalue="ENDSWITH">
53071         <webidl> &quot;ENDSWITH</webidl>
53072       </EnumValue>
53073       <EnumValue stringvalue="EXISTS">
53074         <webidl> &quot;EXISTS</webidl>
53075       </EnumValue>
53076     </Enum>
53077     <Enum name="SortModeOrder" id="::Tizen::SortModeOrder">
53078       <webidl>  enum SortModeOrder { &quot;ASC&quot;, &quot;DESC&quot; };</webidl>
53079       <descriptive>
53080           <brief>
53081  An enumerator that indicates the sorting order.
53082           </brief>
53083          <description>
53084           <p>
53085 The following values are supported:
53086           </p>
53087           <ul>
53088             <li>
53089 ASC - Indicates the sorting order is ascending            </li>
53090             <li>
53091 DESC - Indicates the sorting order is descending            </li>
53092           </ul>
53093          </description>
53094           <version>
53095  1.0
53096           </version>
53097       </descriptive>
53098       <EnumValue stringvalue="ASC">
53099         <webidl> &quot;ASC</webidl>
53100       </EnumValue>
53101       <EnumValue stringvalue="DESC">
53102         <webidl> &quot;DESC</webidl>
53103       </EnumValue>
53104     </Enum>
53105     <Enum name="CompositeFilterType" id="::Tizen::CompositeFilterType">
53106       <webidl>  enum CompositeFilterType { &quot;UNION&quot;, &quot;INTERSECTION&quot; };</webidl>
53107       <descriptive>
53108           <brief>
53109  An enumerator that indicates the type of composite filter.
53110           </brief>
53111          <description>
53112           <p>
53113 The following values are supported:
53114           </p>
53115           <ul>
53116             <li>
53117 UNION - Indicates that the composite is a union of filters (&quot;OR&quot; operator)            </li>
53118             <li>
53119 INTERSECTION - Indicates that the composite is an intersection of filters (&quot;AND&quot; operator)            </li>
53120           </ul>
53121          </description>
53122           <version>
53123  1.0
53124           </version>
53125       </descriptive>
53126       <EnumValue stringvalue="UNION">
53127         <webidl> &quot;UNION</webidl>
53128       </EnumValue>
53129       <EnumValue stringvalue="INTERSECTION">
53130         <webidl> &quot;INTERSECTION</webidl>
53131       </EnumValue>
53132     </Enum>
53133     <Interface name="TizenObject" id="::Tizen::TizenObject">
53134       <webidl>  [NoInterfaceObject] interface TizenObject {
53135     readonly attribute <ref>Tizen</ref> tizen;
53136   };</webidl>
53137       <descriptive>
53138           <brief>
53139  Defines the tizen interface as a part of the window global object.
53140           </brief>
53141          <description>
53142           <p>
53143 The <em>Tizen</em> interface is always available within the <em>Window </em>object in the ECMAScript hierarchy.
53144           </p>
53145          </description>
53146           <version>
53147  1.0
53148           </version>
53149       </descriptive>
53150       <ExtendedAttributeList>
53151         <ExtendedAttribute name="NoInterfaceObject">
53152           <webidl>NoInterfaceObject</webidl>
53153         </ExtendedAttribute>
53154       </ExtendedAttributeList>
53155       <Attribute readonly="readonly" name="tizen" id="::Tizen::TizenObject::tizen">
53156         <webidl>    readonly attribute <ref>Tizen</ref> tizen;</webidl>
53157         <Type name="Tizen"/>
53158       </Attribute>
53159     </Interface>
53160     <Implements name1="Window" name2="TizenObject">
53161       <webidl>  <ref>Window</ref> implements <ref>TizenObject</ref>;</webidl>
53162     </Implements>
53163     <Interface name="Tizen" id="::Tizen::Tizen">
53164       <webidl>  [NoInterfaceObject] interface Tizen {
53165   };</webidl>
53166       <descriptive>
53167           <brief>
53168  The root of Tizen Web Device API.
53169           </brief>
53170          <description>
53171           <p>
53172 This is the Tizen root interface.
53173 It is a property of the ECMAScript global object, as specified by the <em>TizenObject</em> interface.
53174           </p>
53175          </description>
53176           <version>
53177  1.0
53178           </version>
53179       </descriptive>
53180       <ExtendedAttributeList>
53181         <ExtendedAttribute name="NoInterfaceObject">
53182           <webidl>NoInterfaceObject</webidl>
53183         </ExtendedAttribute>
53184       </ExtendedAttributeList>
53185     </Interface>
53186     <Interface name="AbstractFilter" id="::Tizen::AbstractFilter">
53187       <webidl>  [NoInterfaceObject] interface AbstractFilter {
53188   };</webidl>
53189       <descriptive>
53190           <brief>
53191  This is a common interface used by different types of
53192 object filters.
53193           </brief>
53194          <description>
53195           <p>
53196 Never use this base interface directly, instead use <em>AbstractFilter</em> subtypes,
53197 such as <em>AttributeFilter</em>, <em>AttributeRangeFilter</em>, and <em>CompositeFilter</em>.
53198           </p>
53199          </description>
53200           <version>
53201  1.0
53202           </version>
53203       </descriptive>
53204       <ExtendedAttributeList>
53205         <ExtendedAttribute name="NoInterfaceObject">
53206           <webidl>NoInterfaceObject</webidl>
53207         </ExtendedAttribute>
53208       </ExtendedAttributeList>
53209     </Interface>
53210     <Interface name="AttributeFilter" id="::Tizen::AttributeFilter">
53211       <webidl>  [Constructor(DOMString attributeName, optional <ref>FilterMatchFlag</ref>? matchFlag, optional any matchValue)]
53212   interface AttributeFilter : <ref>AbstractFilter</ref> {
53213     attribute DOMString attributeName;
53214
53215     attribute <ref>FilterMatchFlag</ref> matchFlag setraises(<ref>WebAPIException</ref>);
53216
53217     attribute any matchValue;
53218   };</webidl>
53219       <descriptive>
53220           <brief>
53221  This interface represents a set of filter.
53222           </brief>
53223          <description>
53224           <p>
53225 It represents the query statement for the specified value of the <em>matchValue</em> by the rule of <em>matchFlag</em>.
53226           </p>
53227           <p>
53228 If no <em>matchValue</em> is defined, the filter will match all objects that have the attribute
53229 defined (same as the &quot;EXISTS&quot; filter works), otherwise, it will only match objects which have an attribute that matches
53230 the specified value.
53231           </p>
53232          </description>
53233           <version>
53234  1.0
53235           </version>
53236           <Code> // Define success callback
53237  function successCallback(contacts) {
53238    console.log(contacts.length + &quot; contacts found.&quot;);
53239  }
53240
53241  // Define error callback
53242  function errorCallback(error) {
53243    console.log(&quot;An error occurred: &quot; + error.message);
53244  }
53245
53246  // Create an attribute filter based on first name: &quot;First name should contain 'Chris' (case insensitive)&quot;
53247  var filter = new tizen.AttributeFilter(&quot;name.firstName&quot;, &quot;CONTAINS&quot;, &quot;Chris&quot;);
53248  // Send request on contact address book.
53249  tizen.contact.getDefaultAddressBook().find(successCallback, errorCallback, filter);
53250  </Code>
53251       </descriptive>
53252       <ExtendedAttributeList>
53253         <ExtendedAttribute name="Constructor">
53254           <webidl>Constructor(DOMString attributeName, optional <ref>FilterMatchFlag</ref>? matchFlag, optional any matchValue)</webidl>
53255           <ArgumentList>
53256             <Argument name="attributeName">
53257               <Type type="DOMString"/>
53258             </Argument>
53259             <Argument optional="optional" name="matchFlag">
53260               <Type name="FilterMatchFlag" nullable="nullable"/>
53261             </Argument>
53262             <Argument optional="optional" name="matchValue">
53263               <Type type="any"/>
53264             </Argument>
53265           </ArgumentList>
53266         </ExtendedAttribute>
53267       </ExtendedAttributeList>
53268       <InterfaceInheritance>
53269         <Name name="AbstractFilter"/>
53270       </InterfaceInheritance>
53271       <Attribute name="attributeName" id="::Tizen::AttributeFilter::attributeName">
53272         <webidl>    attribute DOMString attributeName;</webidl>
53273         <descriptive>
53274             <brief>
53275  The name of the object attribute used for filtering.
53276             </brief>
53277            <description>
53278             <p>
53279 This is the name of the object attribute exactly as it is defined in
53280 the object's interface. For attributes of complex type, use fully-qualified names
53281 (such as 'organizations.role' to filter on a contact's role in an organization).
53282             </p>
53283             <p>
53284 For attributes of an array type, the filter will match if any value in the array
53285 matches.
53286             </p>
53287            </description>
53288             <version>
53289  1.0
53290             </version>
53291         </descriptive>
53292         <Type type="DOMString"/>
53293       </Attribute>
53294       <Attribute name="matchFlag" id="::Tizen::AttributeFilter::matchFlag">
53295         <webidl>    attribute <ref>FilterMatchFlag</ref> matchFlag setraises(<ref>WebAPIException</ref>);</webidl>
53296         <descriptive>
53297             <brief>
53298  The match flag used for attribute-based filtering.
53299             </brief>
53300            <description>
53301             <p>
53302 By default, this attribute is set to &quot;EXACTLY&quot;.
53303             </p>
53304            </description>
53305             <version>
53306  1.0
53307             </version>
53308         </descriptive>
53309         <Type name="FilterMatchFlag"/>
53310         <SetRaises>
53311           <RaiseException name="WebAPIException"/>
53312         </SetRaises>
53313       </Attribute>
53314       <Attribute name="matchValue" id="::Tizen::AttributeFilter::matchValue">
53315         <webidl>    attribute any matchValue;</webidl>
53316         <descriptive>
53317             <brief>
53318  The value used for matching.
53319             </brief>
53320            <description>
53321             <p>
53322 The filter will match if the attribute value matches the given matchValue.
53323             </p>
53324             <p>
53325 This value is not used if the <em>matchFlag</em> is set to &quot;EXISTS&quot;.
53326 By default, this attribute is set to null.
53327             </p>
53328            </description>
53329             <version>
53330  1.0
53331             </version>
53332         </descriptive>
53333         <Type type="any"/>
53334       </Attribute>
53335     </Interface>
53336     <Interface name="AttributeRangeFilter" id="::Tizen::AttributeRangeFilter">
53337       <webidl>  [Constructor(DOMString attributeName, optional any initialValue, optional any endValue)]
53338   interface AttributeRangeFilter : <ref>AbstractFilter</ref> {
53339     attribute DOMString attributeName;
53340
53341     attribute any initialValue;
53342
53343     attribute any endValue;
53344   };</webidl>
53345       <descriptive>
53346           <brief>
53347  <em>AttributeRangeFilter</em> represents a filter based on an object attribute
53348 which has values that are within a particular range.
53349           </brief>
53350          <description>
53351           <p>
53352 Range filters, where only one boundary is set, are available.
53353           </p>
53354          </description>
53355           <version>
53356  1.0
53357           </version>
53358           <Code> // Define success callback
53359  function successCallback(events) {
53360    console.log(events.length + &quot; events today.&quot;);
53361  }
53362
53363  // Define error callback
53364  function errorCallback(error) {
53365    console.log(&quot;An error occurred: &quot; + error.message);
53366  }
53367
53368  // Create an attribute range filter based on event start date: &quot;All events occurring today&quot;.
53369  var now_dt = tizen.time.getCurrentDateTime();
53370  var today_begin = new tizen.TZDate(now_dt.getFullYear(), now_dt.getMonth(), now_dt.getDate());
53371  var today_end = today_begin.addDuration(new tizen.TimeDuration(1, &quot;DAYS&quot;));
53372  var filter = new tizen.AttributeRangeFilter(&quot;startDate&quot;, today_begin, today_end);
53373
53374  // Send a search request to default event calendar.
53375  tizen.calendar.getDefaultCalendar(&quot;EVENT&quot;).find(successCallback, errorCallback, filter);
53376  </Code>
53377       </descriptive>
53378       <ExtendedAttributeList>
53379         <ExtendedAttribute name="Constructor">
53380           <webidl>Constructor(DOMString attributeName, optional any initialValue, optional any endValue)</webidl>
53381           <ArgumentList>
53382             <Argument name="attributeName">
53383               <Type type="DOMString"/>
53384             </Argument>
53385             <Argument optional="optional" name="initialValue">
53386               <Type type="any"/>
53387             </Argument>
53388             <Argument optional="optional" name="endValue">
53389               <Type type="any"/>
53390             </Argument>
53391           </ArgumentList>
53392         </ExtendedAttribute>
53393       </ExtendedAttributeList>
53394       <InterfaceInheritance>
53395         <Name name="AbstractFilter"/>
53396       </InterfaceInheritance>
53397       <Attribute name="attributeName" id="::Tizen::AttributeRangeFilter::attributeName">
53398         <webidl>    attribute DOMString attributeName;</webidl>
53399         <descriptive>
53400             <brief>
53401  The name of the object attribute used for filtering.
53402             </brief>
53403            <description>
53404             <p>
53405 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
53406 (such as 'organizations.role' to filter on a contact's role in an organization).
53407             </p>
53408             <p>
53409 For attributes of array type, the filter will match if any value in the array
53410 matches.
53411             </p>
53412            </description>
53413             <version>
53414  1.0
53415             </version>
53416         </descriptive>
53417         <Type type="DOMString"/>
53418       </Attribute>
53419       <Attribute name="initialValue" id="::Tizen::AttributeRangeFilter::initialValue">
53420         <webidl>    attribute any initialValue;</webidl>
53421         <descriptive>
53422             <brief>
53423  Objects with an attribute that is greater than or equal to <em>initialValue</em> will match.
53424             </brief>
53425            <description>
53426             <p>
53427 By default, this attribute is set to <var>null</var>.
53428             </p>
53429            </description>
53430             <version>
53431  1.0
53432             </version>
53433         </descriptive>
53434         <Type type="any"/>
53435       </Attribute>
53436       <Attribute name="endValue" id="::Tizen::AttributeRangeFilter::endValue">
53437         <webidl>    attribute any endValue;</webidl>
53438         <descriptive>
53439             <brief>
53440  Objects with an attribute that is strictly lower than to <em>endValue</em> will match.
53441             </brief>
53442            <description>
53443             <p>
53444 By default, this attribute is set to <var>null</var>.
53445             </p>
53446            </description>
53447             <version>
53448  1.0
53449             </version>
53450         </descriptive>
53451         <Type type="any"/>
53452       </Attribute>
53453     </Interface>
53454     <Interface name="CompositeFilter" id="::Tizen::CompositeFilter">
53455       <webidl>  [Constructor(<ref>CompositeFilterType</ref> type, optional <ref>AbstractFilter</ref>[]? filters)]
53456   interface CompositeFilter : <ref>AbstractFilter</ref> {
53457
53458     attribute <ref>CompositeFilterType</ref> type;
53459
53460     attribute <ref>AbstractFilter</ref>[] filters;
53461   };</webidl>
53462       <descriptive>
53463           <brief>
53464  <em>CompositeFilter</em> represents a set of filters.
53465           </brief>
53466          <description>
53467           <p>
53468 The composite filters can be one of the 2 types:
53469           </p>
53470           <ul>
53471             <li>
53472 The union - used to filter objects that match any of the filters it includes.            </li>
53473             <li>
53474 The intersection - used to filter objects that match all filters it includes.            </li>
53475           </ul>
53476          </description>
53477           <version>
53478  1.0
53479           </version>
53480           <Code> // Define success callback
53481  function successCallback(contacts) {
53482    console.log(contacts.length + &quot; contacts found.&quot;);
53483  }
53484
53485  // Define error callback
53486  function errorCallback(error) {
53487    console.log(&quot;An error occurred: &quot; + error.message);
53488  }
53489
53490  // Create an attribute filter based on first name: &quot;First name should contain 'Chris' (case insensitive)
53491  var firstNameFilter = new tizen.AttributeFilter(&quot;name.firstName&quot;, &quot;CONTAINS&quot;, &quot;Chris&quot;);
53492
53493  // Create an attribute filter based on last name: &quot;Last name should be exactly 'Smith' (case insensitive)
53494  var lastNameFilter = new tizen.AttributeFilter(&quot;name.lastName&quot;, &quot;EXACTLY&quot;, &quot;Smith&quot;};
53495
53496  // Create a filter based on the intersection of these two filter:
53497  // &quot;First name should contain 'Chris' AND last name should be 'Smith'&quot;.
53498  var filter = new tizen.CompositeFilter(&quot;INTERSECTION&quot;, [firstNameFilter, lastNameFilter]);
53499
53500  // Send request on contact address book.
53501  tizen.contact.getDefaultAddressBook().find(successCallback, errorCallback, filter);
53502  </Code>
53503       </descriptive>
53504       <ExtendedAttributeList>
53505         <ExtendedAttribute name="Constructor">
53506           <webidl>Constructor(<ref>CompositeFilterType</ref> type, optional <ref>AbstractFilter</ref>[]? filters)</webidl>
53507           <ArgumentList>
53508             <Argument name="type">
53509               <Type name="CompositeFilterType"/>
53510             </Argument>
53511             <Argument optional="optional" name="filters">
53512               <Type type="array" nullable="nullable">
53513                 <Type name="AbstractFilter"/>
53514               </Type>
53515             </Argument>
53516           </ArgumentList>
53517         </ExtendedAttribute>
53518       </ExtendedAttributeList>
53519       <InterfaceInheritance>
53520         <Name name="AbstractFilter"/>
53521       </InterfaceInheritance>
53522       <Attribute name="type" id="::Tizen::CompositeFilter::type">
53523         <webidl>    attribute <ref>CompositeFilterType</ref> type;</webidl>
53524         <descriptive>
53525             <brief>
53526  The composite filter type.
53527             </brief>
53528             <version>
53529  1.0
53530             </version>
53531         </descriptive>
53532         <Type name="CompositeFilterType"/>
53533       </Attribute>
53534       <Attribute name="filters" id="::Tizen::CompositeFilter::filters">
53535         <webidl>    attribute <ref>AbstractFilter</ref>[] filters;</webidl>
53536         <descriptive>
53537             <brief>
53538  The list of filters in the composite filter.
53539             </brief>
53540             <version>
53541  1.0
53542             </version>
53543         </descriptive>
53544         <Type type="array">
53545           <Type name="AbstractFilter"/>
53546         </Type>
53547       </Attribute>
53548     </Interface>
53549     <Interface name="SortMode" id="::Tizen::SortMode">
53550       <webidl>  [Constructor(DOMString attributeName, optional <ref>SortModeOrder</ref>? order)]
53551   interface SortMode {
53552     attribute DOMString attributeName;
53553
53554     attribute <ref>SortModeOrder</ref> order setraises(<ref>WebAPIException</ref>);
53555   };</webidl>
53556       <descriptive>
53557           <brief>
53558  <em>SortMode</em> is a common interface used for sorting of queried data.
53559           </brief>
53560          <description>
53561           <p>
53562 Note that the sorting result of list type attributes is not determined.
53563           </p>
53564          </description>
53565           <version>
53566  1.0
53567           </version>
53568           <Code> // Define a success callback
53569  function successCallback(contacts) {
53570    // The returned contacts are sorted by first name (ascending)
53571    console.log(contacts.length + &quot; contacts found.&quot;);
53572  }
53573
53574  // Define an error callback
53575  function errorCallback(error) {
53576    console.log(&quot;An error occurred: &quot; + error.message);
53577  }
53578
53579  // Create an attribute filter based on first name: &quot;First name should contain 'Chris' (case insensitive)&quot;
53580  var filter = new tizen.AttributeFilter(&quot;name.firstName&quot;, &quot;CONTAINS&quot;, &quot;Chris&quot;);
53581  // Sort by first name, ascending
53582  var sortMode = new tizen.SortMode(&quot;name.firstName&quot;, &quot;ASC&quot;);
53583  // Send request on contact address book.
53584  tizen.contact.getDefaultAddressBook().find(successCallback, errorCallback, filter, sortMode);
53585  </Code>
53586       </descriptive>
53587       <ExtendedAttributeList>
53588         <ExtendedAttribute name="Constructor">
53589           <webidl>Constructor(DOMString attributeName, optional <ref>SortModeOrder</ref>? order)</webidl>
53590           <ArgumentList>
53591             <Argument name="attributeName">
53592               <Type type="DOMString"/>
53593             </Argument>
53594             <Argument optional="optional" name="order">
53595               <Type name="SortModeOrder" nullable="nullable"/>
53596             </Argument>
53597           </ArgumentList>
53598         </ExtendedAttribute>
53599       </ExtendedAttributeList>
53600       <Attribute name="attributeName" id="::Tizen::SortMode::attributeName">
53601         <webidl>    attribute DOMString attributeName;</webidl>
53602         <descriptive>
53603             <brief>
53604  The name of the object attribute used for sorting.
53605             </brief>
53606             <version>
53607  1.0
53608             </version>
53609         </descriptive>
53610         <Type type="DOMString"/>
53611       </Attribute>
53612       <Attribute name="order" id="::Tizen::SortMode::order">
53613         <webidl>    attribute <ref>SortModeOrder</ref> order setraises(<ref>WebAPIException</ref>);</webidl>
53614         <descriptive>
53615             <brief>
53616  The type of the sorting.
53617             </brief>
53618            <description>
53619             <p>
53620 By default, this attribute is set to <var>ASC</var>.
53621             </p>
53622            </description>
53623             <version>
53624  1.0
53625             </version>
53626         </descriptive>
53627         <Type name="SortModeOrder"/>
53628         <SetRaises>
53629           <RaiseException name="WebAPIException"/>
53630         </SetRaises>
53631       </Attribute>
53632     </Interface>
53633     <Interface name="SimpleCoordinates" id="::Tizen::SimpleCoordinates">
53634       <webidl>  [Constructor(double latitude, double longitude)]
53635   interface SimpleCoordinates {
53636     attribute double latitude setraises(<ref>WebAPIException</ref>);
53637
53638     attribute double longitude setraises(<ref>WebAPIException</ref>);
53639   };</webidl>
53640       <descriptive>
53641           <brief>
53642  <em>SimpleCoordinates</em> represents a point (latitude and longitude) in map coordinate system.
53643           </brief>
53644          <description>
53645           <p>
53646 Latitude and longitude are of the WGS84 datum.
53647           </p>
53648          </description>
53649           <version>
53650  1.0
53651           </version>
53652       </descriptive>
53653       <ExtendedAttributeList>
53654         <ExtendedAttribute name="Constructor">
53655           <webidl>Constructor(double latitude, double longitude)</webidl>
53656           <ArgumentList>
53657             <Argument name="latitude">
53658               <Type type="double"/>
53659             </Argument>
53660             <Argument name="longitude">
53661               <Type type="double"/>
53662             </Argument>
53663           </ArgumentList>
53664         </ExtendedAttribute>
53665       </ExtendedAttributeList>
53666       <Attribute name="latitude" id="::Tizen::SimpleCoordinates::latitude">
53667         <webidl>    attribute double latitude setraises(<ref>WebAPIException</ref>);</webidl>
53668         <descriptive>
53669             <brief>
53670  Latitude.
53671             </brief>
53672             <version>
53673  1.0
53674             </version>
53675         </descriptive>
53676         <Type type="double"/>
53677         <SetRaises>
53678           <RaiseException name="WebAPIException"/>
53679         </SetRaises>
53680       </Attribute>
53681       <Attribute name="longitude" id="::Tizen::SimpleCoordinates::longitude">
53682         <webidl>    attribute double longitude setraises(<ref>WebAPIException</ref>);</webidl>
53683         <descriptive>
53684             <brief>
53685  Longitude.
53686             </brief>
53687             <version>
53688  1.0
53689             </version>
53690         </descriptive>
53691         <Type type="double"/>
53692         <SetRaises>
53693           <RaiseException name="WebAPIException"/>
53694         </SetRaises>
53695       </Attribute>
53696     </Interface>
53697     <Interface name="WebAPIException" id="::Tizen::WebAPIException">
53698       <webidl>  [NoInterfaceObject]
53699   interface WebAPIException {
53700     readonly attribute unsigned short code;
53701
53702     readonly attribute DOMString name;
53703
53704     readonly attribute DOMString message;
53705
53706     const unsigned short INDEX_SIZE_ERR = 1;
53707     const unsigned short DOMSTRING_SIZE_ERR = 2; 
53708     const unsigned short HIERARCHY_REQUEST_ERR = 3;
53709     const unsigned short WRONG_DOCUMENT_ERR = 4;
53710     const unsigned short INVALID_CHARACTER_ERR = 5;
53711     const unsigned short NO_DATA_ALLOWED_ERR = 6; 
53712     const unsigned short NO_MODIFICATION_ALLOWED_ERR = 7;
53713     const unsigned short NOT_FOUND_ERR = 8;
53714     const unsigned short NOT_SUPPORTED_ERR = 9;
53715     const unsigned short INUSE_ATTRIBUTE_ERR = 10; 
53716     const unsigned short INVALID_STATE_ERR = 11;
53717     const unsigned short SYNTAX_ERR = 12;
53718     const unsigned short INVALID_MODIFICATION_ERR = 13;
53719     const unsigned short NAMESPACE_ERR = 14;
53720     const unsigned short INVALID_ACCESS_ERR = 15;
53721     const unsigned short VALIDATION_ERR = 16; 
53722     const unsigned short TYPE_MISMATCH_ERR = 17;
53723     const unsigned short SECURITY_ERR = 18;
53724     const unsigned short NETWORK_ERR = 19;
53725     const unsigned short ABORT_ERR = 20;
53726     const unsigned short URL_MISMATCH_ERR = 21;
53727     const unsigned short QUOTA_EXCEEDED_ERR = 22;
53728     const unsigned short TIMEOUT_ERR = 23;
53729     const unsigned short INVALID_NODE_TYPE_ERR = 24;
53730     const unsigned short DATA_CLONE_ERR = 25;
53731   };</webidl>
53732       <descriptive>
53733           <brief>
53734  Generic exception interface.
53735           </brief>
53736          <description>
53737           <p>
53738 This interface will be used by the APIs to throw errors synchronously.
53739           </p>
53740           <p>
53741 The attempt to set an attribute value may or may not raise WebAPIException synchronously with error type TypeMismatchError or InvalidValuesError.
53742           </p>
53743          </description>
53744           <version>
53745  2.0
53746           </version>
53747       </descriptive>
53748       <ExtendedAttributeList>
53749         <ExtendedAttribute name="NoInterfaceObject">
53750           <webidl>NoInterfaceObject</webidl>
53751         </ExtendedAttribute>
53752       </ExtendedAttributeList>
53753       <Attribute readonly="readonly" name="code" id="::Tizen::WebAPIException::code">
53754         <webidl>    readonly attribute unsigned short code;</webidl>
53755         <descriptive>
53756             <brief>
53757  16-bit error code.
53758 For the possible values for this attribute, see <a href="http://www.w3.org/TR/dom/#domexception">DOMException</a>.
53759             </brief>
53760             <version>
53761  2.0
53762             </version>
53763         </descriptive>
53764         <Type type="unsigned short"/>
53765       </Attribute>
53766       <Attribute readonly="readonly" name="name" id="::Tizen::WebAPIException::name">
53767         <webidl>    readonly attribute DOMString name;</webidl>
53768         <descriptive>
53769             <brief>
53770  An error type. The name attribute must return the value it was initialized with.
53771 This attribute can have one of the following values: 
53772             </brief>
53773            <description>
53774             <ul>
53775               <li>
53776 UnknownError - An unknown error has occurred.              </li>
53777               <li>
53778 InvalidValuesError - The content of an object does not contain valid values.              </li>
53779               <li>
53780 IOError - An error occurred in communication with the underlying implementation and so the requested method cannot be completed.              </li>
53781               <li>
53782 ServiceNotAvailableError - The requested service is not available.              </li>
53783             </ul>
53784             <p>
53785 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> 
53786             </p>
53787            </description>
53788             <version>
53789  2.0
53790             </version>
53791         </descriptive>
53792         <Type type="DOMString"/>
53793       </Attribute>
53794       <Attribute readonly="readonly" name="message" id="::Tizen::WebAPIException::message">
53795         <webidl>    readonly attribute DOMString message;</webidl>
53796         <descriptive>
53797             <brief>
53798  An error message that describes the details of an encountered error. 
53799 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.
53800             </brief>
53801             <version>
53802  2.0
53803             </version>
53804         </descriptive>
53805         <Type type="DOMString"/>
53806       </Attribute>
53807       <Const name="INDEX_SIZE_ERR" value="1" id="::Tizen::WebAPIException::INDEX_SIZE_ERR">
53808         <webidl>    const unsigned short INDEX_SIZE_ERR = 1;</webidl>
53809         <descriptive>
53810             <brief>
53811  The index is not in the allowed range.
53812             </brief>
53813             <version>
53814  2.0
53815             </version>
53816         </descriptive>
53817         <Type type="unsigned short"/>
53818       </Const>
53819       <Const name="DOMSTRING_SIZE_ERR" value="2" id="::Tizen::WebAPIException::DOMSTRING_SIZE_ERR">
53820         <webidl>    const unsigned short DOMSTRING_SIZE_ERR = 2;</webidl>
53821         <descriptive>
53822             <brief>
53823  The specified range of text is too large.
53824             </brief>
53825             <version>
53826  2.0
53827             </version>
53828         </descriptive>
53829         <Type type="unsigned short"/>
53830       </Const>
53831       <Const name="HIERARCHY_REQUEST_ERR" value="3" id="::Tizen::WebAPIException::HIERARCHY_REQUEST_ERR">
53832         <webidl>    const unsigned short HIERARCHY_REQUEST_ERR = 3;</webidl>
53833         <descriptive>
53834             <brief>
53835  The operation would yield an incorrect node tree.
53836             </brief>
53837             <version>
53838  2.0
53839             </version>
53840         </descriptive>
53841         <Type type="unsigned short"/>
53842       </Const>
53843       <Const name="WRONG_DOCUMENT_ERR" value="4" id="::Tizen::WebAPIException::WRONG_DOCUMENT_ERR">
53844         <webidl>    const unsigned short WRONG_DOCUMENT_ERR = 4;</webidl>
53845         <descriptive>
53846             <brief>
53847  The object is in the wrong document.
53848             </brief>
53849             <version>
53850  2.0
53851             </version>
53852         </descriptive>
53853         <Type type="unsigned short"/>
53854       </Const>
53855       <Const name="INVALID_CHARACTER_ERR" value="5" id="::Tizen::WebAPIException::INVALID_CHARACTER_ERR">
53856         <webidl>    const unsigned short INVALID_CHARACTER_ERR = 5;</webidl>
53857         <descriptive>
53858             <brief>
53859  The string contains invalid characters.
53860             </brief>
53861             <version>
53862  2.0
53863             </version>
53864         </descriptive>
53865         <Type type="unsigned short"/>
53866       </Const>
53867       <Const name="NO_DATA_ALLOWED_ERR" value="6" id="::Tizen::WebAPIException::NO_DATA_ALLOWED_ERR">
53868         <webidl>    const unsigned short NO_DATA_ALLOWED_ERR = 6;</webidl>
53869         <descriptive>
53870             <brief>
53871  Data is specified for a node that does not support data.
53872             </brief>
53873             <version>
53874  2.0
53875             </version>
53876         </descriptive>
53877         <Type type="unsigned short"/>
53878       </Const>
53879       <Const name="NO_MODIFICATION_ALLOWED_ERR" value="7" id="::Tizen::WebAPIException::NO_MODIFICATION_ALLOWED_ERR">
53880         <webidl>    const unsigned short NO_MODIFICATION_ALLOWED_ERR = 7;</webidl>
53881         <descriptive>
53882             <brief>
53883  The object cannot be modified.
53884             </brief>
53885             <version>
53886  2.0
53887             </version>
53888         </descriptive>
53889         <Type type="unsigned short"/>
53890       </Const>
53891       <Const name="NOT_FOUND_ERR" value="8" id="::Tizen::WebAPIException::NOT_FOUND_ERR">
53892         <webidl>    const unsigned short NOT_FOUND_ERR = 8;</webidl>
53893         <descriptive>
53894             <brief>
53895  The object cannot be found here.
53896             </brief>
53897             <version>
53898  2.0
53899             </version>
53900         </descriptive>
53901         <Type type="unsigned short"/>
53902       </Const>
53903       <Const name="NOT_SUPPORTED_ERR" value="9" id="::Tizen::WebAPIException::NOT_SUPPORTED_ERR">
53904         <webidl>    const unsigned short NOT_SUPPORTED_ERR = 9;</webidl>
53905         <descriptive>
53906             <brief>
53907  The operation is not supported.
53908             </brief>
53909             <version>
53910  2.0
53911             </version>
53912         </descriptive>
53913         <Type type="unsigned short"/>
53914       </Const>
53915       <Const name="INUSE_ATTRIBUTE_ERR" value="10" id="::Tizen::WebAPIException::INUSE_ATTRIBUTE_ERR">
53916         <webidl>    const unsigned short INUSE_ATTRIBUTE_ERR = 10;</webidl>
53917         <descriptive>
53918             <brief>
53919  The specified attribute is already in use elsewhere.
53920             </brief>
53921             <version>
53922  2.0
53923             </version>
53924         </descriptive>
53925         <Type type="unsigned short"/>
53926       </Const>
53927       <Const name="INVALID_STATE_ERR" value="11" id="::Tizen::WebAPIException::INVALID_STATE_ERR">
53928         <webidl>    const unsigned short INVALID_STATE_ERR = 11;</webidl>
53929         <descriptive>
53930             <brief>
53931  The object is in an invalid state.
53932             </brief>
53933             <version>
53934  2.0
53935             </version>
53936         </descriptive>
53937         <Type type="unsigned short"/>
53938       </Const>
53939       <Const name="SYNTAX_ERR" value="12" id="::Tizen::WebAPIException::SYNTAX_ERR">
53940         <webidl>    const unsigned short SYNTAX_ERR = 12;</webidl>
53941         <descriptive>
53942             <brief>
53943  The string did not match the expected pattern.
53944             </brief>
53945             <version>
53946  2.0
53947             </version>
53948         </descriptive>
53949         <Type type="unsigned short"/>
53950       </Const>
53951       <Const name="INVALID_MODIFICATION_ERR" value="13" id="::Tizen::WebAPIException::INVALID_MODIFICATION_ERR">
53952         <webidl>    const unsigned short INVALID_MODIFICATION_ERR = 13;</webidl>
53953         <descriptive>
53954             <brief>
53955  The object cannot be modified in this way.
53956             </brief>
53957             <version>
53958  2.0
53959             </version>
53960         </descriptive>
53961         <Type type="unsigned short"/>
53962       </Const>
53963       <Const name="NAMESPACE_ERR" value="14" id="::Tizen::WebAPIException::NAMESPACE_ERR">
53964         <webidl>    const unsigned short NAMESPACE_ERR = 14;</webidl>
53965         <descriptive>
53966             <brief>
53967  The operation is not allowed by Namespaces in XML.
53968             </brief>
53969             <version>
53970  2.0
53971             </version>
53972         </descriptive>
53973         <Type type="unsigned short"/>
53974       </Const>
53975       <Const name="INVALID_ACCESS_ERR" value="15" id="::Tizen::WebAPIException::INVALID_ACCESS_ERR">
53976         <webidl>    const unsigned short INVALID_ACCESS_ERR = 15;</webidl>
53977         <descriptive>
53978             <brief>
53979  The object does not support the operation or argument.
53980             </brief>
53981             <version>
53982  2.0
53983             </version>
53984         </descriptive>
53985         <Type type="unsigned short"/>
53986       </Const>
53987       <Const name="VALIDATION_ERR" value="16" id="::Tizen::WebAPIException::VALIDATION_ERR">
53988         <webidl>    const unsigned short VALIDATION_ERR = 16;</webidl>
53989         <descriptive>
53990             <brief>
53991  The operation would cause the node to fail validation.
53992             </brief>
53993             <version>
53994  2.0
53995             </version>
53996         </descriptive>
53997         <Type type="unsigned short"/>
53998       </Const>
53999       <Const name="TYPE_MISMATCH_ERR" value="17" id="::Tizen::WebAPIException::TYPE_MISMATCH_ERR">
54000         <webidl>    const unsigned short TYPE_MISMATCH_ERR = 17;</webidl>
54001         <descriptive>
54002             <brief>
54003  The type of the object does not match the expected type.
54004             </brief>
54005             <version>
54006  2.0
54007             </version>
54008         </descriptive>
54009         <Type type="unsigned short"/>
54010       </Const>
54011       <Const name="SECURITY_ERR" value="18" id="::Tizen::WebAPIException::SECURITY_ERR">
54012         <webidl>    const unsigned short SECURITY_ERR = 18;</webidl>
54013         <descriptive>
54014             <brief>
54015  The operation is insecure.
54016             </brief>
54017             <version>
54018  2.0
54019             </version>
54020         </descriptive>
54021         <Type type="unsigned short"/>
54022       </Const>
54023       <Const name="NETWORK_ERR" value="19" id="::Tizen::WebAPIException::NETWORK_ERR">
54024         <webidl>    const unsigned short NETWORK_ERR = 19;</webidl>
54025         <descriptive>
54026             <brief>
54027  A network error occurred.
54028             </brief>
54029             <version>
54030  2.0
54031             </version>
54032         </descriptive>
54033         <Type type="unsigned short"/>
54034       </Const>
54035       <Const name="ABORT_ERR" value="20" id="::Tizen::WebAPIException::ABORT_ERR">
54036         <webidl>    const unsigned short ABORT_ERR = 20;</webidl>
54037         <descriptive>
54038             <brief>
54039  The operation was aborted.
54040             </brief>
54041             <version>
54042  2.0
54043             </version>
54044         </descriptive>
54045         <Type type="unsigned short"/>
54046       </Const>
54047       <Const name="URL_MISMATCH_ERR" value="21" id="::Tizen::WebAPIException::URL_MISMATCH_ERR">
54048         <webidl>    const unsigned short URL_MISMATCH_ERR = 21;</webidl>
54049         <descriptive>
54050             <brief>
54051  The given URL does not match another URL.
54052             </brief>
54053             <version>
54054  2.0
54055             </version>
54056         </descriptive>
54057         <Type type="unsigned short"/>
54058       </Const>
54059       <Const name="QUOTA_EXCEEDED_ERR" value="22" id="::Tizen::WebAPIException::QUOTA_EXCEEDED_ERR">
54060         <webidl>    const unsigned short QUOTA_EXCEEDED_ERR = 22;</webidl>
54061         <descriptive>
54062             <brief>
54063  The quota has been exceeded.
54064             </brief>
54065             <version>
54066  2.0
54067             </version>
54068         </descriptive>
54069         <Type type="unsigned short"/>
54070       </Const>
54071       <Const name="TIMEOUT_ERR" value="23" id="::Tizen::WebAPIException::TIMEOUT_ERR">
54072         <webidl>    const unsigned short TIMEOUT_ERR = 23;</webidl>
54073         <descriptive>
54074             <brief>
54075  The operation timed out.
54076             </brief>
54077             <version>
54078  2.0
54079             </version>
54080         </descriptive>
54081         <Type type="unsigned short"/>
54082       </Const>
54083       <Const name="INVALID_NODE_TYPE_ERR" value="24" id="::Tizen::WebAPIException::INVALID_NODE_TYPE_ERR">
54084         <webidl>    const unsigned short INVALID_NODE_TYPE_ERR = 24;</webidl>
54085         <descriptive>
54086             <brief>
54087  The supplied node is incorrect or has an incorrect ancestor for this operation.
54088             </brief>
54089             <version>
54090  2.0
54091             </version>
54092         </descriptive>
54093         <Type type="unsigned short"/>
54094       </Const>
54095       <Const name="DATA_CLONE_ERR" value="25" id="::Tizen::WebAPIException::DATA_CLONE_ERR">
54096         <webidl>    const unsigned short DATA_CLONE_ERR = 25;</webidl>
54097         <descriptive>
54098             <brief>
54099  The object cannot be cloned.
54100             </brief>
54101             <version>
54102  2.0
54103             </version>
54104         </descriptive>
54105         <Type type="unsigned short"/>
54106       </Const>
54107     </Interface>
54108     <Interface name="WebAPIError" id="::Tizen::WebAPIError">
54109       <webidl>  [NoInterfaceObject]
54110   interface WebAPIError {
54111     readonly attribute unsigned short code;
54112
54113     readonly attribute DOMString name;
54114
54115     readonly attribute DOMString message;
54116   };</webidl>
54117       <descriptive>
54118           <brief>
54119  Generic error interface.
54120           </brief>
54121          <description>
54122           <p>
54123 This interface will be used by the APIs in order to return them in the error callback of asynchronous methods.
54124           </p>
54125          </description>
54126           <version>
54127  2.0
54128           </version>
54129       </descriptive>
54130       <ExtendedAttributeList>
54131         <ExtendedAttribute name="NoInterfaceObject">
54132           <webidl>NoInterfaceObject</webidl>
54133         </ExtendedAttribute>
54134       </ExtendedAttributeList>
54135       <Attribute readonly="readonly" name="code" id="::Tizen::WebAPIError::code">
54136         <webidl>    readonly attribute unsigned short code;</webidl>
54137         <descriptive>
54138             <brief>
54139  16-bit error code.
54140 Possible values are defined in <a href="http://www.w3.org/TR/dom/#domexception">DOMException</a>.
54141             </brief>
54142             <version>
54143  2.0
54144             </version>
54145         </descriptive>
54146         <Type type="unsigned short"/>
54147       </Attribute>
54148       <Attribute readonly="readonly" name="name" id="::Tizen::WebAPIError::name">
54149         <webidl>    readonly attribute DOMString name;</webidl>
54150         <descriptive>
54151             <brief>
54152  An error type. The name attribute must return the value it was initialized with.
54153 This attribute can have one of the following values: 
54154             </brief>
54155            <description>
54156             <ul>
54157               <li>
54158 UnknownError - An unknown error has occurred.              </li>
54159               <li>
54160 InvalidValuesError - The content of an object does not contain valid values.              </li>
54161               <li>
54162 IOError - An error occurred in communication with the underlying implementation and so the requested method cannot be completed.              </li>
54163               <li>
54164 ServiceNotAvailableError - The requested service is not available.              </li>
54165             </ul>
54166             <p>
54167 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> 
54168             </p>
54169            </description>
54170             <version>
54171  2.0
54172             </version>
54173         </descriptive>
54174         <Type type="DOMString"/>
54175       </Attribute>
54176       <Attribute readonly="readonly" name="message" id="::Tizen::WebAPIError::message">
54177         <webidl>    readonly attribute DOMString message;</webidl>
54178         <descriptive>
54179             <brief>
54180  An error message that describes the details of the error encountered. This attribute is not intended
54181 to be used directly in the user interfaces as it is mainly intended to be useful for developers rather than end users.
54182             </brief>
54183             <version>
54184  2.0
54185             </version>
54186         </descriptive>
54187         <Type type="DOMString"/>
54188       </Attribute>
54189     </Interface>
54190     <Interface name="SuccessCallback" id="::Tizen::SuccessCallback">
54191       <webidl>  [Callback=FunctionOnly, NoInterfaceObject]
54192   interface SuccessCallback {
54193     void onsuccess ();
54194   };</webidl>
54195       <descriptive>
54196           <brief>
54197  This interface is used in methods that do not require any return value in the success callback.
54198 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.
54199           </brief>
54200           <version>
54201  1.0
54202           </version>
54203           <Code>     function onSuccess() {
54204          console.log(&quot;Application launched successfully&quot;);
54205      }
54206      tizen.application.launch('0pnxz8hbsr.MyFiles', onSuccess);
54207  </Code>
54208       </descriptive>
54209       <ExtendedAttributeList>
54210         <ExtendedAttribute name="Callback" value="FunctionOnly">
54211           <webidl>Callback</webidl>
54212         </ExtendedAttribute>
54213         <ExtendedAttribute name="NoInterfaceObject">
54214           <webidl> NoInterfaceObject</webidl>
54215         </ExtendedAttribute>
54216       </ExtendedAttributeList>
54217       <Operation name="onsuccess" id="::Tizen::SuccessCallback::onsuccess">
54218         <webidl>    void onsuccess ();</webidl>
54219         <descriptive>
54220             <brief>
54221  Method invoked when the asynchronous call completes successfully.
54222             </brief>
54223             <version>
54224  1.0
54225             </version>
54226         </descriptive>
54227         <Type type="void"/>
54228         <ArgumentList/>
54229       </Operation>
54230     </Interface>
54231     <Interface name="ErrorCallback" id="::Tizen::ErrorCallback">
54232       <webidl>  [Callback=FunctionOnly, NoInterfaceObject]
54233   interface ErrorCallback {
54234
54235     void onerror (<ref>WebAPIError</ref> error);
54236   };</webidl>
54237       <descriptive>
54238           <brief>
54239  This interface is used in methods that require only an error as input parameter in the error callback.
54240 If an invalid function (such as null) is passed to the API that accepts ErrorCallback,
54241 it silently fails and there is no further action.
54242           </brief>
54243           <version>
54244  1.0
54245           </version>
54246           <Code>  // Define the error callback.
54247   function onError(error) {
54248     console.log(error.message);
54249   }
54250
54251   // Define the success callback.
54252   function onSuccess(services) {
54253      //send a message using the found service
54254   }
54255   tizen.messaging.getMessageServices(&quot;messaging.sms&quot;, onSuccess, onError);
54256  </Code>
54257       </descriptive>
54258       <ExtendedAttributeList>
54259         <ExtendedAttribute name="Callback" value="FunctionOnly">
54260           <webidl>Callback</webidl>
54261         </ExtendedAttribute>
54262         <ExtendedAttribute name="NoInterfaceObject">
54263           <webidl> NoInterfaceObject</webidl>
54264         </ExtendedAttribute>
54265       </ExtendedAttributeList>
54266       <Operation name="onerror" id="::Tizen::ErrorCallback::onerror">
54267         <webidl>    void onerror (<ref>WebAPIError</ref> error);</webidl>
54268         <descriptive>
54269             <brief>
54270  Method that is invoked when the error occurs.
54271             </brief>
54272             <version>
54273  1.0
54274             </version>
54275         </descriptive>
54276         <Type type="void"/>
54277         <ArgumentList>
54278           <Argument name="error">
54279             <descriptive>
54280                 <description><p>
54281  Generic error.
54282                 </p></description>
54283             </descriptive>
54284             <Type name="WebAPIError"/>
54285           </Argument>
54286         </ArgumentList>
54287       </Operation>
54288     </Interface>
54289   </Module>
54290   <Module name="WebSetting" id="::WebSetting">
54291     <webidl>module WebSetting {
54292
54293   [NoInterfaceObject] interface WebSettingObject {
54294     readonly attribute <ref>WebSettingManager</ref> websetting;
54295   };
54296     <ref>Tizen</ref> implements <ref>WebSettingObject</ref>;
54297
54298   [NoInterfaceObject] interface WebSettingManager {
54299
54300    void setUserAgentString(DOMString userAgent, 
54301               optional <ref>SuccessCallback</ref>? successCallback, 
54302               optional <ref>ErrorCallback</ref>? errorCallback) raises (<ref>WebAPIException</ref>);     
54303
54304    void removeAllCookies(optional <ref>SuccessCallback</ref>? successCallback, 
54305               optional <ref>ErrorCallback</ref>? errorCallback) raises (<ref>WebAPIException</ref>);     
54306               
54307    };
54308 };</webidl>
54309     <descriptive>
54310         <brief>
54311  This Web setting API defines a set of APIs that manages the setting states of the Web view in your Web application.
54312         </brief>
54313        <description>
54314         <p>
54315 A Tizen Web application includes a web view and the properties below of the web view can be managed via the Web setting API:
54316         </p>
54317         <ul>
54318           <li>
54319  Delete all the cookies saved for the web view in the Web application.           </li>
54320           <li>
54321  Set a custom user agent string of the web view in the Web application.          </li>
54322         </ul>
54323         <p>
54324 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.  
54325         </p>
54326        </description>
54327         <version>
54328  2.2
54329         </version>
54330     </descriptive>
54331     <Interface name="WebSettingObject" id="::WebSetting::WebSettingObject">
54332       <webidl>  [NoInterfaceObject] interface WebSettingObject {
54333     readonly attribute <ref>WebSettingManager</ref> websetting;
54334   };</webidl>
54335       <descriptive>
54336           <brief>
54337  This interface defines what is instantiated for the Web setting API by the <em>Tizen</em> object from the Tizen Platform.
54338           </brief>
54339          <description>
54340           <p>
54341 <em>tizen.websetting</em> object is available to manage the settings of the Web view in your Web application. 
54342           </p>
54343          </description>
54344           <version>
54345  2.2
54346           </version>
54347       </descriptive>
54348       <ExtendedAttributeList>
54349         <ExtendedAttribute name="NoInterfaceObject">
54350           <webidl>NoInterfaceObject</webidl>
54351         </ExtendedAttribute>
54352       </ExtendedAttributeList>
54353       <Attribute readonly="readonly" name="websetting" id="::WebSetting::WebSettingObject::websetting">
54354         <webidl>    readonly attribute <ref>WebSettingManager</ref> websetting;</webidl>
54355         <Type name="WebSettingManager"/>
54356       </Attribute>
54357     </Interface>
54358     <Implements name1="Tizen" name2="WebSettingObject">
54359       <webidl>    <ref>Tizen</ref> implements <ref>WebSettingObject</ref>;</webidl>
54360     </Implements>
54361     <Interface name="WebSettingManager" id="::WebSetting::WebSettingManager">
54362       <webidl>  [NoInterfaceObject] interface WebSettingManager {
54363
54364    void setUserAgentString(DOMString userAgent, 
54365               optional <ref>SuccessCallback</ref>? successCallback, 
54366               optional <ref>ErrorCallback</ref>? errorCallback) raises (<ref>WebAPIException</ref>);     
54367
54368    void removeAllCookies(optional <ref>SuccessCallback</ref>? successCallback, 
54369               optional <ref>ErrorCallback</ref>? errorCallback) raises (<ref>WebAPIException</ref>);     
54370               
54371    };</webidl>
54372       <descriptive>
54373           <brief>
54374  This is the top-level interface for the WebSetting API that managed the settings of the Web view in your Web application.
54375           </brief>
54376       </descriptive>
54377       <ExtendedAttributeList>
54378         <ExtendedAttribute name="NoInterfaceObject">
54379           <webidl>NoInterfaceObject</webidl>
54380         </ExtendedAttribute>
54381       </ExtendedAttributeList>
54382       <Operation name="setUserAgentString" id="::WebSetting::WebSettingManager::setUserAgentString">
54383         <webidl>   void setUserAgentString(DOMString userAgent, 
54384               optional <ref>SuccessCallback</ref>? successCallback, 
54385               optional <ref>ErrorCallback</ref>? errorCallback) raises (<ref>WebAPIException</ref>);</webidl>
54386         <descriptive>
54387             <brief>
54388  Sets the custom user agent string for your Web application.
54389             </brief>
54390            <description>
54391             <p>
54392 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
54393 has the same user agent string as the Tizen browser on the device. 
54394             </p>
54395             <p>
54396 The <em>ErrorCallback</em> is launched with these error types:
54397             </p>
54398             <ul>
54399               <li>
54400 UnknownError - If any error occurs while setting the user agent string.              </li>
54401               <li>
54402 InvalidValuesError - If any of the input parameters contain an invalid value.              </li>
54403             </ul>
54404            </description>
54405             <version>
54406  2.2
54407             </version>
54408             <Code> function successCallback() {
54409      console.log(&quot;The requested user agent string has just been set successfully.&quot;);
54410  }
54411
54412  tizen.websetting.setUserAgentString(&quot;the new user agent string to set&quot;, successCallback);
54413       
54414 </Code>
54415         </descriptive>
54416         <Type type="void"/>
54417         <ArgumentList>
54418           <Argument name="userAgent">
54419             <descriptive>
54420                 <description><p>
54421  User agent to set for the Web view in your Web application. 
54422                 </p></description>
54423             </descriptive>
54424             <Type type="DOMString"/>
54425           </Argument>
54426           <Argument optional="optional" name="successCallback">
54427             <descriptive>
54428                 <description><p>
54429  To be invoked if the requested setting operation succeeds.
54430                 </p></description>
54431             </descriptive>
54432             <Type name="SuccessCallback" nullable="nullable"/>
54433           </Argument>
54434           <Argument optional="optional" name="errorCallback">
54435             <descriptive>
54436                 <description><p>
54437  To be invoked if the requested setting operation fails.
54438                 </p></description>
54439             </descriptive>
54440             <Type name="ErrorCallback" nullable="nullable"/>
54441           </Argument>
54442         </ArgumentList>
54443         <Raises>
54444           <RaiseException name="WebAPIException">
54445             <descriptive>
54446                 <description><p>
54447  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
54448                 </p></description>
54449             </descriptive>
54450           </RaiseException>
54451         </Raises>
54452       </Operation>
54453       <Operation name="removeAllCookies" id="::WebSetting::WebSettingManager::removeAllCookies">
54454         <webidl>   void removeAllCookies(optional <ref>SuccessCallback</ref>? successCallback, 
54455               optional <ref>ErrorCallback</ref>? errorCallback) raises (<ref>WebAPIException</ref>);</webidl>
54456         <descriptive>
54457             <brief>
54458  Removes all the cookies saved for the Web view in your Web application.
54459             </brief>
54460            <description>
54461             <p>
54462 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.  
54463             </p>
54464             <p>
54465 The <em>ErrorCallback</em> is launched with these error types:
54466             </p>
54467             <ul>
54468               <li>
54469 UnknownError - If any error occurs while deleting the cookies.              </li>
54470             </ul>
54471            </description>
54472             <version>
54473  2.2
54474             </version>
54475             <privilegelevel>
54476  public
54477             </privilegelevel>
54478             <privilege>
54479  http://tizen.org/privilege/websetting
54480             </privilege>
54481             <Code> function successCallback() {
54482      console.log(&quot;The cookies saved for your application have just been removed.&quot;);
54483  }
54484
54485  tizen.websetting.removeAllCookies(successCallback);
54486       
54487 </Code>
54488         </descriptive>
54489         <Type type="void"/>
54490         <ArgumentList>
54491           <Argument optional="optional" name="successCallback">
54492             <descriptive>
54493                 <description><p>
54494  To be invoked if the requested delete operation succeeds.  
54495                 </p></description>
54496             </descriptive>
54497             <Type name="SuccessCallback" nullable="nullable"/>
54498           </Argument>
54499           <Argument optional="optional" name="errorCallback">
54500             <descriptive>
54501                 <description><p>
54502  To be invoked if the requested delete operation fails.
54503                 </p></description>
54504             </descriptive>
54505             <Type name="ErrorCallback" nullable="nullable"/>
54506           </Argument>
54507         </ArgumentList>
54508         <Raises>
54509           <RaiseException name="WebAPIException">
54510             <descriptive>
54511                 <description><p>
54512  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
54513                 </p></description>
54514                 <description><p>
54515  with error type SecurityError, if the application does not have the privilege to call this method.
54516                 </p></description>
54517             </descriptive>
54518           </RaiseException>
54519         </Raises>
54520       </Operation>
54521     </Interface>
54522   </Module>
54523 </Definitions>