tabs.py revision f2477e01787aa58f445919b809d89e252beef54f
1810cf1767dc8df4783e02ba8a712072f50ddc99efgalligan@chromium.org# Copyright 2013 The Chromium Authors. All rights reserved.
2810cf1767dc8df4783e02ba8a712072f50ddc99efgalligan@chromium.org# Use of this source code is governed by a BSD-style license that can be
3810cf1767dc8df4783e02ba8a712072f50ddc99efgalligan@chromium.org# found in the LICENSE file.
4810cf1767dc8df4783e02ba8a712072f50ddc99efgalligan@chromium.org
5810cf1767dc8df4783e02ba8a712072f50ddc99efgalligan@chromium.orgimport json
6810cf1767dc8df4783e02ba8a712072f50ddc99efgalligan@chromium.org
7810cf1767dc8df4783e02ba8a712072f50ddc99efgalligan@chromium.orgfrom extensions_paths import EXTENSIONS
8810cf1767dc8df4783e02ba8a712072f50ddc99efgalligan@chromium.orgfrom test_file_system import MoveAllTo
9810cf1767dc8df4783e02ba8a712072f50ddc99efgalligan@chromium.org
10810cf1767dc8df4783e02ba8a712072f50ddc99efgalligan@chromium.org
11810cf1767dc8df4783e02ba8a712072f50ddc99efgalligan@chromium.orgTABS_SCHEMA_BRANCHES = MoveAllTo(EXTENSIONS, {
12810cf1767dc8df4783e02ba8a712072f50ddc99efgalligan@chromium.org  'trunk': {
13810cf1767dc8df4783e02ba8a712072f50ddc99efgalligan@chromium.org    'docs': {
14810cf1767dc8df4783e02ba8a712072f50ddc99efgalligan@chromium.org      'templates': {
15810cf1767dc8df4783e02ba8a712072f50ddc99efgalligan@chromium.org        'json': {
16810cf1767dc8df4783e02ba8a712072f50ddc99efgalligan@chromium.org          'api_availabilities.json': '{}'
17810cf1767dc8df4783e02ba8a712072f50ddc99efgalligan@chromium.org        }
18810cf1767dc8df4783e02ba8a712072f50ddc99efgalligan@chromium.org      }
19810cf1767dc8df4783e02ba8a712072f50ddc99efgalligan@chromium.org    },
20810cf1767dc8df4783e02ba8a712072f50ddc99efgalligan@chromium.org    'api': {
21810cf1767dc8df4783e02ba8a712072f50ddc99efgalligan@chromium.org      '_api_features.json': '{}',
22810cf1767dc8df4783e02ba8a712072f50ddc99efgalligan@chromium.org      '_manifest_features.json': '{}',
23810cf1767dc8df4783e02ba8a712072f50ddc99efgalligan@chromium.org      '_permission_features.json': '{}',
24810cf1767dc8df4783e02ba8a712072f50ddc99efgalligan@chromium.org      'tabs.json': json.dumps([{
25810cf1767dc8df4783e02ba8a712072f50ddc99efgalligan@chromium.org        'namespace': 'tabs',
26810cf1767dc8df4783e02ba8a712072f50ddc99efgalligan@chromium.org        'types': [
27810cf1767dc8df4783e02ba8a712072f50ddc99efgalligan@chromium.org          {
28810cf1767dc8df4783e02ba8a712072f50ddc99efgalligan@chromium.org            'id': 'Tab',
29810cf1767dc8df4783e02ba8a712072f50ddc99efgalligan@chromium.org            'properties': {
30810cf1767dc8df4783e02ba8a712072f50ddc99efgalligan@chromium.org              'url': {},
31              'index': {},
32              'selected': {},
33              'id': {},
34              'windowId': {}
35            }
36          },
37          {
38            'id': 'InjectDetails',
39            'properties': {
40              'allFrames': {},
41              'code': {},
42              'file': {}
43            }
44          }
45        ],
46        'properties': {
47          'fakeTabsProperty1': {},
48          'fakeTabsProperty2': {},
49          'fakeTabsProperty3': {}
50        },
51        'functions': [
52          {
53            'name': 'getCurrent',
54            'parameters': [
55              {
56                'name': 'callback',
57                'parameters': [
58                  {
59                    'name': 'tab'
60                  }
61                ]
62              }
63            ]
64          },
65          {
66            'name': 'get',
67            'parameters': [
68              {
69                'name': 'callback',
70                'parameters': [
71                  {
72                    'name': 'tab'
73                  }
74                ]
75              },
76              {
77                'name': 'tabId'
78              }
79            ]
80          }
81        ],
82        'events': [
83          {
84            'name': 'onActivated',
85            'parameters': [
86              {
87                'name': 'activeInfo',
88                'properties': {
89                  'tabId': {},
90                  'windowId': {}
91                }
92              }
93            ]
94          },
95          {
96            'name': 'onUpdated',
97            'parameters': [
98              {
99                'name': 'tabId'
100              },
101              {
102                'name': 'tab'
103              },
104              {
105                'name': 'changeInfo',
106                'properties': {
107                  'pinned': {},
108                  'status': {}
109                }
110              }
111            ]
112          }
113        ]
114      }])
115    }
116  },
117  '1500': {
118    'api': {
119      '_api_features.json': "{}",
120      '_manifest_features.json': "{}",
121      '_permission_features.json': "{}",
122      'tabs.json': json.dumps([{
123        'namespace': 'tabs',
124        'types': [
125          {
126            'id': 'Tab',
127            'properties': {
128              'url': {},
129              'index': {},
130              'selected': {},
131              'id': {},
132              'windowId': {}
133            }
134          },
135          {
136            'id': 'InjectDetails',
137            'properties': {
138              'allFrames': {},
139              'code': {},
140              'file': {}
141            }
142          }
143        ],
144        'properties': {
145          'fakeTabsProperty1': {},
146          'fakeTabsProperty2': {}
147        },
148        'functions': [
149          {
150            'name': 'getCurrent',
151            'parameters': [
152              {
153                'name': 'callback',
154                'parameters': [
155                  {
156                    'name': 'tab'
157                  }
158                ]
159              }
160            ]
161          },
162          {
163            'name': 'get',
164            'parameters': [
165              {
166                'name': 'callback',
167                'parameters': [
168                  {
169                    'name': 'tab'
170                  }
171                ]
172              },
173              {
174                'name': 'tabId'
175              }
176            ]
177          }
178        ],
179        'events': [
180          {
181            'name': 'onActivated',
182            'parameters': [
183              {
184                'name': 'activeInfo',
185                'properties': {
186                  'tabId': {},
187                  'windowId': {}
188                }
189              }
190            ]
191          },
192          {
193            'name': 'onUpdated',
194            'parameters': [
195              {
196                'name': 'tabId'
197              },
198              {
199                'name': 'tab'
200              },
201              {
202                'name': 'changeInfo',
203                'properties': {
204                  'pinned': {},
205                  'status': {}
206                }
207              }
208            ]
209          }
210        ]
211      }])
212    }
213  },
214  '1453': {
215    'api': {
216      '_api_features.json': "{}",
217      '_manifest_features.json': "{}",
218      '_permission_features.json': "{}",
219      'tabs.json': json.dumps([{
220        'namespace': 'tabs',
221        'types': [
222          {
223            'id': 'Tab',
224            'properties': {
225              'url': {},
226              'index': {},
227              'selected': {},
228              'id': {},
229              'windowId': {}
230            }
231          },
232          {
233            'id': 'InjectDetails',
234            'properties': {
235              'allFrames': {},
236              'code': {},
237              'file': {}
238            }
239          }
240        ],
241        'properties': {
242          'fakeTabsProperty1': {},
243          'fakeTabsProperty2': {}
244        },
245        'functions': [
246          {
247            'name': 'getCurrent',
248            'parameters': [
249              {
250                'name': 'callback',
251                'parameters': [
252                  {
253                    'name': 'tab'
254                  }
255                ]
256              }
257            ]
258          },
259          {
260            'name': 'get',
261            'parameters': [
262              {
263                'name': 'callback',
264                'parameters': [
265                  {
266                    'name': 'tab'
267                  }
268                ]
269              },
270              {
271                'name': 'tabId'
272              }
273            ]
274          }
275        ],
276        'events': [
277          {
278            'name': 'onActivated',
279            'parameters': [
280              {
281                'name': 'activeInfo',
282                'properties': {
283                  'tabId': {}
284                }
285              }
286            ]
287          },
288          {
289            'name': 'onUpdated',
290            'parameters': [
291              {
292                'name': 'tabId'
293              },
294              {
295                'name': 'changeInfo',
296                'properties': {
297                  'pinned': {},
298                  'status': {}
299                }
300              }
301            ]
302          }
303        ]
304      }])
305    }
306  },
307  '1410': {
308    'api': {
309      '_manifest_features.json': "{}",
310      '_permission_features.json': "{}",
311      'tabs.json': json.dumps([{
312        'namespace': 'tabs',
313        'types': [
314          {
315            'id': 'Tab',
316            'properties': {
317              'url': {},
318              'index': {},
319              'selected': {},
320              'id': {},
321              'windowId': {}
322            }
323          },
324          {
325            'id': 'InjectDetails',
326            'properties': {
327              'allFrames': {},
328              'code': {},
329              'file': {}
330            }
331          }
332        ],
333        'properties': {
334          'fakeTabsProperty1': {},
335          'fakeTabsProperty2': {}
336        },
337        'functions': [
338          {
339            'name': 'getCurrent',
340            'parameters': [
341              {
342                'name': 'callback',
343                'parameters': [
344                  {
345                    'name': 'tab'
346                  }
347                ]
348              }
349            ]
350          },
351          {
352            'name': 'get',
353            'parameters': [
354              {
355                'name': 'callback',
356                'parameters': [
357                  {
358                    'name': 'tab'
359                  }
360                ]
361              }
362            ]
363          }
364        ],
365        'events': [
366          {
367            'name': 'onUpdated',
368            'parameters': [
369              {
370                'name': 'tabId'
371              },
372              {
373                'name': 'changeInfo',
374                'properties': {
375                  'pinned': {},
376                  'status': {}
377                }
378              }
379            ]
380          }
381        ]
382      }])
383    }
384  },
385  '1364': {
386    'api': {
387      '_manifest_features.json': "{}",
388      '_permission_features.json': "{}",
389      'tabs.json': json.dumps([{
390        'namespace': 'tabs',
391        'types': [
392          {
393            'id': 'Tab',
394            'properties': {
395              'url': {},
396              'index': {},
397              'selected': {},
398              'id': {},
399              'windowId': {}
400            }
401          },
402          {
403            'id': 'InjectDetails',
404            'properties': {
405              'allFrames': {}
406            }
407          }
408        ],
409        'properties': {
410          'fakeTabsProperty1': {},
411          'fakeTabsProperty2': {}
412        },
413        'functions': [
414          {
415            'name': 'getCurrent',
416            'parameters': [
417              {
418                'name': 'callback',
419                'parameters': [
420                  {
421                    'name': 'tab'
422                  }
423                ]
424              }
425            ]
426          },
427          {
428            'name': 'get',
429            'parameters': [
430              {
431                'name': 'callback',
432                'parameters': [
433                  {
434                    'name': 'tab'
435                  }
436                ]
437              }
438            ]
439          }
440        ],
441        'events': [
442          {
443            'name': 'onUpdated',
444            'parameters': [
445              {
446                'name': 'tabId'
447              },
448              {
449                'name': 'changeInfo',
450                'properties': {
451                  'pinned': {},
452                  'status': {}
453                }
454              }
455            ]
456          }
457        ]
458      }])
459    }
460  },
461  '1312': {
462    'api': {
463      '_manifest_features.json': "{}",
464      '_permission_features.json': "{}",
465      'tabs.json': json.dumps([{
466        'namespace': 'tabs',
467        'types': [
468          {
469            'id': 'Tab',
470            'properties': {
471              'url': {},
472              'index': {},
473              'selected': {},
474              'id': {},
475              'windowId': {}
476            }
477          }
478        ],
479        'properties': {
480          'fakeTabsProperty1': {},
481          'fakeTabsProperty2': {}
482        },
483        'functions': [
484          {
485            'name': 'getCurrent',
486            'parameters': [
487              {
488                'name': 'callback',
489                'parameters': [
490                  {
491                    'name': 'tab'
492                  }
493                ]
494              }
495            ]
496          },
497          {
498            'name': 'get',
499            'parameters': [
500              {
501                'name': 'callback',
502                'parameters': [
503                  {
504                    'name': 'tab'
505                  }
506                ]
507              }
508            ]
509          }
510        ],
511        'events': [
512          {
513            'name': 'onUpdated',
514            'parameters': [
515              {
516                'name': 'tabId'
517              },
518              {
519                'name': 'changeInfo',
520                'properties': {
521                  'pinned': {},
522                  'status': {}
523                }
524              }
525            ]
526          }
527        ]
528      }])
529    }
530  },
531  '1271': {
532    'api': {
533      '_manifest_features.json': "{}",
534      '_permission_features.json': "{}",
535      'tabs.json': json.dumps([{
536        'namespace': 'tabs',
537        'types': [
538          {
539            'id': 'Tab',
540            'properties': {
541              'url': {},
542              'index': {},
543              'selected': {},
544              'id': {},
545              'windowId': {}
546            }
547          }
548        ],
549        'properties': {
550          'fakeTabsProperty1': {},
551          'fakeTabsProperty2': {}
552        },
553        'functions': [
554          {
555            'name': 'getCurrent',
556            'parameters': [
557              {
558                'name': 'callback',
559                'parameters': [
560                  {
561                    'name': 'tab'
562                  }
563                ]
564              }
565            ]
566          },
567          {
568            'name': 'get',
569            'parameters': [
570              {
571                'name': 'callback',
572                'parameters': [
573                  {
574                    'name': 'tab'
575                  }
576                ]
577              }
578            ]
579          }
580        ],
581        'events': [
582          {
583            'name': 'onUpdated',
584            'parameters': [
585              {
586                'name': 'tabId'
587              },
588              {
589                'name': 'changeInfo',
590                'properties': {
591                  'pinned': {},
592                  'status': {}
593                }
594              }
595            ]
596          }
597        ]
598      }])
599    }
600  },
601  '1229': {
602    'api': {
603      '_manifest_features.json': "{}",
604      '_permission_features.json': "{}",
605      'tabs.json': json.dumps([{
606        'namespace': 'tabs',
607        'types': [
608          {
609            'id': 'Tab',
610            'properties': {
611              'url': {},
612              'index': {},
613              'selected': {},
614              'id': {},
615              'windowId': {}
616            }
617          }
618        ],
619        'properties': {
620          'fakeTabsProperty1': {},
621          'fakeTabsProperty2': {}
622        },
623        'functions': [
624          {
625            'name': 'getCurrent',
626            'parameters': [
627              {
628                'name': 'callback',
629                'parameters': [
630                  {
631                    'name': 'tab'
632                  }
633                ]
634              }
635            ]
636          },
637          {
638            'name': 'get',
639            'parameters': [
640              {
641                'name': 'callback',
642                'parameters': [
643                  {
644                    'name': 'tab'
645                  }
646                ]
647              }
648            ]
649          }
650        ],
651        'events': [
652          {
653            'name': 'onUpdated',
654            'parameters': [
655              {
656                'name': 'tabId'
657              },
658              {
659                'name': 'changeInfo',
660                'properties': {
661                  'pinned': {},
662                  'status': {}
663                }
664              }
665            ]
666          }
667        ]
668      }])
669    }
670  },
671  '1180': {
672    'api': {
673      '_manifest_features.json': "{}",
674      '_permission_features.json': "{}",
675      'tabs.json': json.dumps([{
676        'namespace': 'tabs',
677        'types': [
678          {
679            'id': 'Tab',
680            'properties': {
681              'url': {},
682              'index': {},
683              'selected': {},
684              'id': {}
685            }
686          }
687        ],
688        'properties': {
689          'fakeTabsProperty1': {},
690          'fakeTabsProperty2': {}
691        },
692        'functions': [
693          {
694            'name': 'getCurrent',
695            'parameters': [
696              {
697                'name': 'callback',
698                'parameters': [
699                  {
700                    'name': 'tab'
701                  }
702                ]
703              }
704            ]
705          },
706          {
707            'name': 'get',
708            'parameters': [
709              {
710                'name': 'callback',
711                'parameters': [
712                  {
713                    'name': 'tab'
714                  }
715                ]
716              }
717            ]
718          }
719        ],
720        'events': [
721          {
722            'name': 'onUpdated',
723            'parameters': [
724              {
725                'name': 'tabId'
726              },
727              {
728                'name': 'changeInfo',
729                'properties': {
730                  'pinned': {},
731                  'status': {}
732                }
733              }
734            ]
735          }
736        ]
737      }])
738    }
739  },
740  '1132': {
741    'api': {
742      '_manifest_features.json': "{}",
743      '_permission_features.json': "{}",
744      'tabs.json': json.dumps([{
745        'namespace': 'tabs',
746        'types': [
747          {
748            'id': 'Tab',
749            'properties': {
750              'url': {},
751              'index': {},
752              'id': {}
753            }
754          }
755        ],
756        'properties': {
757          'fakeTabsProperty1': {},
758          'fakeTabsProperty2': {}
759        },
760        'functions': [
761          {
762            'name': 'getCurrent',
763            'parameters': [
764              {
765                'name': 'callback',
766                'parameters': [
767                  {
768                    'name': 'tab'
769                  }
770                ]
771              }
772            ]
773          },
774          {
775            'name': 'get',
776            'parameters': [
777              {
778                'name': 'callback',
779                'parameters': [
780                  {
781                    'name': 'tab'
782                  }
783                ]
784              }
785            ]
786          }
787        ],
788        'events': [
789          {
790            'name': 'onUpdated',
791            'parameters': [
792              {
793                'name': 'tabId'
794              },
795              {
796                'name': 'changeInfo',
797                'properties': {
798                  'pinned': {},
799                  'status': {}
800                }
801              }
802            ]
803          }
804        ]
805      }])
806    }
807  },
808  '1084': {
809    'api': {
810      'tabs.json': json.dumps([{
811        'namespace': 'tabs',
812        'types': [
813          {
814            'id': 'Tab',
815            'properties': {
816              'url': {},
817              'index': {},
818              'id': {}
819            }
820          }
821        ],
822        'properties': {
823          'fakeTabsProperty1': {},
824          'fakeTabsProperty2': {}
825        },
826        'functions': [
827          {
828            'name': 'getCurrent',
829            'parameters': [
830              {
831                'name': 'callback',
832                'parameters': [
833                  {
834                    'name': 'tab'
835                  }
836                ]
837              }
838            ]
839          },
840          {
841            'name': 'get',
842            'parameters': [
843              {
844                'name': 'callback',
845                'parameters': [
846                  {
847                    'name': 'tab'
848                  }
849                ]
850              }
851            ]
852          }
853        ],
854        'events': [
855          {
856            'name': 'onUpdated',
857            'parameters': [
858              {
859                'name': 'tabId'
860              },
861              {
862                'name': 'changeInfo',
863                'properties': {
864                  'pinned': {},
865                  'status': {}
866                }
867              }
868            ]
869          }
870        ]
871      }])
872    }
873  },
874  '1025': {
875    'api': {
876      'tabs.json': json.dumps([{
877        'namespace': 'tabs',
878        'types': [
879          {
880            'id': 'Tab',
881            'properties': {
882              'url': {},
883              'index': {},
884              'id': {}
885            }
886          }
887        ],
888        'properties': {
889          'fakeTabsProperty1': {},
890          'fakeTabsProperty2': {}
891        },
892        'functions': [
893          {
894            'name': 'get',
895            'parameters': [
896              {
897                'name': 'callback',
898                'parameters': [
899                  {
900                    'name': 'tab'
901                  }
902                ]
903              }
904            ]
905          }
906        ],
907        'events': [
908          {
909            'name': 'onUpdated',
910            'parameters': [
911              {
912                'name': 'tabId'
913              },
914              {
915                'name': 'changeInfo',
916                'properties': {
917                  'pinned': {},
918                  'status': {}
919                }
920              }
921            ]
922          }
923        ]
924      }])
925    }
926  },
927  '963': {
928    'api': {
929      'extension_api.json': json.dumps([{
930        'namespace': 'tabs',
931        'types': [
932          {
933            'id': 'Tab',
934            'properties': {
935              'url': {},
936              'id': {}
937            }
938          }
939        ],
940        'properties': {
941          'fakeTabsProperty1': {},
942          'fakeTabsProperty2': {}
943        },
944        'functions': [
945          {
946            'name': 'get',
947            'parameters': [
948              {
949                'name': 'callback',
950                'parameters': [
951                  {
952                    'name': 'tab'
953                  }
954                ]
955              }
956            ]
957          }
958        ],
959        'events': [
960          {
961            'name': 'onUpdated',
962            'parameters': [
963              {
964                'name': 'tabId'
965              },
966              {
967                'name': 'changeInfo',
968                'properties': {
969                  'pinned': {},
970                  'status': {}
971                }
972              }
973            ]
974          }
975        ]
976      }])
977    }
978  },
979  '912': {
980    'api': {
981      'extension_api.json': json.dumps([{
982        'namespace': 'tabs',
983        'types': [
984          {
985            'id': 'Tab',
986            'properties': {
987              'url': {},
988              'id': {}
989            }
990          }
991        ],
992        'properties': {
993          'fakeTabsProperty1': {},
994          'fakeTabsProperty2': {}
995        },
996        'functions': [
997          {
998            'name': 'get',
999            'parameters': [
1000              {
1001                'name': 'callback',
1002                'parameters': [
1003                  {
1004                    'name': 'tab'
1005                  }
1006                ]
1007              }
1008            ]
1009          }
1010        ],
1011        'events': [
1012          {
1013            'name': 'onUpdated',
1014            'parameters': [
1015              {
1016                'name': 'tabId'
1017              }
1018            ]
1019          }
1020        ]
1021      }])
1022    }
1023  },
1024  '874': {
1025    'api': {
1026      'extension_api.json': json.dumps([{
1027        'namespace': 'tabs',
1028        'types': [
1029          {
1030            'id': 'Tab',
1031            'properties': {
1032              'url': {},
1033              'id': {}
1034            }
1035          }
1036        ],
1037        'properties': {
1038          'fakeTabsProperty1': {},
1039          'fakeTabsProperty2': {}
1040        },
1041        'functions': [
1042          {
1043            'name': 'get',
1044            'parameters': [
1045              {
1046                'name': 'callback',
1047                'parameters': [
1048                  {
1049                    'name': 'tab'
1050                  }
1051                ]
1052              }
1053            ]
1054          }
1055        ],
1056        'events': [
1057          {
1058            'name': 'onUpdated',
1059            'parameters': [
1060              {
1061                'name': 'tabId'
1062              }
1063            ]
1064          }
1065        ]
1066      }])
1067    }
1068  },
1069  '835': {
1070    'api': {
1071      'extension_api.json': json.dumps([{
1072        'namespace': 'tabs',
1073        'types': [
1074          {
1075            'id': 'Tab',
1076            'properties': {
1077              'url': {},
1078              'id': {}
1079            }
1080          }
1081        ],
1082        'properties': {
1083          'fakeTabsProperty1': {}
1084        },
1085        'functions': [
1086          {
1087            'name': 'get',
1088            'parameters': [
1089              {
1090                'name': 'callback',
1091                'parameters': [
1092                  {
1093                    'name': 'tab'
1094                  }
1095                ]
1096              }
1097            ]
1098          }
1099        ],
1100        'events': [
1101          {
1102            'name': 'onUpdated',
1103            'parameters': [
1104              {
1105                'name': 'tabId'
1106              }
1107            ]
1108          }
1109        ]
1110      }])
1111    }
1112  },
1113  '782': {
1114    'api': {
1115      'extension_api.json': "{}"
1116    }
1117  }
1118})
1119