Best Python code snippet using robotframework-ioslibrary_python
many-actions.gyp
Source:many-actions.gyp  
1# Copyright (c) 2012 Google Inc. All rights reserved.2# Use of this source code is governed by a BSD-style license that can be3# found in the LICENSE file.4{5  'target_defaults': {6    'msvs_cygwin_dirs': ['../../../../<(DEPTH)/third_party/cygwin'],7  },8  'targets': [9    {10      'target_name': 'a',11      'type': 'none',12      'actions': [13        {14          'action_name': 'do_0',15          'inputs': [],16          'outputs': ['<(PRODUCT_DIR)/generated_0.h'],17          'action': [18            'touch',19            '<(PRODUCT_DIR)/generated_0.h',20          ],21        },22        {23          'action_name': 'do_1',24          'inputs': [],25          'outputs': ['<(PRODUCT_DIR)/generated_1.h'],26          'action': [27            'touch',28            '<(PRODUCT_DIR)/generated_1.h',29          ],30        },31        {32          'action_name': 'do_2',33          'inputs': [],34          'outputs': ['<(PRODUCT_DIR)/generated_2.h'],35          'action': [36            'touch',37            '<(PRODUCT_DIR)/generated_2.h',38          ],39        },40        {41          'action_name': 'do_3',42          'inputs': [],43          'outputs': ['<(PRODUCT_DIR)/generated_3.h'],44          'action': [45            'touch',46            '<(PRODUCT_DIR)/generated_3.h',47          ],48        },49        {50          'action_name': 'do_4',51          'inputs': [],52          'outputs': ['<(PRODUCT_DIR)/generated_4.h'],53          'action': [54            'touch',55            '<(PRODUCT_DIR)/generated_4.h',56          ],57        },58        {59          'action_name': 'do_5',60          'inputs': [],61          'outputs': ['<(PRODUCT_DIR)/generated_5.h'],62          'action': [63            'touch',64            '<(PRODUCT_DIR)/generated_5.h',65          ],66        },67        {68          'action_name': 'do_6',69          'inputs': [],70          'outputs': ['<(PRODUCT_DIR)/generated_6.h'],71          'action': [72            'touch',73            '<(PRODUCT_DIR)/generated_6.h',74          ],75        },76        {77          'action_name': 'do_7',78          'inputs': [],79          'outputs': ['<(PRODUCT_DIR)/generated_7.h'],80          'action': [81            'touch',82            '<(PRODUCT_DIR)/generated_7.h',83          ],84        },85        {86          'action_name': 'do_8',87          'inputs': [],88          'outputs': ['<(PRODUCT_DIR)/generated_8.h'],89          'action': [90            'touch',91            '<(PRODUCT_DIR)/generated_8.h',92          ],93        },94        {95          'action_name': 'do_9',96          'inputs': [],97          'outputs': ['<(PRODUCT_DIR)/generated_9.h'],98          'action': [99            'touch',100            '<(PRODUCT_DIR)/generated_9.h',101          ],102        },103        {104          'action_name': 'do_10',105          'inputs': [],106          'outputs': ['<(PRODUCT_DIR)/generated_10.h'],107          'action': [108            'touch',109            '<(PRODUCT_DIR)/generated_10.h',110          ],111        },112        {113          'action_name': 'do_11',114          'inputs': [],115          'outputs': ['<(PRODUCT_DIR)/generated_11.h'],116          'action': [117            'touch',118            '<(PRODUCT_DIR)/generated_11.h',119          ],120        },121        {122          'action_name': 'do_12',123          'inputs': [],124          'outputs': ['<(PRODUCT_DIR)/generated_12.h'],125          'action': [126            'touch',127            '<(PRODUCT_DIR)/generated_12.h',128          ],129        },130        {131          'action_name': 'do_13',132          'inputs': [],133          'outputs': ['<(PRODUCT_DIR)/generated_13.h'],134          'action': [135            'touch',136            '<(PRODUCT_DIR)/generated_13.h',137          ],138        },139        {140          'action_name': 'do_14',141          'inputs': [],142          'outputs': ['<(PRODUCT_DIR)/generated_14.h'],143          'action': [144            'touch',145            '<(PRODUCT_DIR)/generated_14.h',146          ],147        },148        {149          'action_name': 'do_15',150          'inputs': [],151          'outputs': ['<(PRODUCT_DIR)/generated_15.h'],152          'action': [153            'touch',154            '<(PRODUCT_DIR)/generated_15.h',155          ],156        },157        {158          'action_name': 'do_16',159          'inputs': [],160          'outputs': ['<(PRODUCT_DIR)/generated_16.h'],161          'action': [162            'touch',163            '<(PRODUCT_DIR)/generated_16.h',164          ],165        },166        {167          'action_name': 'do_17',168          'inputs': [],169          'outputs': ['<(PRODUCT_DIR)/generated_17.h'],170          'action': [171            'touch',172            '<(PRODUCT_DIR)/generated_17.h',173          ],174        },175        {176          'action_name': 'do_18',177          'inputs': [],178          'outputs': ['<(PRODUCT_DIR)/generated_18.h'],179          'action': [180            'touch',181            '<(PRODUCT_DIR)/generated_18.h',182          ],183        },184        {185          'action_name': 'do_19',186          'inputs': [],187          'outputs': ['<(PRODUCT_DIR)/generated_19.h'],188          'action': [189            'touch',190            '<(PRODUCT_DIR)/generated_19.h',191          ],192        },193        {194          'action_name': 'do_20',195          'inputs': [],196          'outputs': ['<(PRODUCT_DIR)/generated_20.h'],197          'action': [198            'touch',199            '<(PRODUCT_DIR)/generated_20.h',200          ],201        },202        {203          'action_name': 'do_21',204          'inputs': [],205          'outputs': ['<(PRODUCT_DIR)/generated_21.h'],206          'action': [207            'touch',208            '<(PRODUCT_DIR)/generated_21.h',209          ],210        },211        {212          'action_name': 'do_22',213          'inputs': [],214          'outputs': ['<(PRODUCT_DIR)/generated_22.h'],215          'action': [216            'touch',217            '<(PRODUCT_DIR)/generated_22.h',218          ],219        },220        {221          'action_name': 'do_23',222          'inputs': [],223          'outputs': ['<(PRODUCT_DIR)/generated_23.h'],224          'action': [225            'touch',226            '<(PRODUCT_DIR)/generated_23.h',227          ],228        },229        {230          'action_name': 'do_24',231          'inputs': [],232          'outputs': ['<(PRODUCT_DIR)/generated_24.h'],233          'action': [234            'touch',235            '<(PRODUCT_DIR)/generated_24.h',236          ],237        },238        {239          'action_name': 'do_25',240          'inputs': [],241          'outputs': ['<(PRODUCT_DIR)/generated_25.h'],242          'action': [243            'touch',244            '<(PRODUCT_DIR)/generated_25.h',245          ],246        },247        {248          'action_name': 'do_26',249          'inputs': [],250          'outputs': ['<(PRODUCT_DIR)/generated_26.h'],251          'action': [252            'touch',253            '<(PRODUCT_DIR)/generated_26.h',254          ],255        },256        {257          'action_name': 'do_27',258          'inputs': [],259          'outputs': ['<(PRODUCT_DIR)/generated_27.h'],260          'action': [261            'touch',262            '<(PRODUCT_DIR)/generated_27.h',263          ],264        },265        {266          'action_name': 'do_28',267          'inputs': [],268          'outputs': ['<(PRODUCT_DIR)/generated_28.h'],269          'action': [270            'touch',271            '<(PRODUCT_DIR)/generated_28.h',272          ],273        },274        {275          'action_name': 'do_29',276          'inputs': [],277          'outputs': ['<(PRODUCT_DIR)/generated_29.h'],278          'action': [279            'touch',280            '<(PRODUCT_DIR)/generated_29.h',281          ],282        },283        {284          'action_name': 'do_30',285          'inputs': [],286          'outputs': ['<(PRODUCT_DIR)/generated_30.h'],287          'action': [288            'touch',289            '<(PRODUCT_DIR)/generated_30.h',290          ],291        },292        {293          'action_name': 'do_31',294          'inputs': [],295          'outputs': ['<(PRODUCT_DIR)/generated_31.h'],296          'action': [297            'touch',298            '<(PRODUCT_DIR)/generated_31.h',299          ],300        },301        {302          'action_name': 'do_32',303          'inputs': [],304          'outputs': ['<(PRODUCT_DIR)/generated_32.h'],305          'action': [306            'touch',307            '<(PRODUCT_DIR)/generated_32.h',308          ],309        },310        {311          'action_name': 'do_33',312          'inputs': [],313          'outputs': ['<(PRODUCT_DIR)/generated_33.h'],314          'action': [315            'touch',316            '<(PRODUCT_DIR)/generated_33.h',317          ],318        },319        {320          'action_name': 'do_34',321          'inputs': [],322          'outputs': ['<(PRODUCT_DIR)/generated_34.h'],323          'action': [324            'touch',325            '<(PRODUCT_DIR)/generated_34.h',326          ],327        },328        {329          'action_name': 'do_35',330          'inputs': [],331          'outputs': ['<(PRODUCT_DIR)/generated_35.h'],332          'action': [333            'touch',334            '<(PRODUCT_DIR)/generated_35.h',335          ],336        },337        {338          'action_name': 'do_36',339          'inputs': [],340          'outputs': ['<(PRODUCT_DIR)/generated_36.h'],341          'action': [342            'touch',343            '<(PRODUCT_DIR)/generated_36.h',344          ],345        },346        {347          'action_name': 'do_37',348          'inputs': [],349          'outputs': ['<(PRODUCT_DIR)/generated_37.h'],350          'action': [351            'touch',352            '<(PRODUCT_DIR)/generated_37.h',353          ],354        },355        {356          'action_name': 'do_38',357          'inputs': [],358          'outputs': ['<(PRODUCT_DIR)/generated_38.h'],359          'action': [360            'touch',361            '<(PRODUCT_DIR)/generated_38.h',362          ],363        },364        {365          'action_name': 'do_39',366          'inputs': [],367          'outputs': ['<(PRODUCT_DIR)/generated_39.h'],368          'action': [369            'touch',370            '<(PRODUCT_DIR)/generated_39.h',371          ],372        },373        {374          'action_name': 'do_40',375          'inputs': [],376          'outputs': ['<(PRODUCT_DIR)/generated_40.h'],377          'action': [378            'touch',379            '<(PRODUCT_DIR)/generated_40.h',380          ],381        },382        {383          'action_name': 'do_41',384          'inputs': [],385          'outputs': ['<(PRODUCT_DIR)/generated_41.h'],386          'action': [387            'touch',388            '<(PRODUCT_DIR)/generated_41.h',389          ],390        },391        {392          'action_name': 'do_42',393          'inputs': [],394          'outputs': ['<(PRODUCT_DIR)/generated_42.h'],395          'action': [396            'touch',397            '<(PRODUCT_DIR)/generated_42.h',398          ],399        },400        {401          'action_name': 'do_43',402          'inputs': [],403          'outputs': ['<(PRODUCT_DIR)/generated_43.h'],404          'action': [405            'touch',406            '<(PRODUCT_DIR)/generated_43.h',407          ],408        },409        {410          'action_name': 'do_44',411          'inputs': [],412          'outputs': ['<(PRODUCT_DIR)/generated_44.h'],413          'action': [414            'touch',415            '<(PRODUCT_DIR)/generated_44.h',416          ],417        },418        {419          'action_name': 'do_45',420          'inputs': [],421          'outputs': ['<(PRODUCT_DIR)/generated_45.h'],422          'action': [423            'touch',424            '<(PRODUCT_DIR)/generated_45.h',425          ],426        },427        {428          'action_name': 'do_46',429          'inputs': [],430          'outputs': ['<(PRODUCT_DIR)/generated_46.h'],431          'action': [432            'touch',433            '<(PRODUCT_DIR)/generated_46.h',434          ],435        },436        {437          'action_name': 'do_47',438          'inputs': [],439          'outputs': ['<(PRODUCT_DIR)/generated_47.h'],440          'action': [441            'touch',442            '<(PRODUCT_DIR)/generated_47.h',443          ],444        },445        {446          'action_name': 'do_48',447          'inputs': [],448          'outputs': ['<(PRODUCT_DIR)/generated_48.h'],449          'action': [450            'touch',451            '<(PRODUCT_DIR)/generated_48.h',452          ],453        },454        {455          'action_name': 'do_49',456          'inputs': [],457          'outputs': ['<(PRODUCT_DIR)/generated_49.h'],458          'action': [459            'touch',460            '<(PRODUCT_DIR)/generated_49.h',461          ],462        },463        {464          'action_name': 'do_50',465          'inputs': [],466          'outputs': ['<(PRODUCT_DIR)/generated_50.h'],467          'action': [468            'touch',469            '<(PRODUCT_DIR)/generated_50.h',470          ],471        },472        {473          'action_name': 'do_51',474          'inputs': [],475          'outputs': ['<(PRODUCT_DIR)/generated_51.h'],476          'action': [477            'touch',478            '<(PRODUCT_DIR)/generated_51.h',479          ],480        },481        {482          'action_name': 'do_52',483          'inputs': [],484          'outputs': ['<(PRODUCT_DIR)/generated_52.h'],485          'action': [486            'touch',487            '<(PRODUCT_DIR)/generated_52.h',488          ],489        },490        {491          'action_name': 'do_53',492          'inputs': [],493          'outputs': ['<(PRODUCT_DIR)/generated_53.h'],494          'action': [495            'touch',496            '<(PRODUCT_DIR)/generated_53.h',497          ],498        },499        {500          'action_name': 'do_54',501          'inputs': [],502          'outputs': ['<(PRODUCT_DIR)/generated_54.h'],503          'action': [504            'touch',505            '<(PRODUCT_DIR)/generated_54.h',506          ],507        },508        {509          'action_name': 'do_55',510          'inputs': [],511          'outputs': ['<(PRODUCT_DIR)/generated_55.h'],512          'action': [513            'touch',514            '<(PRODUCT_DIR)/generated_55.h',515          ],516        },517        {518          'action_name': 'do_56',519          'inputs': [],520          'outputs': ['<(PRODUCT_DIR)/generated_56.h'],521          'action': [522            'touch',523            '<(PRODUCT_DIR)/generated_56.h',524          ],525        },526        {527          'action_name': 'do_57',528          'inputs': [],529          'outputs': ['<(PRODUCT_DIR)/generated_57.h'],530          'action': [531            'touch',532            '<(PRODUCT_DIR)/generated_57.h',533          ],534        },535        {536          'action_name': 'do_58',537          'inputs': [],538          'outputs': ['<(PRODUCT_DIR)/generated_58.h'],539          'action': [540            'touch',541            '<(PRODUCT_DIR)/generated_58.h',542          ],543        },544        {545          'action_name': 'do_59',546          'inputs': [],547          'outputs': ['<(PRODUCT_DIR)/generated_59.h'],548          'action': [549            'touch',550            '<(PRODUCT_DIR)/generated_59.h',551          ],552        },553        {554          'action_name': 'do_60',555          'inputs': [],556          'outputs': ['<(PRODUCT_DIR)/generated_60.h'],557          'action': [558            'touch',559            '<(PRODUCT_DIR)/generated_60.h',560          ],561        },562        {563          'action_name': 'do_61',564          'inputs': [],565          'outputs': ['<(PRODUCT_DIR)/generated_61.h'],566          'action': [567            'touch',568            '<(PRODUCT_DIR)/generated_61.h',569          ],570        },571        {572          'action_name': 'do_62',573          'inputs': [],574          'outputs': ['<(PRODUCT_DIR)/generated_62.h'],575          'action': [576            'touch',577            '<(PRODUCT_DIR)/generated_62.h',578          ],579        },580        {581          'action_name': 'do_63',582          'inputs': [],583          'outputs': ['<(PRODUCT_DIR)/generated_63.h'],584          'action': [585            'touch',586            '<(PRODUCT_DIR)/generated_63.h',587          ],588        },589        {590          'action_name': 'do_64',591          'inputs': [],592          'outputs': ['<(PRODUCT_DIR)/generated_64.h'],593          'action': [594            'touch',595            '<(PRODUCT_DIR)/generated_64.h',596          ],597        },598        {599          'action_name': 'do_65',600          'inputs': [],601          'outputs': ['<(PRODUCT_DIR)/generated_65.h'],602          'action': [603            'touch',604            '<(PRODUCT_DIR)/generated_65.h',605          ],606        },607        {608          'action_name': 'do_66',609          'inputs': [],610          'outputs': ['<(PRODUCT_DIR)/generated_66.h'],611          'action': [612            'touch',613            '<(PRODUCT_DIR)/generated_66.h',614          ],615        },616        {617          'action_name': 'do_67',618          'inputs': [],619          'outputs': ['<(PRODUCT_DIR)/generated_67.h'],620          'action': [621            'touch',622            '<(PRODUCT_DIR)/generated_67.h',623          ],624        },625        {626          'action_name': 'do_68',627          'inputs': [],628          'outputs': ['<(PRODUCT_DIR)/generated_68.h'],629          'action': [630            'touch',631            '<(PRODUCT_DIR)/generated_68.h',632          ],633        },634        {635          'action_name': 'do_69',636          'inputs': [],637          'outputs': ['<(PRODUCT_DIR)/generated_69.h'],638          'action': [639            'touch',640            '<(PRODUCT_DIR)/generated_69.h',641          ],642        },643        {644          'action_name': 'do_70',645          'inputs': [],646          'outputs': ['<(PRODUCT_DIR)/generated_70.h'],647          'action': [648            'touch',649            '<(PRODUCT_DIR)/generated_70.h',650          ],651        },652        {653          'action_name': 'do_71',654          'inputs': [],655          'outputs': ['<(PRODUCT_DIR)/generated_71.h'],656          'action': [657            'touch',658            '<(PRODUCT_DIR)/generated_71.h',659          ],660        },661        {662          'action_name': 'do_72',663          'inputs': [],664          'outputs': ['<(PRODUCT_DIR)/generated_72.h'],665          'action': [666            'touch',667            '<(PRODUCT_DIR)/generated_72.h',668          ],669        },670        {671          'action_name': 'do_73',672          'inputs': [],673          'outputs': ['<(PRODUCT_DIR)/generated_73.h'],674          'action': [675            'touch',676            '<(PRODUCT_DIR)/generated_73.h',677          ],678        },679        {680          'action_name': 'do_74',681          'inputs': [],682          'outputs': ['<(PRODUCT_DIR)/generated_74.h'],683          'action': [684            'touch',685            '<(PRODUCT_DIR)/generated_74.h',686          ],687        },688        {689          'action_name': 'do_75',690          'inputs': [],691          'outputs': ['<(PRODUCT_DIR)/generated_75.h'],692          'action': [693            'touch',694            '<(PRODUCT_DIR)/generated_75.h',695          ],696        },697        {698          'action_name': 'do_76',699          'inputs': [],700          'outputs': ['<(PRODUCT_DIR)/generated_76.h'],701          'action': [702            'touch',703            '<(PRODUCT_DIR)/generated_76.h',704          ],705        },706        {707          'action_name': 'do_77',708          'inputs': [],709          'outputs': ['<(PRODUCT_DIR)/generated_77.h'],710          'action': [711            'touch',712            '<(PRODUCT_DIR)/generated_77.h',713          ],714        },715        {716          'action_name': 'do_78',717          'inputs': [],718          'outputs': ['<(PRODUCT_DIR)/generated_78.h'],719          'action': [720            'touch',721            '<(PRODUCT_DIR)/generated_78.h',722          ],723        },724        {725          'action_name': 'do_79',726          'inputs': [],727          'outputs': ['<(PRODUCT_DIR)/generated_79.h'],728          'action': [729            'touch',730            '<(PRODUCT_DIR)/generated_79.h',731          ],732        },733        {734          'action_name': 'do_80',735          'inputs': [],736          'outputs': ['<(PRODUCT_DIR)/generated_80.h'],737          'action': [738            'touch',739            '<(PRODUCT_DIR)/generated_80.h',740          ],741        },742        {743          'action_name': 'do_81',744          'inputs': [],745          'outputs': ['<(PRODUCT_DIR)/generated_81.h'],746          'action': [747            'touch',748            '<(PRODUCT_DIR)/generated_81.h',749          ],750        },751        {752          'action_name': 'do_82',753          'inputs': [],754          'outputs': ['<(PRODUCT_DIR)/generated_82.h'],755          'action': [756            'touch',757            '<(PRODUCT_DIR)/generated_82.h',758          ],759        },760        {761          'action_name': 'do_83',762          'inputs': [],763          'outputs': ['<(PRODUCT_DIR)/generated_83.h'],764          'action': [765            'touch',766            '<(PRODUCT_DIR)/generated_83.h',767          ],768        },769        {770          'action_name': 'do_84',771          'inputs': [],772          'outputs': ['<(PRODUCT_DIR)/generated_84.h'],773          'action': [774            'touch',775            '<(PRODUCT_DIR)/generated_84.h',776          ],777        },778        {779          'action_name': 'do_85',780          'inputs': [],781          'outputs': ['<(PRODUCT_DIR)/generated_85.h'],782          'action': [783            'touch',784            '<(PRODUCT_DIR)/generated_85.h',785          ],786        },787        {788          'action_name': 'do_86',789          'inputs': [],790          'outputs': ['<(PRODUCT_DIR)/generated_86.h'],791          'action': [792            'touch',793            '<(PRODUCT_DIR)/generated_86.h',794          ],795        },796        {797          'action_name': 'do_87',798          'inputs': [],799          'outputs': ['<(PRODUCT_DIR)/generated_87.h'],800          'action': [801            'touch',802            '<(PRODUCT_DIR)/generated_87.h',803          ],804        },805        {806          'action_name': 'do_88',807          'inputs': [],808          'outputs': ['<(PRODUCT_DIR)/generated_88.h'],809          'action': [810            'touch',811            '<(PRODUCT_DIR)/generated_88.h',812          ],813        },814        {815          'action_name': 'do_89',816          'inputs': [],817          'outputs': ['<(PRODUCT_DIR)/generated_89.h'],818          'action': [819            'touch',820            '<(PRODUCT_DIR)/generated_89.h',821          ],822        },823        {824          'action_name': 'do_90',825          'inputs': [],826          'outputs': ['<(PRODUCT_DIR)/generated_90.h'],827          'action': [828            'touch',829            '<(PRODUCT_DIR)/generated_90.h',830          ],831        },832        {833          'action_name': 'do_91',834          'inputs': [],835          'outputs': ['<(PRODUCT_DIR)/generated_91.h'],836          'action': [837            'touch',838            '<(PRODUCT_DIR)/generated_91.h',839          ],840        },841        {842          'action_name': 'do_92',843          'inputs': [],844          'outputs': ['<(PRODUCT_DIR)/generated_92.h'],845          'action': [846            'touch',847            '<(PRODUCT_DIR)/generated_92.h',848          ],849        },850        {851          'action_name': 'do_93',852          'inputs': [],853          'outputs': ['<(PRODUCT_DIR)/generated_93.h'],854          'action': [855            'touch',856            '<(PRODUCT_DIR)/generated_93.h',857          ],858        },859        {860          'action_name': 'do_94',861          'inputs': [],862          'outputs': ['<(PRODUCT_DIR)/generated_94.h'],863          'action': [864            'touch',865            '<(PRODUCT_DIR)/generated_94.h',866          ],867        },868        {869          'action_name': 'do_95',870          'inputs': [],871          'outputs': ['<(PRODUCT_DIR)/generated_95.h'],872          'action': [873            'touch',874            '<(PRODUCT_DIR)/generated_95.h',875          ],876        },877        {878          'action_name': 'do_96',879          'inputs': [],880          'outputs': ['<(PRODUCT_DIR)/generated_96.h'],881          'action': [882            'touch',883            '<(PRODUCT_DIR)/generated_96.h',884          ],885        },886        {887          'action_name': 'do_97',888          'inputs': [],889          'outputs': ['<(PRODUCT_DIR)/generated_97.h'],890          'action': [891            'touch',892            '<(PRODUCT_DIR)/generated_97.h',893          ],894        },895        {896          'action_name': 'do_98',897          'inputs': [],898          'outputs': ['<(PRODUCT_DIR)/generated_98.h'],899          'action': [900            'touch',901            '<(PRODUCT_DIR)/generated_98.h',902          ],903        },904        {905          'action_name': 'do_99',906          'inputs': [],907          'outputs': ['<(PRODUCT_DIR)/generated_99.h'],908          'action': [909            'touch',910            '<(PRODUCT_DIR)/generated_99.h',911          ],912        },913        {914          'action_name': 'do_100',915          'inputs': [],916          'outputs': ['<(PRODUCT_DIR)/generated_100.h'],917          'action': [918            'touch',919            '<(PRODUCT_DIR)/generated_100.h',920          ],921        },922        {923          'action_name': 'do_101',924          'inputs': [],925          'outputs': ['<(PRODUCT_DIR)/generated_101.h'],926          'action': [927            'touch',928            '<(PRODUCT_DIR)/generated_101.h',929          ],930        },931        {932          'action_name': 'do_102',933          'inputs': [],934          'outputs': ['<(PRODUCT_DIR)/generated_102.h'],935          'action': [936            'touch',937            '<(PRODUCT_DIR)/generated_102.h',938          ],939        },940        {941          'action_name': 'do_103',942          'inputs': [],943          'outputs': ['<(PRODUCT_DIR)/generated_103.h'],944          'action': [945            'touch',946            '<(PRODUCT_DIR)/generated_103.h',947          ],948        },949        {950          'action_name': 'do_104',951          'inputs': [],952          'outputs': ['<(PRODUCT_DIR)/generated_104.h'],953          'action': [954            'touch',955            '<(PRODUCT_DIR)/generated_104.h',956          ],957        },958        {959          'action_name': 'do_105',960          'inputs': [],961          'outputs': ['<(PRODUCT_DIR)/generated_105.h'],962          'action': [963            'touch',964            '<(PRODUCT_DIR)/generated_105.h',965          ],966        },967        {968          'action_name': 'do_106',969          'inputs': [],970          'outputs': ['<(PRODUCT_DIR)/generated_106.h'],971          'action': [972            'touch',973            '<(PRODUCT_DIR)/generated_106.h',974          ],975        },976        {977          'action_name': 'do_107',978          'inputs': [],979          'outputs': ['<(PRODUCT_DIR)/generated_107.h'],980          'action': [981            'touch',982            '<(PRODUCT_DIR)/generated_107.h',983          ],984        },985        {986          'action_name': 'do_108',987          'inputs': [],988          'outputs': ['<(PRODUCT_DIR)/generated_108.h'],989          'action': [990            'touch',991            '<(PRODUCT_DIR)/generated_108.h',992          ],993        },994        {995          'action_name': 'do_109',996          'inputs': [],997          'outputs': ['<(PRODUCT_DIR)/generated_109.h'],998          'action': [999            'touch',1000            '<(PRODUCT_DIR)/generated_109.h',1001          ],1002        },1003        {1004          'action_name': 'do_110',1005          'inputs': [],1006          'outputs': ['<(PRODUCT_DIR)/generated_110.h'],1007          'action': [1008            'touch',1009            '<(PRODUCT_DIR)/generated_110.h',1010          ],1011        },1012        {1013          'action_name': 'do_111',1014          'inputs': [],1015          'outputs': ['<(PRODUCT_DIR)/generated_111.h'],1016          'action': [1017            'touch',1018            '<(PRODUCT_DIR)/generated_111.h',1019          ],1020        },1021        {1022          'action_name': 'do_112',1023          'inputs': [],1024          'outputs': ['<(PRODUCT_DIR)/generated_112.h'],1025          'action': [1026            'touch',1027            '<(PRODUCT_DIR)/generated_112.h',1028          ],1029        },1030        {1031          'action_name': 'do_113',1032          'inputs': [],1033          'outputs': ['<(PRODUCT_DIR)/generated_113.h'],1034          'action': [1035            'touch',1036            '<(PRODUCT_DIR)/generated_113.h',1037          ],1038        },1039        {1040          'action_name': 'do_114',1041          'inputs': [],1042          'outputs': ['<(PRODUCT_DIR)/generated_114.h'],1043          'action': [1044            'touch',1045            '<(PRODUCT_DIR)/generated_114.h',1046          ],1047        },1048        {1049          'action_name': 'do_115',1050          'inputs': [],1051          'outputs': ['<(PRODUCT_DIR)/generated_115.h'],1052          'action': [1053            'touch',1054            '<(PRODUCT_DIR)/generated_115.h',1055          ],1056        },1057        {1058          'action_name': 'do_116',1059          'inputs': [],1060          'outputs': ['<(PRODUCT_DIR)/generated_116.h'],1061          'action': [1062            'touch',1063            '<(PRODUCT_DIR)/generated_116.h',1064          ],1065        },1066        {1067          'action_name': 'do_117',1068          'inputs': [],1069          'outputs': ['<(PRODUCT_DIR)/generated_117.h'],1070          'action': [1071            'touch',1072            '<(PRODUCT_DIR)/generated_117.h',1073          ],1074        },1075        {1076          'action_name': 'do_118',1077          'inputs': [],1078          'outputs': ['<(PRODUCT_DIR)/generated_118.h'],1079          'action': [1080            'touch',1081            '<(PRODUCT_DIR)/generated_118.h',1082          ],1083        },1084        {1085          'action_name': 'do_119',1086          'inputs': [],1087          'outputs': ['<(PRODUCT_DIR)/generated_119.h'],1088          'action': [1089            'touch',1090            '<(PRODUCT_DIR)/generated_119.h',1091          ],1092        },1093        {1094          'action_name': 'do_120',1095          'inputs': [],1096          'outputs': ['<(PRODUCT_DIR)/generated_120.h'],1097          'action': [1098            'touch',1099            '<(PRODUCT_DIR)/generated_120.h',1100          ],1101        },1102        {1103          'action_name': 'do_121',1104          'inputs': [],1105          'outputs': ['<(PRODUCT_DIR)/generated_121.h'],1106          'action': [1107            'touch',1108            '<(PRODUCT_DIR)/generated_121.h',1109          ],1110        },1111        {1112          'action_name': 'do_122',1113          'inputs': [],1114          'outputs': ['<(PRODUCT_DIR)/generated_122.h'],1115          'action': [1116            'touch',1117            '<(PRODUCT_DIR)/generated_122.h',1118          ],1119        },1120        {1121          'action_name': 'do_123',1122          'inputs': [],1123          'outputs': ['<(PRODUCT_DIR)/generated_123.h'],1124          'action': [1125            'touch',1126            '<(PRODUCT_DIR)/generated_123.h',1127          ],1128        },1129        {1130          'action_name': 'do_124',1131          'inputs': [],1132          'outputs': ['<(PRODUCT_DIR)/generated_124.h'],1133          'action': [1134            'touch',1135            '<(PRODUCT_DIR)/generated_124.h',1136          ],1137        },1138        {1139          'action_name': 'do_125',1140          'inputs': [],1141          'outputs': ['<(PRODUCT_DIR)/generated_125.h'],1142          'action': [1143            'touch',1144            '<(PRODUCT_DIR)/generated_125.h',1145          ],1146        },1147        {1148          'action_name': 'do_126',1149          'inputs': [],1150          'outputs': ['<(PRODUCT_DIR)/generated_126.h'],1151          'action': [1152            'touch',1153            '<(PRODUCT_DIR)/generated_126.h',1154          ],1155        },1156        {1157          'action_name': 'do_127',1158          'inputs': [],1159          'outputs': ['<(PRODUCT_DIR)/generated_127.h'],1160          'action': [1161            'touch',1162            '<(PRODUCT_DIR)/generated_127.h',1163          ],1164        },1165        {1166          'action_name': 'do_128',1167          'inputs': [],1168          'outputs': ['<(PRODUCT_DIR)/generated_128.h'],1169          'action': [1170            'touch',1171            '<(PRODUCT_DIR)/generated_128.h',1172          ],1173        },1174        {1175          'action_name': 'do_129',1176          'inputs': [],1177          'outputs': ['<(PRODUCT_DIR)/generated_129.h'],1178          'action': [1179            'touch',1180            '<(PRODUCT_DIR)/generated_129.h',1181          ],1182        },1183        {1184          'action_name': 'do_130',1185          'inputs': [],1186          'outputs': ['<(PRODUCT_DIR)/generated_130.h'],1187          'action': [1188            'touch',1189            '<(PRODUCT_DIR)/generated_130.h',1190          ],1191        },1192        {1193          'action_name': 'do_131',1194          'inputs': [],1195          'outputs': ['<(PRODUCT_DIR)/generated_131.h'],1196          'action': [1197            'touch',1198            '<(PRODUCT_DIR)/generated_131.h',1199          ],1200        },1201        {1202          'action_name': 'do_132',1203          'inputs': [],1204          'outputs': ['<(PRODUCT_DIR)/generated_132.h'],1205          'action': [1206            'touch',1207            '<(PRODUCT_DIR)/generated_132.h',1208          ],1209        },1210        {1211          'action_name': 'do_133',1212          'inputs': [],1213          'outputs': ['<(PRODUCT_DIR)/generated_133.h'],1214          'action': [1215            'touch',1216            '<(PRODUCT_DIR)/generated_133.h',1217          ],1218        },1219        {1220          'action_name': 'do_134',1221          'inputs': [],1222          'outputs': ['<(PRODUCT_DIR)/generated_134.h'],1223          'action': [1224            'touch',1225            '<(PRODUCT_DIR)/generated_134.h',1226          ],1227        },1228        {1229          'action_name': 'do_135',1230          'inputs': [],1231          'outputs': ['<(PRODUCT_DIR)/generated_135.h'],1232          'action': [1233            'touch',1234            '<(PRODUCT_DIR)/generated_135.h',1235          ],1236        },1237        {1238          'action_name': 'do_136',1239          'inputs': [],1240          'outputs': ['<(PRODUCT_DIR)/generated_136.h'],1241          'action': [1242            'touch',1243            '<(PRODUCT_DIR)/generated_136.h',1244          ],1245        },1246        {1247          'action_name': 'do_137',1248          'inputs': [],1249          'outputs': ['<(PRODUCT_DIR)/generated_137.h'],1250          'action': [1251            'touch',1252            '<(PRODUCT_DIR)/generated_137.h',1253          ],1254        },1255        {1256          'action_name': 'do_138',1257          'inputs': [],1258          'outputs': ['<(PRODUCT_DIR)/generated_138.h'],1259          'action': [1260            'touch',1261            '<(PRODUCT_DIR)/generated_138.h',1262          ],1263        },1264        {1265          'action_name': 'do_139',1266          'inputs': [],1267          'outputs': ['<(PRODUCT_DIR)/generated_139.h'],1268          'action': [1269            'touch',1270            '<(PRODUCT_DIR)/generated_139.h',1271          ],1272        },1273        {1274          'action_name': 'do_140',1275          'inputs': [],1276          'outputs': ['<(PRODUCT_DIR)/generated_140.h'],1277          'action': [1278            'touch',1279            '<(PRODUCT_DIR)/generated_140.h',1280          ],1281        },1282        {1283          'action_name': 'do_141',1284          'inputs': [],1285          'outputs': ['<(PRODUCT_DIR)/generated_141.h'],1286          'action': [1287            'touch',1288            '<(PRODUCT_DIR)/generated_141.h',1289          ],1290        },1291        {1292          'action_name': 'do_142',1293          'inputs': [],1294          'outputs': ['<(PRODUCT_DIR)/generated_142.h'],1295          'action': [1296            'touch',1297            '<(PRODUCT_DIR)/generated_142.h',1298          ],1299        },1300        {1301          'action_name': 'do_143',1302          'inputs': [],1303          'outputs': ['<(PRODUCT_DIR)/generated_143.h'],1304          'action': [1305            'touch',1306            '<(PRODUCT_DIR)/generated_143.h',1307          ],1308        },1309        {1310          'action_name': 'do_144',1311          'inputs': [],1312          'outputs': ['<(PRODUCT_DIR)/generated_144.h'],1313          'action': [1314            'touch',1315            '<(PRODUCT_DIR)/generated_144.h',1316          ],1317        },1318        {1319          'action_name': 'do_145',1320          'inputs': [],1321          'outputs': ['<(PRODUCT_DIR)/generated_145.h'],1322          'action': [1323            'touch',1324            '<(PRODUCT_DIR)/generated_145.h',1325          ],1326        },1327        {1328          'action_name': 'do_146',1329          'inputs': [],1330          'outputs': ['<(PRODUCT_DIR)/generated_146.h'],1331          'action': [1332            'touch',1333            '<(PRODUCT_DIR)/generated_146.h',1334          ],1335        },1336        {1337          'action_name': 'do_147',1338          'inputs': [],1339          'outputs': ['<(PRODUCT_DIR)/generated_147.h'],1340          'action': [1341            'touch',1342            '<(PRODUCT_DIR)/generated_147.h',1343          ],1344        },1345        {1346          'action_name': 'do_148',1347          'inputs': [],1348          'outputs': ['<(PRODUCT_DIR)/generated_148.h'],1349          'action': [1350            'touch',1351            '<(PRODUCT_DIR)/generated_148.h',1352          ],1353        },1354        {1355          'action_name': 'do_149',1356          'inputs': [],1357          'outputs': ['<(PRODUCT_DIR)/generated_149.h'],1358          'action': [1359            'touch',1360            '<(PRODUCT_DIR)/generated_149.h',1361          ],1362        },1363        {1364          'action_name': 'do_150',1365          'inputs': [],1366          'outputs': ['<(PRODUCT_DIR)/generated_150.h'],1367          'action': [1368            'touch',1369            '<(PRODUCT_DIR)/generated_150.h',1370          ],1371        },1372        {1373          'action_name': 'do_151',1374          'inputs': [],1375          'outputs': ['<(PRODUCT_DIR)/generated_151.h'],1376          'action': [1377            'touch',1378            '<(PRODUCT_DIR)/generated_151.h',1379          ],1380        },1381        {1382          'action_name': 'do_152',1383          'inputs': [],1384          'outputs': ['<(PRODUCT_DIR)/generated_152.h'],1385          'action': [1386            'touch',1387            '<(PRODUCT_DIR)/generated_152.h',1388          ],1389        },1390        {1391          'action_name': 'do_153',1392          'inputs': [],1393          'outputs': ['<(PRODUCT_DIR)/generated_153.h'],1394          'action': [1395            'touch',1396            '<(PRODUCT_DIR)/generated_153.h',1397          ],1398        },1399        {1400          'action_name': 'do_154',1401          'inputs': [],1402          'outputs': ['<(PRODUCT_DIR)/generated_154.h'],1403          'action': [1404            'touch',1405            '<(PRODUCT_DIR)/generated_154.h',1406          ],1407        },1408        {1409          'action_name': 'do_155',1410          'inputs': [],1411          'outputs': ['<(PRODUCT_DIR)/generated_155.h'],1412          'action': [1413            'touch',1414            '<(PRODUCT_DIR)/generated_155.h',1415          ],1416        },1417        {1418          'action_name': 'do_156',1419          'inputs': [],1420          'outputs': ['<(PRODUCT_DIR)/generated_156.h'],1421          'action': [1422            'touch',1423            '<(PRODUCT_DIR)/generated_156.h',1424          ],1425        },1426        {1427          'action_name': 'do_157',1428          'inputs': [],1429          'outputs': ['<(PRODUCT_DIR)/generated_157.h'],1430          'action': [1431            'touch',1432            '<(PRODUCT_DIR)/generated_157.h',1433          ],1434        },1435        {1436          'action_name': 'do_158',1437          'inputs': [],1438          'outputs': ['<(PRODUCT_DIR)/generated_158.h'],1439          'action': [1440            'touch',1441            '<(PRODUCT_DIR)/generated_158.h',1442          ],1443        },1444        {1445          'action_name': 'do_159',1446          'inputs': [],1447          'outputs': ['<(PRODUCT_DIR)/generated_159.h'],1448          'action': [1449            'touch',1450            '<(PRODUCT_DIR)/generated_159.h',1451          ],1452        },1453        {1454          'action_name': 'do_160',1455          'inputs': [],1456          'outputs': ['<(PRODUCT_DIR)/generated_160.h'],1457          'action': [1458            'touch',1459            '<(PRODUCT_DIR)/generated_160.h',1460          ],1461        },1462        {1463          'action_name': 'do_161',1464          'inputs': [],1465          'outputs': ['<(PRODUCT_DIR)/generated_161.h'],1466          'action': [1467            'touch',1468            '<(PRODUCT_DIR)/generated_161.h',1469          ],1470        },1471        {1472          'action_name': 'do_162',1473          'inputs': [],1474          'outputs': ['<(PRODUCT_DIR)/generated_162.h'],1475          'action': [1476            'touch',1477            '<(PRODUCT_DIR)/generated_162.h',1478          ],1479        },1480        {1481          'action_name': 'do_163',1482          'inputs': [],1483          'outputs': ['<(PRODUCT_DIR)/generated_163.h'],1484          'action': [1485            'touch',1486            '<(PRODUCT_DIR)/generated_163.h',1487          ],1488        },1489        {1490          'action_name': 'do_164',1491          'inputs': [],1492          'outputs': ['<(PRODUCT_DIR)/generated_164.h'],1493          'action': [1494            'touch',1495            '<(PRODUCT_DIR)/generated_164.h',1496          ],1497        },1498        {1499          'action_name': 'do_165',1500          'inputs': [],1501          'outputs': ['<(PRODUCT_DIR)/generated_165.h'],1502          'action': [1503            'touch',1504            '<(PRODUCT_DIR)/generated_165.h',1505          ],1506        },1507        {1508          'action_name': 'do_166',1509          'inputs': [],1510          'outputs': ['<(PRODUCT_DIR)/generated_166.h'],1511          'action': [1512            'touch',1513            '<(PRODUCT_DIR)/generated_166.h',1514          ],1515        },1516        {1517          'action_name': 'do_167',1518          'inputs': [],1519          'outputs': ['<(PRODUCT_DIR)/generated_167.h'],1520          'action': [1521            'touch',1522            '<(PRODUCT_DIR)/generated_167.h',1523          ],1524        },1525        {1526          'action_name': 'do_168',1527          'inputs': [],1528          'outputs': ['<(PRODUCT_DIR)/generated_168.h'],1529          'action': [1530            'touch',1531            '<(PRODUCT_DIR)/generated_168.h',1532          ],1533        },1534        {1535          'action_name': 'do_169',1536          'inputs': [],1537          'outputs': ['<(PRODUCT_DIR)/generated_169.h'],1538          'action': [1539            'touch',1540            '<(PRODUCT_DIR)/generated_169.h',1541          ],1542        },1543        {1544          'action_name': 'do_170',1545          'inputs': [],1546          'outputs': ['<(PRODUCT_DIR)/generated_170.h'],1547          'action': [1548            'touch',1549            '<(PRODUCT_DIR)/generated_170.h',1550          ],1551        },1552        {1553          'action_name': 'do_171',1554          'inputs': [],1555          'outputs': ['<(PRODUCT_DIR)/generated_171.h'],1556          'action': [1557            'touch',1558            '<(PRODUCT_DIR)/generated_171.h',1559          ],1560        },1561        {1562          'action_name': 'do_172',1563          'inputs': [],1564          'outputs': ['<(PRODUCT_DIR)/generated_172.h'],1565          'action': [1566            'touch',1567            '<(PRODUCT_DIR)/generated_172.h',1568          ],1569        },1570        {1571          'action_name': 'do_173',1572          'inputs': [],1573          'outputs': ['<(PRODUCT_DIR)/generated_173.h'],1574          'action': [1575            'touch',1576            '<(PRODUCT_DIR)/generated_173.h',1577          ],1578        },1579        {1580          'action_name': 'do_174',1581          'inputs': [],1582          'outputs': ['<(PRODUCT_DIR)/generated_174.h'],1583          'action': [1584            'touch',1585            '<(PRODUCT_DIR)/generated_174.h',1586          ],1587        },1588        {1589          'action_name': 'do_175',1590          'inputs': [],1591          'outputs': ['<(PRODUCT_DIR)/generated_175.h'],1592          'action': [1593            'touch',1594            '<(PRODUCT_DIR)/generated_175.h',1595          ],1596        },1597        {1598          'action_name': 'do_176',1599          'inputs': [],1600          'outputs': ['<(PRODUCT_DIR)/generated_176.h'],1601          'action': [1602            'touch',1603            '<(PRODUCT_DIR)/generated_176.h',1604          ],1605        },1606        {1607          'action_name': 'do_177',1608          'inputs': [],1609          'outputs': ['<(PRODUCT_DIR)/generated_177.h'],1610          'action': [1611            'touch',1612            '<(PRODUCT_DIR)/generated_177.h',1613          ],1614        },1615        {1616          'action_name': 'do_178',1617          'inputs': [],1618          'outputs': ['<(PRODUCT_DIR)/generated_178.h'],1619          'action': [1620            'touch',1621            '<(PRODUCT_DIR)/generated_178.h',1622          ],1623        },1624        {1625          'action_name': 'do_179',1626          'inputs': [],1627          'outputs': ['<(PRODUCT_DIR)/generated_179.h'],1628          'action': [1629            'touch',1630            '<(PRODUCT_DIR)/generated_179.h',1631          ],1632        },1633        {1634          'action_name': 'do_180',1635          'inputs': [],1636          'outputs': ['<(PRODUCT_DIR)/generated_180.h'],1637          'action': [1638            'touch',1639            '<(PRODUCT_DIR)/generated_180.h',1640          ],1641        },1642        {1643          'action_name': 'do_181',1644          'inputs': [],1645          'outputs': ['<(PRODUCT_DIR)/generated_181.h'],1646          'action': [1647            'touch',1648            '<(PRODUCT_DIR)/generated_181.h',1649          ],1650        },1651        {1652          'action_name': 'do_182',1653          'inputs': [],1654          'outputs': ['<(PRODUCT_DIR)/generated_182.h'],1655          'action': [1656            'touch',1657            '<(PRODUCT_DIR)/generated_182.h',1658          ],1659        },1660        {1661          'action_name': 'do_183',1662          'inputs': [],1663          'outputs': ['<(PRODUCT_DIR)/generated_183.h'],1664          'action': [1665            'touch',1666            '<(PRODUCT_DIR)/generated_183.h',1667          ],1668        },1669        {1670          'action_name': 'do_184',1671          'inputs': [],1672          'outputs': ['<(PRODUCT_DIR)/generated_184.h'],1673          'action': [1674            'touch',1675            '<(PRODUCT_DIR)/generated_184.h',1676          ],1677        },1678        {1679          'action_name': 'do_185',1680          'inputs': [],1681          'outputs': ['<(PRODUCT_DIR)/generated_185.h'],1682          'action': [1683            'touch',1684            '<(PRODUCT_DIR)/generated_185.h',1685          ],1686        },1687        {1688          'action_name': 'do_186',1689          'inputs': [],1690          'outputs': ['<(PRODUCT_DIR)/generated_186.h'],1691          'action': [1692            'touch',1693            '<(PRODUCT_DIR)/generated_186.h',1694          ],1695        },1696        {1697          'action_name': 'do_187',1698          'inputs': [],1699          'outputs': ['<(PRODUCT_DIR)/generated_187.h'],1700          'action': [1701            'touch',1702            '<(PRODUCT_DIR)/generated_187.h',1703          ],1704        },1705        {1706          'action_name': 'do_188',1707          'inputs': [],1708          'outputs': ['<(PRODUCT_DIR)/generated_188.h'],1709          'action': [1710            'touch',1711            '<(PRODUCT_DIR)/generated_188.h',1712          ],1713        },1714        {1715          'action_name': 'do_189',1716          'inputs': [],1717          'outputs': ['<(PRODUCT_DIR)/generated_189.h'],1718          'action': [1719            'touch',1720            '<(PRODUCT_DIR)/generated_189.h',1721          ],1722        },1723        {1724          'action_name': 'do_190',1725          'inputs': [],1726          'outputs': ['<(PRODUCT_DIR)/generated_190.h'],1727          'action': [1728            'touch',1729            '<(PRODUCT_DIR)/generated_190.h',1730          ],1731        },1732        {1733          'action_name': 'do_191',1734          'inputs': [],1735          'outputs': ['<(PRODUCT_DIR)/generated_191.h'],1736          'action': [1737            'touch',1738            '<(PRODUCT_DIR)/generated_191.h',1739          ],1740        },1741        {1742          'action_name': 'do_192',1743          'inputs': [],1744          'outputs': ['<(PRODUCT_DIR)/generated_192.h'],1745          'action': [1746            'touch',1747            '<(PRODUCT_DIR)/generated_192.h',1748          ],1749        },1750        {1751          'action_name': 'do_193',1752          'inputs': [],1753          'outputs': ['<(PRODUCT_DIR)/generated_193.h'],1754          'action': [1755            'touch',1756            '<(PRODUCT_DIR)/generated_193.h',1757          ],1758        },1759        {1760          'action_name': 'do_194',1761          'inputs': [],1762          'outputs': ['<(PRODUCT_DIR)/generated_194.h'],1763          'action': [1764            'touch',1765            '<(PRODUCT_DIR)/generated_194.h',1766          ],1767        },1768        {1769          'action_name': 'do_195',1770          'inputs': [],1771          'outputs': ['<(PRODUCT_DIR)/generated_195.h'],1772          'action': [1773            'touch',1774            '<(PRODUCT_DIR)/generated_195.h',1775          ],1776        },1777        {1778          'action_name': 'do_196',1779          'inputs': [],1780          'outputs': ['<(PRODUCT_DIR)/generated_196.h'],1781          'action': [1782            'touch',1783            '<(PRODUCT_DIR)/generated_196.h',1784          ],1785        },1786        {1787          'action_name': 'do_197',1788          'inputs': [],1789          'outputs': ['<(PRODUCT_DIR)/generated_197.h'],1790          'action': [1791            'touch',1792            '<(PRODUCT_DIR)/generated_197.h',1793          ],1794        },1795        {1796          'action_name': 'do_198',1797          'inputs': [],1798          'outputs': ['<(PRODUCT_DIR)/generated_198.h'],1799          'action': [1800            'touch',1801            '<(PRODUCT_DIR)/generated_198.h',1802          ],1803        },1804        {1805          'action_name': 'do_199',1806          'inputs': [],1807          'outputs': ['<(PRODUCT_DIR)/generated_199.h'],1808          'action': [1809            'touch',1810            '<(PRODUCT_DIR)/generated_199.h',1811          ],1812        },1813      ],1814    },1815  ],...pinch_tester.js
Source:pinch_tester.js  
...93    }94  });95  function testZoomOut() {96    pincher.reset();97    var t = new touch();98    // Make sure start event doesn't change state99    var oldState = pincher.status();100    t.addTouchPoint(100, 100);101    pincher.handleTouchStart(t.events());102    assertEqual(oldState, pincher.status());103    t.addTouchPoint(300, 300);104    pincher.handleTouchStart(t.events());105    assertEqual(oldState, pincher.status());106    // Make sure extra move event doesn't change state107    pincher.handleTouchMove(t.events());108    assertEqual(oldState, pincher.status());109    t.updateTouchPoint(0, 150, 150);110    t.updateTouchPoint(1, 250, 250);111    pincher.handleTouchMove(t.events());112    assertTrue(pincher.status().clampedScale < 0.9);113    // Make sure end event doesn't change state114    oldState = pincher.status();115    t.releaseTouchPoint(1);116    pincher.handleTouchEnd(t.events());117    assertEqual(oldState, pincher.status());118    t.releaseTouchPoint(0);119    pincher.handleTouchEnd(t.events());120    assertEqual(oldState, pincher.status());121  }122  function testZoomIn() {123    pincher.reset();124    var t = new touch();125    var oldState = pincher.status();126    t.addTouchPoint(150, 150);127    pincher.handleTouchStart(t.events());128    assertEqual(oldState, pincher.status());129    t.addTouchPoint(250, 250);130    pincher.handleTouchStart(t.events());131    assertEqual(oldState, pincher.status());132    t.updateTouchPoint(0, 100, 100);133    t.updateTouchPoint(1, 300, 300);134    pincher.handleTouchMove(t.events());135    assertTrue(pincher.status().clampedScale > 1.1);136    oldState = pincher.status();137    t.releaseTouchPoint(1);138    pincher.handleTouchEnd(t.events());139    assertEqual(oldState, pincher.status());140    t.releaseTouchPoint(0);141    pincher.handleTouchEnd(t.events());142    assertEqual(oldState, pincher.status());143  }144  function testZoomOutAndPan() {145    pincher.reset();146    var t = new touch();147    t.addTouchPoint(100, 100);148    pincher.handleTouchStart(t.events());149    t.addTouchPoint(300, 300);150    pincher.handleTouchStart(t.events());151    t.updateTouchPoint(0, 150, 150);152    t.updateTouchPoint(1, 250, 250);153    pincher.handleTouchMove(t.events());154    t.updateTouchPoint(0, 150, 150, 10, -5);155    t.updateTouchPoint(1, 250, 250, 10, -5);156    pincher.handleTouchMove(t.events());157    t.releaseTouchPoint(1);158    pincher.handleTouchEnd(t.events());159    t.releaseTouchPoint(0);160    pincher.handleTouchEnd(t.events());161    assertClose(pincher.status().shiftX, 10);162    assertClose(pincher.status().shiftY, -5);163    assertTrue(pincher.status().clampedScale < 0.9);164  }165  function testReversible() {166    pincher.reset();167    var t = new touch();168    t.addTouchPoint(100, 100);169    pincher.handleTouchStart(t.events());170    t.addTouchPoint(300, 300);171    pincher.handleTouchStart(t.events());172    t.updateTouchPoint(0, 0, 0);173    t.updateTouchPoint(1, 400, 400);174    pincher.handleTouchMove(t.events());175    t.releaseTouchPoint(1);176    pincher.handleTouchEnd(t.events());177    t.releaseTouchPoint(0);178    pincher.handleTouchEnd(t.events());179    t.addTouchPoint(0, 0);180    pincher.handleTouchStart(t.events());181    t.addTouchPoint(400, 400);182    pincher.handleTouchStart(t.events());183    t.updateTouchPoint(0, 100, 100);184    t.updateTouchPoint(1, 300, 300);185    pincher.handleTouchMove(t.events());186    t.releaseTouchPoint(1);187    pincher.handleTouchEnd(t.events());188    t.releaseTouchPoint(0);189    pincher.handleTouchEnd(t.events());190    assertClose(pincher.status().clampedScale, 1);191  }192  function testMultitouchZoomOut() {193    pincher.reset();194    var t = new touch();195    var oldState = pincher.status();196    t.addTouchPoint(100, 100);197    pincher.handleTouchStart(t.events());198    assertEqual(oldState, pincher.status());199    t.addTouchPoint(300, 300);200    pincher.handleTouchStart(t.events());201    assertEqual(oldState, pincher.status());202    t.addTouchPoint(100, 300);203    pincher.handleTouchStart(t.events());204    assertEqual(oldState, pincher.status());205    t.addTouchPoint(300, 100);206    pincher.handleTouchStart(t.events());207    assertEqual(oldState, pincher.status());208    // Multi-touch zoom out.209    t.updateTouchPoint(0, 150, 150);210    t.updateTouchPoint(1, 250, 250);211    t.updateTouchPoint(2, 150, 250);212    t.updateTouchPoint(3, 250, 150);213    pincher.handleTouchMove(t.events());214    oldState = pincher.status();215    t.releaseTouchPoint(3);216    pincher.handleTouchEnd(t.events());217    assertEqual(oldState, pincher.status());218    t.releaseTouchPoint(2);219    pincher.handleTouchEnd(t.events());220    assertEqual(oldState, pincher.status());221    t.releaseTouchPoint(1);222    pincher.handleTouchEnd(t.events());223    assertEqual(oldState, pincher.status());224    t.releaseTouchPoint(0);225    pincher.handleTouchEnd(t.events());226    assertEqual(oldState, pincher.status());227    assertTrue(pincher.status().clampedScale < 0.9);228  }229  function testZoomOutThenMulti() {230    pincher.reset();231    var t = new touch();232    var oldState = pincher.status();233    t.addTouchPoint(100, 100);234    pincher.handleTouchStart(t.events());235    assertEqual(oldState, pincher.status());236    t.addTouchPoint(300, 300);237    pincher.handleTouchStart(t.events());238    assertEqual(oldState, pincher.status());239    // Zoom out.240    t.updateTouchPoint(0, 150, 150);241    t.updateTouchPoint(1, 250, 250);242    pincher.handleTouchMove(t.events());243    assertTrue(pincher.status().clampedScale < 0.9);244    // Make sure adding and removing more point doesn't change state245    oldState = pincher.status();246    t.addTouchPoint(600, 600);247    pincher.handleTouchStart(t.events());248    assertEqual(oldState, pincher.status());249    t.releaseTouchPoint(2);250    pincher.handleTouchEnd(t.events());251    assertEqual(oldState, pincher.status());252    // More than two fingers.253    t.addTouchPoint(150, 250);254    pincher.handleTouchStart(t.events());255    t.addTouchPoint(250, 150);256    pincher.handleTouchStart(t.events());257    assertEqual(oldState, pincher.status());258    t.updateTouchPoint(0, 100, 100);259    t.updateTouchPoint(1, 300, 300);260    t.updateTouchPoint(2, 100, 300);261    t.updateTouchPoint(3, 300, 100);262    pincher.handleTouchMove(t.events());263    assertClose(pincher.status().scale, 1);264    oldState = pincher.status();265    t.releaseTouchPoint(3);266    t.releaseTouchPoint(2);267    t.releaseTouchPoint(1);268    t.releaseTouchPoint(0);269    pincher.handleTouchEnd(t.events());270    assertEqual(oldState, pincher.status());271  }272  function testCancel() {273    pincher.reset();274    var t = new touch();275    t.addTouchPoint(100, 100);276    pincher.handleTouchStart(t.events());277    t.addTouchPoint(300, 300);278    pincher.handleTouchStart(t.events());279    t.updateTouchPoint(0, 150, 150);280    t.updateTouchPoint(1, 250, 250);281    pincher.handleTouchMove(t.events());282    assertTrue(pincher.status().clampedScale < 0.9);283    var oldState = pincher.status();284    t.releaseTouchPoint(1);285    t.releaseTouchPoint(0);286    pincher.handleTouchCancel(t.events());287    assertEqual(oldState, pincher.status());288    t.addTouchPoint(150, 150);289    pincher.handleTouchStart(t.events());290    t.addTouchPoint(250, 250);291    pincher.handleTouchStart(t.events());292    t.updateTouchPoint(0, 100, 100);293    t.updateTouchPoint(1, 300, 300);294    pincher.handleTouchMove(t.events());295    assertClose(pincher.status().clampedScale, 1);296  }297  function testSingularity() {298    pincher.reset();299    var t = new touch();300    t.addTouchPoint(100, 100);301    pincher.handleTouchStart(t.events());302    t.addTouchPoint(100, 100);303    pincher.handleTouchStart(t.events());304    t.updateTouchPoint(0, 150, 150);305    t.updateTouchPoint(1, 50, 50);306    pincher.handleTouchMove(t.events());307    assertTrue(pincher.status().clampedScale > 1.1);308    assertTrue(pincher.status().clampedScale < 100);309    assertTrue(pincher.status().scale < 100);310    pincher.handleTouchCancel();311  }312  function testMinSpan() {313    pincher.reset();314    var t = new touch();315    t.addTouchPoint(50, 50);316    pincher.handleTouchStart(t.events());317    t.addTouchPoint(150, 150);318    pincher.handleTouchStart(t.events());319    t.updateTouchPoint(0, 100, 100);320    t.updateTouchPoint(1, 100, 100);321    pincher.handleTouchMove(t.events());322    assertTrue(pincher.status().clampedScale < 0.9);323    assertTrue(pincher.status().clampedScale > 0);324    assertTrue(pincher.status().scale > 0);325    pincher.handleTouchCancel();326  }327  function testFontScaling() {328    pincher.reset();329    useFontScaling(1.5);330    assertClose(pincher.status().clampedScale, 1.5);331    var t = new touch();332    // Start touch.333    var oldState = pincher.status();334    t.addTouchPoint(100, 100);335    pincher.handleTouchStart(t.events());336    t.addTouchPoint(300, 300);337    pincher.handleTouchStart(t.events());338    // Pinch to zoom out.339    t.updateTouchPoint(0, 150, 150);340    t.updateTouchPoint(1, 250, 250);341    pincher.handleTouchMove(t.events());342    // Verify scale is smaller.343    assertTrue(pincher.status().clampedScale < 0.9 * oldState.clampedScale);344    pincher.handleTouchCancel();345    useFontScaling(0.8);346    assertClose(pincher.status().clampedScale, 0.8);347    // Start touch.348    t = new touch();349    oldState = pincher.status();350    t.addTouchPoint(150, 150);351    pincher.handleTouchStart(t.events());352    t.addTouchPoint(250, 250);353    pincher.handleTouchStart(t.events());354    // Pinch to zoom in.355    t.updateTouchPoint(0, 100, 100);356    t.updateTouchPoint(1, 300, 300);357    pincher.handleTouchMove(t.events());358    // Verify scale is larger.359    assertTrue(pincher.status().clampedScale > 1.1 * oldState.clampedScale);360    pincher.handleTouchCancel();361  }362  return {...touch-emulator.js
Source:touch-emulator.js  
1(function(window, document, exportName, undefined) {2    "use strict";3    var isMultiTouch = false;4    var multiTouchStartPos;5    var eventTarget;6    var touchElements = {};7    // polyfills8    if(!document.createTouch) {9        document.createTouch = function(view, target, identifier, pageX, pageY, screenX, screenY, clientX, clientY) {10            // auto set11            if(clientX == undefined || clientY == undefined) {12                clientX = pageX - window.pageXOffset;13                clientY = pageY - window.pageYOffset;14            }15            return new Touch(target, identifier, {16                pageX: pageX,17                pageY: pageY,18                screenX: screenX,19                screenY: screenY,20                clientX: clientX,21                clientY: clientY22            });23        };24    }25    if(!document.createTouchList) {26        document.createTouchList = function() {27            var touchList = new TouchList();28            for (var i = 0; i < arguments.length; i++) {29                touchList[i] = arguments[i];30            }31            touchList.length = arguments.length;32            return touchList;33        };34    }35    /**36     * create an touch point37     * @constructor38     * @param target39     * @param identifier40     * @param pos41     * @param deltaX42     * @param deltaY43     * @returns {Object} touchPoint44     */45    function Touch(target, identifier, pos, deltaX, deltaY) {46        deltaX = deltaX || 0;47        deltaY = deltaY || 0;48        this.identifier = identifier;49        this.target = target;50        this.clientX = pos.clientX + deltaX;51        this.clientY = pos.clientY + deltaY;52        this.screenX = pos.screenX + deltaX;53        this.screenY = pos.screenY + deltaY;54        this.pageX = pos.pageX + deltaX;55        this.pageY = pos.pageY + deltaY;56    }57    /**58     * create empty touchlist with the methods59     * @constructor60     * @returns touchList61     */62    function TouchList() {63        var touchList = [];64        touchList.item = function(index) {65            return this[index] || null;66        };67        // specified by Mozilla68        touchList.identifiedTouch = function(id) {69            return this[id + 1] || null;70        };71        return touchList;72    }73    /**74     * Simple trick to fake touch event support75     * this is enough for most libraries like Modernizr and Hammer76     */77    function fakeTouchSupport() {78        var objs = [window, document.documentElement];79        var props = ['ontouchstart', 'ontouchmove', 'ontouchcancel', 'ontouchend'];80        for(var o=0; o<objs.length; o++) {81            for(var p=0; p<props.length; p++) {82                if(objs[o] && objs[o][props[p]] == undefined) {83                    objs[o][props[p]] = null;84                }85            }86        }87    }88    /**89     * we don't have to emulate on a touch device90     * @returns {boolean}91     */92    function hasTouchSupport() {93        return ("ontouchstart" in window) || // touch events94               (window.Modernizr && window.Modernizr.touch) || // modernizr95               (navigator.msMaxTouchPoints || navigator.maxTouchPoints) > 2; // pointer events96    }97    /**98     * disable mouseevents on the page99     * @param ev100     */101    function preventMouseEvents(ev) {102		// 注éå¯ç¨é»è®¤äºä»¶103        // ev.preventDefault();104        // ev.stopPropagation();105    }106    /**107     * only trigger touches when the left mousebutton has been pressed108     * @param touchType109     * @returns {Function}110     */111    function onMouse(touchType) {112        return function(ev) {113            // prevent mouse events114            preventMouseEvents(ev);115            if (ev.which !== 1) {116                return;117            }118            // The EventTarget on which the touch point started when it was first placed on the surface,119            // even if the touch point has since moved outside the interactive area of that element.120            // also, when the target doesnt exist anymore, we update it121            if (ev.type == 'mousedown' || !eventTarget || (eventTarget && !eventTarget.dispatchEvent)) {122                eventTarget = ev.target;123            }124            // shiftKey has been lost, so trigger a touchend125            if (isMultiTouch && !ev.shiftKey) {126                triggerTouch('touchend', ev);127                isMultiTouch = false;128            }129            triggerTouch(touchType, ev);130            // we're entering the multi-touch mode!131            if (!isMultiTouch && ev.shiftKey) {132                isMultiTouch = true;133                multiTouchStartPos = {134                    pageX: ev.pageX,135                    pageY: ev.pageY,136                    clientX: ev.clientX,137                    clientY: ev.clientY,138                    screenX: ev.screenX,139                    screenY: ev.screenY140                };141                triggerTouch('touchstart', ev);142            }143            // reset144            if (ev.type == 'mouseup') {145                multiTouchStartPos = null;146                isMultiTouch = false;147                eventTarget = null;148            }149        }150    }151    /**152     * trigger a touch event153     * @param eventName154     * @param mouseEv155     */156    function triggerTouch(eventName, mouseEv) {157        var touchEvent = document.createEvent('Event');158        touchEvent.initEvent(eventName, true, true);159        touchEvent.altKey = mouseEv.altKey;160        touchEvent.ctrlKey = mouseEv.ctrlKey;161        touchEvent.metaKey = mouseEv.metaKey;162        touchEvent.shiftKey = mouseEv.shiftKey;163        touchEvent.touches = getActiveTouches(mouseEv, eventName);164        touchEvent.targetTouches = getActiveTouches(mouseEv, eventName);165        touchEvent.changedTouches = getChangedTouches(mouseEv, eventName);166        eventTarget.dispatchEvent(touchEvent);167    }168    /**169     * create a touchList based on the mouse event170     * @param mouseEv171     * @returns {TouchList}172     */173    function createTouchList(mouseEv) {174        var touchList = new TouchList();175        if (isMultiTouch) {176            var f = TouchEmulator.multiTouchOffset;177            var deltaX = multiTouchStartPos.pageX - mouseEv.pageX;178            var deltaY = multiTouchStartPos.pageY - mouseEv.pageY;179            touchList.push(new Touch(eventTarget, 1, multiTouchStartPos, (deltaX*-1) - f, (deltaY*-1) + f));180            touchList.push(new Touch(eventTarget, 2, multiTouchStartPos, deltaX+f, deltaY-f));181        } else {182            touchList.push(new Touch(eventTarget, 1, mouseEv, 0, 0));183        }184        return touchList;185    }186    /**187     * receive all active touches188     * @param mouseEv189     * @returns {TouchList}190     */191    function getActiveTouches(mouseEv, eventName) {192        // empty list193        if (mouseEv.type == 'mouseup') {194            return new TouchList();195        }196        var touchList = createTouchList(mouseEv);197        if(isMultiTouch && mouseEv.type != 'mouseup' && eventName == 'touchend') {198            touchList.splice(1, 1);199        }200        return touchList;201    }202    /**203     * receive a filtered set of touches with only the changed pointers204     * @param mouseEv205     * @param eventName206     * @returns {TouchList}207     */208    function getChangedTouches(mouseEv, eventName) {209        var touchList = createTouchList(mouseEv);210        // we only want to return the added/removed item on multitouch211        // which is the second pointer, so remove the first pointer from the touchList212        //213        // but when the mouseEv.type is mouseup, we want to send all touches because then214        // no new input will be possible215        if(isMultiTouch && mouseEv.type != 'mouseup' &&216            (eventName == 'touchstart' || eventName == 'touchend')) {217            touchList.splice(0, 1);218        }219        return touchList;220    }221    /**222     * show the touchpoints on the screen223     */224    function showTouches(ev) {225        var touch, i, el, styles;226        // first all visible touches227        for(i = 0; i < ev.touches.length; i++) {228            touch = ev.touches[i];229            el = touchElements[touch.identifier];230            if(!el) {231                el = touchElements[touch.identifier] = document.createElement("div");232                document.body.appendChild(el);233            }234            styles = TouchEmulator.template(touch);235            for(var prop in styles) {236                el.style[prop] = styles[prop];237            }238        }239        // remove all ended touches240        if(ev.type == 'touchend' || ev.type == 'touchcancel') {241            for(i = 0; i < ev.changedTouches.length; i++) {242                touch = ev.changedTouches[i];243                el = touchElements[touch.identifier];244                if(el) {245                    el.parentNode.removeChild(el);246                    delete touchElements[touch.identifier];247                }248            }249        }250    }251    /**252     * TouchEmulator initializer253     */254    function TouchEmulator() {255        if (hasTouchSupport()) {256            return;257        }258        fakeTouchSupport();259        window.addEventListener("mousedown", onMouse('touchstart'), true);260        window.addEventListener("mousemove", onMouse('touchmove'), true);261        window.addEventListener("mouseup", onMouse('touchend'), true);262        window.addEventListener("mouseenter", preventMouseEvents, true);263        window.addEventListener("mouseleave", preventMouseEvents, true);264        window.addEventListener("mouseout", preventMouseEvents, true);265        window.addEventListener("mouseover", preventMouseEvents, true);266        // it uses itself!267        window.addEventListener("touchstart", showTouches, true);268        window.addEventListener("touchmove", showTouches, true);269        window.addEventListener("touchend", showTouches, true);270        window.addEventListener("touchcancel", showTouches, true);271    }272    // start distance when entering the multitouch mode273    TouchEmulator.multiTouchOffset = 75;274    /**275     * css template for the touch rendering276     * @param touch277     * @returns object278     */279    TouchEmulator.template = function(touch) {280        var size = 0;281        var transform = 'translate('+ (touch.clientX-(size/2)) +'px, '+ (touch.clientY-(size/2)) +'px)';282        return {283            position: 'fixed',284            left: 0,285            top: 0,286            background: '#fff',287            border: 'solid 1px #999',288            opacity: .6,289            borderRadius: '100%',290            height: size + 'px',291            width: size + 'px',292            padding: 0,293            margin: 0,294            display: 'block',295            overflow: 'hidden',296            pointerEvents: 'none',297            webkitUserSelect: 'none',298            mozUserSelect: 'none',299            userSelect: 'none',300            webkitTransform: transform,301            mozTransform: transform,302            transform: transform,303            zIndex: 100304        }305    };306    // export307    if (typeof define == "function" && define.amd) {308        define(function() {309            return TouchEmulator;310        });311    } else if (typeof module != "undefined" && module.exports) {312        module.exports = TouchEmulator;313    } else {314        window[exportName] = TouchEmulator;315    }...TouchInteractionSupport.js
Source:TouchInteractionSupport.js  
1define([2	"dojo/_base/lang",3	"dojo/_base/declare",4	"dojo/_base/event",5	"dojo/_base/connect",6	"dojo/_base/window"7], function(lang,declare,event,connect,win){8	return declare("dojox.geo.charting.TouchInteractionSupport",null, {9		// summary:10		//		A class to handle touch interactions on a dojox/geo/charting/Map component.11		// tags:12		//		private13		_map: null,14		_centerTouchLocation: null,15		_touchMoveListener: null,16		_touchEndListener: null,17		_touchEndTapListener: null,18		_touchStartListener: null,19		_initialFingerSpacing: null,20		_initialScale: null,21		_tapCount: null,22		_tapThreshold: null,23		_lastTap: null,24		_doubleTapPerformed:false,25		_oneFingerTouch:false,26		_tapCancel:false,27		constructor: function(map){28			// summary:29			//		Constructs a new _TouchInteractionSupport instance30			// map: dojox.geo.charting.Map31			//		the Map widget this class provides touch navigation for.32			this._map = map;33			this._centerTouchLocation = {x: 0,y: 0};34			this._tapCount = 0;35			this._lastTap = {x: 0,y: 0};36			this._tapThreshold = 100; // square distance in pixels37		},38		connect: function(){39			// summary:40			//		install touch listeners41			this._touchStartListener = this._map.surface.connect("touchstart", this, this._touchStartHandler);42		},43		disconnect: function(){44			// summary:45			//		disconnects any installed listeners. Must be called only when disposing of this instance46			if(this._touchStartListener){47				connect.disconnect(this._touchStartListener);48				this._touchStartListener = null;49			}50		},51		_getTouchBarycenter: function(touchEvent){52			// summary:53			//		returns the midpoint of the two first fingers (or the first finger location if only one)54			// touchEvent: TouchEvent55			//		a touch event56			// returns:57			//		the midpoint58			// tags:59			//		private60			var touches = touchEvent.touches;61			var firstTouch = touches[0];62			var secondTouch = null;63			if(touches.length > 1){64				secondTouch = touches[1];65			}else{66				secondTouch = touches[0];67			}68			var containerBounds = this._map._getContainerBounds();69			var middleX = (firstTouch.pageX + secondTouch.pageX) / 2.0 - containerBounds.x;70			var middleY = (firstTouch.pageY + secondTouch.pageY) / 2.0 - containerBounds.y;71			return {x: middleX,y: middleY}; // dojox/gfx/Point72		},73		_getFingerSpacing: function(touchEvent){74			// summary:75			//		computes the distance between the first two fingers76			// touchEvent: a touch event77			// returns:78			//		a distance. -1 if less than 2 fingers79			// tags:80			//		private81			var touches = touchEvent.touches;82			var spacing = -1;83			if(touches.length >= 2){84				var dx = (touches[1].pageX - touches[0].pageX);85				var dy = (touches[1].pageY - touches[0].pageY);86				spacing = Math.sqrt(dx*dx + dy*dy);87			}88			return spacing;89		},90		_isDoubleTap: function(touchEvent){91			// summary:92			//		checks whether the specified touchStart event is a double tap93			//		(i.e. follows closely a previous touchStart at approximately the same location)94			// touchEvent: TouchEvent95			//		a touch event96			// returns:97			//		true if this event is considered a double tap98			// tags:99			//		private100			var isDoubleTap = false;101			var touches = touchEvent.touches;102			if((this._tapCount > 0) && touches.length == 1){103				// test distance from last tap104				var dx = (touches[0].pageX - this._lastTap.x);105				var dy = (touches[0].pageY - this._lastTap.y);106				var distance = dx*dx + dy*dy;107				if(distance < this._tapThreshold){108					isDoubleTap = true;109				}else{110					this._tapCount = 0;111				}112			}113			this._tapCount++;114			this._lastTap.x = touches[0].pageX;115			this._lastTap.y = touches[0].pageY;116			setTimeout(lang.hitch(this,function(){117				this._tapCount = 0;}),300);118			return isDoubleTap;119		},120		_doubleTapHandler: function(touchEvent){121			// summary:122			//		action performed on the map when a double tap was triggered123			// touchEvent: TouchEvent124			//		a touch event125			// tags:126			//		private127			var feature = this._getFeatureFromTouchEvent(touchEvent);128			if(feature){129				this._map.fitToMapArea(feature._bbox, 15, true);130			}else{131				// perform a basic 2x zoom on touch132				var touches = touchEvent.touches;133				var containerBounds = this._map._getContainerBounds();134				var offX = touches[0].pageX - containerBounds.x;135				var offY = touches[0].pageY - containerBounds.y;136				// clicked map point before zooming137				var mapPoint = this._map.screenCoordsToMapCoords(offX,offY);138				// zoom increment power139				this._map.setMapCenterAndScale(mapPoint.x, mapPoint.y,this._map.getMapScale()*2,true);140			}141		},142		_getFeatureFromTouchEvent: function(touchEvent){143			// summary:144			//		utility function to return the feature located at this touch event location145			// touchEvent: TouchEvent146			//		a touch event147			// returns:148			//		the feature found if any, null otherwise.149			// tags:150			//		private151			var feature = null;152			if(touchEvent.gfxTarget && touchEvent.gfxTarget.getParent){153				feature = this._map.mapObj.features[touchEvent.gfxTarget.getParent().id];154			}155			return feature;	// dojox/geo/charting/Feature156		},157		_touchStartHandler: function(touchEvent){158			// summary:159			//		action performed on the map when a touch start was triggered160			// touchEvent: TouchEvent161			//		a touch event162			// tags:163			//		private164			event.stop(touchEvent);165			this._oneFingerTouch = (touchEvent.touches.length == 1);166			this._tapCancel = !this._oneFingerTouch;167			// test double tap168			this._doubleTapPerformed = false;169			if(this._isDoubleTap(touchEvent)){170				//console.log("double tap recognized");171				this._doubleTapHandler(touchEvent);172				this._doubleTapPerformed = true;173				return;174			}175			// compute map midpoint between fingers176			var middlePoint = this._getTouchBarycenter(touchEvent);177			var mapPoint = this._map.screenCoordsToMapCoords(middlePoint.x,middlePoint.y);178			this._centerTouchLocation.x = mapPoint.x;179			this._centerTouchLocation.y = mapPoint.y;180			// store initial finger spacing to compute zoom later181			this._initialFingerSpacing = this._getFingerSpacing(touchEvent);182			// store initial map scale183			this._initialScale = this._map.getMapScale();184			// install touch move and up listeners (if not done by other fingers before)185			if(!this._touchMoveListener){186				this._touchMoveListener = connect.connect(win.global,"touchmove",this,this._touchMoveHandler);187			}188			if(!this._touchEndTapListener){189				this._touchEndTapListener = this._map.surface.connect("touchend", this, this._touchEndTapHandler);190			}191			if(!this._touchEndListener){192				this._touchEndListener = connect.connect(win.global,"touchend",this, this._touchEndHandler);193			}194		},195		_touchEndTapHandler: function(touchEvent){196			// summary:197			//		action performed on the map when a tap was triggered198			// touchEvent: TouchEvent199			//		a touch event200			// tags:201			//		private202			var touches = touchEvent.touches;203			if(touches.length == 0){204				// test potential tap ?205				if(this._oneFingerTouch && !this._tapCancel){206					this._oneFingerTouch = false;207					setTimeout(lang.hitch(this,function(){208						// wait to check if double tap209						// perform test for single tap210						//console.log("double tap was performed ? " + this._doubleTapPerformed);211						if(!this._doubleTapPerformed){212							// test distance from last tap213							var dx = (touchEvent.changedTouches[0].pageX - this._lastTap.x);214							var dy = (touchEvent.changedTouches[0].pageY - this._lastTap.y);215							var distance = dx*dx + dy*dy;216							if(distance < this._tapThreshold){217								// single tap ok218								this._singleTapHandler(touchEvent);219							}220						}221					}), 350);222				}223				this._tapCancel = false;224			}225		},226		_touchEndHandler: function(touchEvent){227			// summary:228			//		action performed on the map when a touch end was triggered229			// touchEvent: TouchEvent230			//		a touch event231			// tags:232			//		private233			event.stop(touchEvent);234			var touches = touchEvent.touches;235			if(touches.length == 0){236				// disconnect listeners only when all fingers are up237				if(this._touchMoveListener){238					connect.disconnect(this._touchMoveListener);239					this._touchMoveListener = null;240				}241				if(this._touchEndListener){242					connect.disconnect(this._touchEndListener);243					this._touchEndListener = null;244				}245			}else{246				// recompute touch center247				var middlePoint = this._getTouchBarycenter(touchEvent);248				var mapPoint = this._map.screenCoordsToMapCoords(middlePoint.x,middlePoint.y);249				this._centerTouchLocation.x = mapPoint.x;250				this._centerTouchLocation.y = mapPoint.y;251			}252		},253		_singleTapHandler: function(touchEvent){254			// summary:255			//		action performed on the map when a single tap was triggered256			// touchEvent: TouchEvent257			//		a touch event258			// tags:259			//		private260			var feature = this._getFeatureFromTouchEvent(touchEvent);261			if(feature){262				// call feature handler263				feature._onclickHandler(touchEvent);264			}else{265				// unselect all266				for(var name in this._map.mapObj.features){267					this._map.mapObj.features[name].select(false);268				}269				this._map.onFeatureClick(null);270			}271		},272		_touchMoveHandler: function(touchEvent){273			// summary:274			//		action performed on the map when a touch move was triggered275			// touchEvent: TouchEvent276			//		a touch event277			// tags:278			//		private279			// prevent browser interaction280			event.stop(touchEvent);281			// cancel tap if moved too far from first touch location282			if(!this._tapCancel){283				var dx = (touchEvent.touches[0].pageX - this._lastTap.x),284					dy = (touchEvent.touches[0].pageY - this._lastTap.y);285				var distance = dx*dx + dy*dy;286				if(distance > this._tapThreshold){287					this._tapCancel = true;288				}289			}290			var middlePoint = this._getTouchBarycenter(touchEvent);291			// compute map offset292			var mapPoint = this._map.screenCoordsToMapCoords(middlePoint.x,middlePoint.y),293				mapOffsetX = mapPoint.x - this._centerTouchLocation.x,294				mapOffsetY = mapPoint.y - this._centerTouchLocation.y;295			// compute scale factor296			var scaleFactor = 1;297			var touches = touchEvent.touches;298			if(touches.length >= 2){299				var fingerSpacing = this._getFingerSpacing(touchEvent);300				scaleFactor = fingerSpacing / this._initialFingerSpacing;301				// scale map302				this._map.setMapScale(this._initialScale*scaleFactor);303			}304			// adjust map center on barycentre305			var currentMapCenter = this._map.getMapCenter();306			this._map.setMapCenter(currentMapCenter.x - mapOffsetX, currentMapCenter.y - mapOffsetY);307		}308	});...Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!
