Home | History | Annotate | Download | only in api
      1 // Copyright 2014 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 // This features file defines extension APIs implemented under src/extensions.
      6 // See extensions/common/features/* to understand this file, in particular
      7 // feature.h, simple_feature.h, and base_feature_provider.h.
      8 //
      9 // Note that specifying "web_page", "blessed_web_page", or "all" as a context
     10 // type will require manually updating chrome/renderer/resources/dispatcher.cc.
     11 
     12 // To add a new whitelisted ID, SHA-1 it and force it to uppercase. In Bash:
     13 //
     14 // $ echo -n "aaaabbbbccccddddeeeeffffgggghhhh" | \
     15 // sha1sum | tr '[:lower:]' '[:upper:]'
     16 // 9A0417016F345C934A1A88F55CA17C05014EEEBA  -
     17 //
     18 // Google employees: please update http://go/chrome-api-whitelist to map
     19 // hashes back to ids.
     20 
     21 {
     22   "app.runtime": [{
     23     "channel": "stable",
     24     "contexts": ["blessed_extension"],
     25     "extension_types": ["platform_app"],
     26     "noparent": true
     27   }, {
     28     "channel": "stable",
     29     "component_extensions_auto_granted": false,
     30     "contexts": ["blessed_extension"],
     31     "extension_types": ["extension"],
     32     "noparent": true,
     33     "whitelist": [
     34       "2FC374607C2DF285634B67C64A2E356C607091C3",  // Quickoffice
     35       "3727DD3E564B6055387425027AD74C58784ACC15",  // Quickoffice internal
     36       "12E618C3C6E97495AAECF2AC12DEB082353241C6"   // QO component extension
     37     ]
     38   }],
     39   "app.window": {
     40     "channel": "stable",
     41     "contexts": ["blessed_extension"],
     42     "extension_types": ["platform_app"],
     43     "noparent": true
     44   },
     45   "app.window.canSetVisibleOnAllWorkspaces": {
     46     "channel": "dev"
     47   },
     48   "app.currentWindowInternal": {
     49     "noparent": true,
     50     "internal": true,
     51     "channel": "stable",
     52     "contexts": ["blessed_extension"]
     53   },
     54   "app.currentWindowInternal.setShape": {
     55     "dependencies": ["permission:app.window.shape"],
     56     "contexts": ["blessed_extension"]
     57   },
     58   "dns": {
     59     "dependencies": ["permission:dns"],
     60     "contexts": ["blessed_extension"]
     61   },
     62   // This is not a real API, only here for documentation purposes.
     63   // See http://crbug.com/275944 for background.
     64   "extensionTypes": {
     65     "internal": true,
     66     "channel": "stable",
     67     "extension_types": ["extension", "legacy_packaged_app", "platform_app"],
     68     "contexts": ["blessed_extension"]
     69   },
     70   "guestViewInternal": [
     71     {
     72       "internal": true,
     73       "channel": "stable",
     74       "contexts": ["blessed_extension"]
     75     }, {
     76       "internal": true,
     77       "channel": "trunk",
     78       "contexts": ["webui"],
     79       "matches": [
     80         "chrome://extensions-frame/*",
     81         "chrome://extensions/*",
     82         "chrome://chrome-signin/*"
     83       ]
     84     }
     85   ],
     86   "hid": {
     87     "dependencies": ["permission:hid"],
     88     "contexts": ["blessed_extension"]
     89   },
     90   "power": {
     91     "dependencies": ["permission:power"],
     92     "contexts": ["blessed_extension"]
     93   },
     94   "runtime": {
     95     "channel": "stable",
     96     "extension_types": ["extension", "legacy_packaged_app", "platform_app"],
     97     "contexts": ["blessed_extension"]
     98   },
     99   "runtime.getManifest": {
    100     "contexts": ["blessed_extension", "unblessed_extension", "content_script"]
    101   },
    102   "runtime.connect": {
    103     // Everything except WebUI.
    104     "contexts": [
    105       "blessed_web_page",
    106       "content_script",
    107       "blessed_extension",
    108       "unblessed_extension",
    109       "web_page"
    110     ],
    111     "matches": ["<all_urls>"]
    112   },
    113   "runtime.getURL": {
    114     "contexts": ["blessed_extension", "unblessed_extension", "content_script"]
    115   },
    116   "runtime.id": {
    117     "contexts": ["blessed_extension", "unblessed_extension", "content_script"]
    118   },
    119   "runtime.lastError": {
    120     "contexts": "all",
    121     "extension_types": "all",
    122     "matches": ["<all_urls>"]
    123   },
    124   "runtime.onConnect": {
    125     "contexts": ["blessed_extension", "unblessed_extension", "content_script"]
    126   },
    127   "runtime.onMessage": {
    128     "contexts": ["blessed_extension", "unblessed_extension", "content_script"]
    129   },
    130   "runtime.sendMessage": {
    131     // Everything except WebUI.
    132     "contexts": [
    133       "blessed_web_page",
    134       "content_script",
    135       "blessed_extension",
    136       "unblessed_extension",
    137       "web_page"
    138     ],
    139     "matches": ["<all_urls>"]
    140   },
    141   "runtime.setUninstallURL": {
    142     "channel": "dev"
    143   },
    144   "serial": {
    145     "dependencies": ["permission:serial"],
    146     "contexts": ["blessed_extension"]
    147   },
    148   "socket": {
    149     "dependencies": ["permission:socket"],
    150     "contexts": ["blessed_extension"]
    151   },
    152   "sockets.tcp": {
    153     "dependencies": ["manifest:sockets"],
    154     "contexts": ["blessed_extension"]
    155   },
    156   "sockets.tcpServer": {
    157     "dependencies": ["manifest:sockets"],
    158     "contexts": ["blessed_extension"]
    159   },
    160   "sockets.udp": {
    161     "dependencies": ["manifest:sockets"],
    162     "contexts": ["blessed_extension"]
    163   },
    164   "storage": {
    165     "dependencies": ["permission:storage"],
    166     "contexts": ["blessed_extension", "unblessed_extension", "content_script"]
    167   },
    168   "system.cpu": {
    169     "dependencies": ["permission:system.cpu"],
    170     "contexts": ["blessed_extension"]
    171   },
    172   "system.display": {
    173     "dependencies": ["permission:system.display"],
    174     "contexts": ["blessed_extension"]
    175   },
    176   "system.memory": {
    177     "dependencies": ["permission:system.memory"],
    178     "contexts": ["blessed_extension"]
    179   },
    180   "system.network": {
    181     "dependencies": ["permission:system.network"],
    182     "contexts": ["blessed_extension"]
    183   },
    184   "system.storage": {
    185     "dependencies": ["permission:system.storage"],
    186     "contexts": ["blessed_extension"]
    187   },
    188   "system.storage.getAvailableCapacity": {
    189     "channel": "dev"
    190   },
    191   "test": [{
    192     "channel": "stable",
    193     "extension_types": "all",
    194     // Everything except web pages and WebUI. WebUI is declared in a separate
    195     // rule to keep the "matches" property isolated.
    196     "contexts": [
    197       "blessed_extension",
    198       "blessed_web_page",
    199       "content_script",
    200       "unblessed_extension"
    201     ]
    202   }, {
    203     "channel": "stable",
    204     "contexts": ["webui"],
    205     "matches": [
    206       "chrome://extensions/*",
    207       "chrome://extensions-frame/*",
    208       "chrome://chrome/extensions/*"
    209     ]
    210   }],
    211   "types": {
    212     "internal": true,
    213     "channel": "stable",
    214     "extension_types": ["extension", "legacy_packaged_app", "platform_app"],
    215     "contexts": ["blessed_extension"]
    216   },
    217   "types.private": {
    218     "channel": "dev",
    219     "extension_types": ["extension"],
    220     "location": "component"
    221   },
    222   "usb": {
    223     "dependencies": ["permission:usb"],
    224     "contexts": ["blessed_extension"]
    225   },
    226   "usbPrivate": {
    227     "channel": "dev",
    228     "contexts": ["webui"]
    229   },
    230   "webViewExperimentalInternal": [{
    231     "internal": true,
    232     "channel": "dev",
    233     "contexts": ["blessed_extension"],
    234     "dependencies": ["permission:webview"]
    235   },
    236   {
    237     "internal": true,
    238     "channel": "stable",
    239     "contexts": ["blessed_extension"],
    240     "dependencies": ["permission:webview"],
    241     "whitelist": [
    242       "8C3741E3AF0B93B6E8E0DDD499BB0B74839EA578",
    243       "E703483CEF33DEC18B4B6DD84B5C776FB9182BDB",
    244       "1A26E32DE447A17CBE5E9750CDBA78F58539B39C",
    245       "59048028102D7B4C681DBC7BC6CD980C3DC66DA3"
    246     ]
    247   }],
    248   "webViewInternal": [{
    249     "internal": true,
    250     "dependencies": ["permission:webview"],
    251     "contexts": ["blessed_extension"]
    252   }, {
    253     "internal": true,
    254     "channel": "dev",
    255     "contexts": ["webui"],
    256     "matches": ["chrome://chrome-signin/*"]
    257   }]
    258 }
    259