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