summaryrefslogtreecommitdiff
path: root/chromium/extensions/common/api
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/extensions/common/api')
-rw-r--r--chromium/extensions/common/api/API_OWNERS1
-rw-r--r--chromium/extensions/common/api/PRESUBMIT.py27
-rw-r--r--chromium/extensions/common/api/_api_features.json10
-rw-r--r--chromium/extensions/common/api/_behavior_features.json46
-rw-r--r--chromium/extensions/common/api/_manifest_features.json4
-rw-r--r--chromium/extensions/common/api/_permission_features.json25
-rw-r--r--chromium/extensions/common/api/automation.idl1
-rw-r--r--chromium/extensions/common/api/declarative_net_request.idl16
-rw-r--r--chromium/extensions/common/api/declarative_net_request/constants.cc1
-rw-r--r--chromium/extensions/common/api/declarative_net_request/constants.h1
-rw-r--r--chromium/extensions/common/api/declarative_net_request/dnr_manifest_handler.cc16
-rw-r--r--chromium/extensions/common/api/declarative_net_request/test_utils.cc9
-rw-r--r--chromium/extensions/common/api/declarative_net_request/test_utils.h5
-rw-r--r--chromium/extensions/common/api/externs_checker.py30
-rw-r--r--chromium/extensions/common/api/generated_externs_list.txt12
-rw-r--r--chromium/extensions/common/api/networking_onc.idl4
-rw-r--r--chromium/extensions/common/api/networking_private.idl2
17 files changed, 129 insertions, 81 deletions
diff --git a/chromium/extensions/common/api/API_OWNERS b/chromium/extensions/common/api/API_OWNERS
index 95791851c0b..79613138af2 100644
--- a/chromium/extensions/common/api/API_OWNERS
+++ b/chromium/extensions/common/api/API_OWNERS
@@ -17,5 +17,4 @@ karandeepb@chromium.org
tbarzic@chromium.org
mukai@chromium.org
xiyuan@chromium.org
-stevenjb@chromium.org
benwells@chromium.org
diff --git a/chromium/extensions/common/api/PRESUBMIT.py b/chromium/extensions/common/api/PRESUBMIT.py
index 5c2df127158..ded0ec9cc23 100644
--- a/chromium/extensions/common/api/PRESUBMIT.py
+++ b/chromium/extensions/common/api/PRESUBMIT.py
@@ -13,38 +13,13 @@ import sys
def _CheckExterns(input_api, output_api):
original_sys_path = sys.path
-
try:
sys.path.append(input_api.PresubmitLocalPath())
from externs_checker import ExternsChecker
finally:
sys.path = original_sys_path
- join = input_api.os_path.join
- api_root = input_api.PresubmitLocalPath()
- externs_root = input_api.os_path.abspath(join(
- api_root, '..', '..', '..', 'third_party', 'closure_compiler', 'externs'))
-
- api_pairs = {
- join(api_root, 'audio.idl'): join(externs_root, 'audio.js'),
- join(api_root, 'automation.idl'): join(externs_root, 'automation.js'),
- join(api_root, 'bluetooth.idl'): join(externs_root, 'bluetooth.js'),
- join(api_root, 'bluetooth_private.idl'):
- join(externs_root, 'bluetooth_private.js'),
- join(api_root, 'clipboard.idl'): join(externs_root, 'clipboard.js'),
- join(api_root, 'management.json'): join(externs_root, 'management.js'),
- join(api_root, 'metrics_private.json'):
- join(externs_root, 'metrics_private.js'),
- join(api_root, 'mime_handler_private.idl'):
- join(externs_root, 'mime_handler_private.js'),
- join(api_root, 'networking_private.idl'):
- join(externs_root, 'networking_private.js'),
- join(api_root, 'system_display.idl'):
- join(externs_root, 'system_display.js'),
- # TODO(rdevlin.cronin): Add more!
- }
-
- return ExternsChecker(input_api, output_api, api_pairs).RunChecks()
+ return ExternsChecker(input_api, output_api).RunChecks()
def CheckChangeOnUpload(input_api, output_api):
diff --git a/chromium/extensions/common/api/_api_features.json b/chromium/extensions/common/api/_api_features.json
index 9cc9ff8bf54..95c06c0ac92 100644
--- a/chromium/extensions/common/api/_api_features.json
+++ b/chromium/extensions/common/api/_api_features.json
@@ -217,7 +217,6 @@
"matches": [
"chrome://add-supervision/*",
"chrome://assistant-optin/*",
- "chrome://cast/*",
"chrome://cellular-setup/*",
"chrome://discards/*",
"chrome://extensions/*",
@@ -498,7 +497,7 @@
"content_script"
]
},
- "runtime.sendMessage": {
+ "runtime.sendMessage": [{
// Everything except WebUI.
"contexts": [
"blessed_web_page",
@@ -509,7 +508,12 @@
"web_page"
],
"matches": ["<all_urls>"]
- },
+ },{
+ "contexts": ["webui"],
+ "matches": [
+ "chrome://password-change/*"
+ ]
+ }],
"runtime.sendNativeMessage": {
"dependencies": ["permission:nativeMessaging"],
"contexts": ["blessed_extension"]
diff --git a/chromium/extensions/common/api/_behavior_features.json b/chromium/extensions/common/api/_behavior_features.json
index aacb10e7e9a..de9b8486065 100644
--- a/chromium/extensions/common/api/_behavior_features.json
+++ b/chromium/extensions/common/api/_behavior_features.json
@@ -29,17 +29,15 @@
"session_types": ["kiosk"]
},
"signin_screen": [ {
- "blacklist": [
- // https://crbug.com/626342
- "9E527CDA9D7C50844E8A5DB964A54A640AE48F98" // Chrome remote desktop
- ],
- // Allow developers to test new features.
- "channel": "dev",
+ "channel": "canary",
"component_extensions_auto_granted": false,
- "extension_types": ["platform_app"],
- "location": "policy",
- "platforms": ["chromeos"]
- }, {
+ "platforms": ["chromeos"],
+ "location": "unpacked",
+ "whitelist": [
+ "05D1DBD6E8B9C4690FFA7D50E6F60C5290DC662A" // crbug.com/941107
+ ]
+ },
+ {
// Strict restrictions for stable channel.
// For now only whitelisted apps.
"channel": "stable",
@@ -121,5 +119,33 @@
"allow_secondary_kiosk_app_enabled_on_launch": {
"channel": "dev",
"extension_types": ["platform_app"]
+ },
+ // Allowlist KeyPermissions for login screen extensions that cannot set the
+ // user policy (they don't have a user yet).
+ "key_permissions_in_login_screen": {
+ "channel": "stable",
+ "extension_types": ["login_screen_extension"],
+ "location": "policy",
+ "platforms": ["chromeos"],
+ "whitelist": [
+ // The Imprivata login extension should be able to sign more than once,
+ // see crbug.com/1073466. In it's authorization protocol, Imprivata needs
+ // to sign data in order to authorize requests to the server. We cannot
+ // apply the KeyPermissions policy to the Imprivata login screen since
+ // it's a User Policy, but we do need to be able to sign data on the login
+ // screen.
+ "E219EE36A3B40612FD2A8CD6937B03EF0C97D3FE", // Imprivata (login screen) crbug.com/1065112
+ "4DBFC1C52D6660DD90791976DF7FEF7B3D360509", // Imprivata (login screen) crbug.com/1065112
+ "CDA6A10BE50CE65C59B766D0CE6A27E8E0A1533F", // Imprivata (login screen) crbug.com/1065112
+ "D85454743B32D9F5ABF3E5F18DF78809F3A0ABD4", // Imprivata (login screen) crbug.com/1065112
+ "04569B963251EB28C0906099668D98EE65ECA2D8", // Imprivata (login screen) crbug.com/1065112
+ "7BF5B69C3ACA9E6ACA5C480661B8073EB9FA32A9", // Imprivata (login screen) crbug.com/1065112
+ "5F2EF8E9F7E975090278D6A0AD039860430C5684", // Imprivata (login screen) crbug.com/1065112
+ "97A4DC8AFC1FCF665C71B624A55675C297AB256C", // Imprivata (login screen) crbug.com/1065112
+ "A00EB72B456C374F1EA86C09833C7DBB6CD95CAE", // Imprivata (login screen) crbug.com/1065112
+ "51DDBADA37EF4D25AD03CB1BB6451799456FE183", // Imprivata (login screen) crbug.com/1065112
+ "DD97CAE4D8658003658140109BC119188A19A5B8", // Imprivata (login screen) crbug.com/1065112
+ "320857126E2180A5751AA384B7B7332A4964BD8C" // Imprivata (login screen) crbug.com/1065112
+ ]
}
}
diff --git a/chromium/extensions/common/api/_manifest_features.json b/chromium/extensions/common/api/_manifest_features.json
index 425ec6a0cf0..4b7376a0734 100644
--- a/chromium/extensions/common/api/_manifest_features.json
+++ b/chromium/extensions/common/api/_manifest_features.json
@@ -363,10 +363,10 @@
"channel": "stable",
"extension_types": ["hosted_app"]
},
- // TODO(https://crbug.com/1065748): Remove web_app_linked_shortcut_icons and
+ // TODO(https://crbug.com/1065748): Remove web_app_linked_shortcut_items and
// web_app_shortcut_icons keys once we've transitioned PWAs from the current
// Extensions based representation to WebApp based representation.
- "web_app_linked_shortcut_icons" : {
+ "web_app_linked_shortcut_items" : {
"channel": "stable",
"extension_types": ["hosted_app"]
},
diff --git a/chromium/extensions/common/api/_permission_features.json b/chromium/extensions/common/api/_permission_features.json
index 1391e798dce..2623a401ba3 100644
--- a/chromium/extensions/common/api/_permission_features.json
+++ b/chromium/extensions/common/api/_permission_features.json
@@ -290,8 +290,10 @@
"BD8781D757D830FC2E85470A1B6E8A718B7EE0D9", // http://crbug.com/407693
"4AC2B6C63C6480D150DFDA13E4A5956EB1D0DDBB", // http://crbug.com/407693
"81986D4F846CEDDDB962643FA501D1780DD441BB", // http://crbug.com/407693
- "A9A9FC0228ADF541F0334F22BEFB8F9C245B21D7" // http://crbug.com/839189
- ]
+ "A9A9FC0228ADF541F0334F22BEFB8F9C245B21D7", // http://crbug.com/839189
+ "D7986543275120831B39EF28D1327552FC343960", // http://crbug.com/1103025
+ "A291B26E088FA6BA53FFD72F0916F06EBA7C585A" // http://crbug.com/1103025
+ ]
},
"fileSystem": [{
"channel": "stable",
@@ -477,12 +479,7 @@
"session_types": ["kiosk.autolaunched"]
}, {
"channel": "stable",
- "extension_types": [
- "extension",
- "legacy_packaged_app",
- "platform_app",
- "login_screen_extension"
- ],
+ "extension_types": ["extension", "legacy_packaged_app", "platform_app"],
"platforms": ["chromeos", "mac", "win", "linux"],
"whitelist": [
"0DE0F05680A4A056BCEC864ED8DDA84296F82B40", // http://crbug.com/434651
@@ -509,14 +506,10 @@
"6FB7E1B6C0247B687AC14772E87A117F5F5E4497", // http://crbug.com/731941
"9834387FDA1F66A1B5CA06CB442137B556F12F2A", // http://crbug.com/772346
"A9A9FC0228ADF541F0334F22BEFB8F9C245B21D7", // http://crbug.com/839189
- // TODO(crbug.com/1075877, hendrich) remove this when
- // enterprise.networkingAttributes has landed
- "E219EE36A3B40612FD2A8CD6937B03EF0C97D3FE", // Imprivata (login screen) crbug.com/1075877
- "4DBFC1C52D6660DD90791976DF7FEF7B3D360509", // Imprivata (login screen) crbug.com/1075877
- "CDA6A10BE50CE65C59B766D0CE6A27E8E0A1533F", // Imprivata (login screen) crbug.com/1075877
- "A24DE1B21A67E25FB62AC8491642038FE25DA75B", // Imprivata (in-session) crbug.com/1075877
- "6B25164FFE2BADB5F1DBBD301CC022170267022D", // Imprivata (in-session) crbug.com/1075877
- "4D15F9AFCF54E56F0A6E06D22DD15F133DCF0882" // Imprivata (in-session) crbug.com/1075877
+ "F2BCE012B9B7E2D57902B5A4F954EB01A7E548FD", // http://crbug.com/1105137
+ "D467F51D3846ED6D137F9FD403AE11CE416CD995", // http://crbug.com/1105137
+ "3823525AD445E0025E449F964C20922996B0F97F", // http://crbug.com/1105137
+ "827B5D482FADCE120F4694AD0FA0680E3717C6EC" // http://crbug.com/1105137
]
}],
"networkingPrivate": {
diff --git a/chromium/extensions/common/api/automation.idl b/chromium/extensions/common/api/automation.idl
index bcfe507e5cc..ca0a93a3bc1 100644
--- a/chromium/extensions/common/api/automation.idl
+++ b/chromium/extensions/common/api/automation.idl
@@ -46,7 +46,6 @@
menuListItemSelected,
menuListValueChanged,
menuPopupEnd,
- menuPopupHide,
menuPopupStart,
menuStart,
mouseCanceled,
diff --git a/chromium/extensions/common/api/declarative_net_request.idl b/chromium/extensions/common/api/declarative_net_request.idl
index 9edc8568eda..fd25367568f 100644
--- a/chromium/extensions/common/api/declarative_net_request.idl
+++ b/chromium/extensions/common/api/declarative_net_request.idl
@@ -37,6 +37,10 @@ namespace declarativeNetRequest {
// TODO(crbug.com/947591): Add documentation once implementation is complete.
[nodoc]
enum HeaderOperation {
+ // Adds a new entry for the specified header. This operation is not
+ // supported for request headers.
+ append,
+ set,
remove
};
@@ -88,6 +92,7 @@ namespace declarativeNetRequest {
};
// Describes modification to various url components.
+ [noinline_doc]
dictionary URLTransform {
// The new scheme for the request. Allowed values are "http", "https",
// "ftp" and "chrome-extension".
@@ -136,6 +141,7 @@ namespace declarativeNetRequest {
DOMString? regexSubstitution;
};
+ [noinline_doc]
dictionary RuleCondition {
// The pattern which is matched against the network request url.
@@ -232,8 +238,10 @@ namespace declarativeNetRequest {
dictionary ModifyHeaderInfo {
DOMString header;
HeaderOperation operation;
+ DOMString? value;
};
+ [noinline_doc]
dictionary RuleAction {
// The type of action to perform.
RuleActionType type;
@@ -283,6 +291,7 @@ namespace declarativeNetRequest {
DOMString rulesetId;
};
+ [noinline_doc]
dictionary MatchedRuleInfo {
MatchedRule rule;
@@ -309,6 +318,7 @@ namespace declarativeNetRequest {
MatchedRuleInfo[] rulesMatchedInfo;
};
+ [noinline_doc]
dictionary RequestDetails {
// The ID of the request. Request IDs are unique within a browser session.
DOMString requestId;
@@ -470,8 +480,8 @@ namespace declarativeNetRequest {
// Fired when a rule is matched with a request. Only available for unpacked
// extensions with the <code>declarativeNetRequestFeedback</code> permission
// as this is intended to be used for debugging purposes only.
- // |matched_rule_info|: The rule that has been matched along with
- // information about the associated request.
- static void onRuleMatchedDebug(MatchedRuleInfoDebug matched_rule_info);
+ // |info|: The rule that has been matched along with information about the
+ // associated request.
+ static void onRuleMatchedDebug(MatchedRuleInfoDebug info);
};
};
diff --git a/chromium/extensions/common/api/declarative_net_request/constants.cc b/chromium/extensions/common/api/declarative_net_request/constants.cc
index 6ded009261f..232659080f1 100644
--- a/chromium/extensions/common/api/declarative_net_request/constants.cc
+++ b/chromium/extensions/common/api/declarative_net_request/constants.cc
@@ -57,6 +57,7 @@ const char kRequestHeadersPath[] = "action.requestHeaders";
const char kResponseHeadersPath[] = "action.responseHeaders";
const char kHeaderNameKey[] = "header";
const char kHeaderOperationKey[] = "operation";
+const char kHeaderValueKey[] = "value";
} // namespace declarative_net_request
} // namespace extensions
diff --git a/chromium/extensions/common/api/declarative_net_request/constants.h b/chromium/extensions/common/api/declarative_net_request/constants.h
index 85a12631fb3..bd11880cbb0 100644
--- a/chromium/extensions/common/api/declarative_net_request/constants.h
+++ b/chromium/extensions/common/api/declarative_net_request/constants.h
@@ -79,6 +79,7 @@ extern const char kRequestHeadersPath[];
extern const char kResponseHeadersPath[];
extern const char kHeaderNameKey[];
extern const char kHeaderOperationKey[];
+extern const char kHeaderValueKey[];
} // namespace declarative_net_request
} // namespace extensions
diff --git a/chromium/extensions/common/api/declarative_net_request/dnr_manifest_handler.cc b/chromium/extensions/common/api/declarative_net_request/dnr_manifest_handler.cc
index bd665f9891d..a4876bcb162 100644
--- a/chromium/extensions/common/api/declarative_net_request/dnr_manifest_handler.cc
+++ b/chromium/extensions/common/api/declarative_net_request/dnr_manifest_handler.cc
@@ -28,19 +28,6 @@ namespace dnr_api = api::declarative_net_request;
namespace declarative_net_request {
-namespace {
-
-bool IsEmptyExtensionResource(const ExtensionResource& resource) {
- // Note that just checking for ExtensionResource::empty() isn't correct since
- // it checks |ExtensionResource::extension_root()::empty()| which can return
- // true for a dummy extension created as part of the webstore installation
- // flow. See crbug.com/1087348.
- return resource.extension_id().empty() && resource.extension_root().empty() &&
- resource.relative_path().empty();
-}
-
-} // namespace
-
DNRManifestHandler::DNRManifestHandler() = default;
DNRManifestHandler::~DNRManifestHandler() = default;
@@ -96,8 +83,7 @@ bool DNRManifestHandler::Parse(Extension* extension, base::string16* error) {
int index, DNRManifestData::RulesetInfo* info) {
// Path validation.
ExtensionResource resource = extension->GetResource(rulesets[index].path);
- if (IsEmptyExtensionResource(resource) ||
- resource.relative_path().ReferencesParent()) {
+ if (resource.empty() || resource.relative_path().ReferencesParent()) {
*error = ErrorUtils::FormatErrorMessageUTF16(
errors::kRulesFileIsInvalid, keys::kDeclarativeNetRequestKey,
keys::kDeclarativeRuleResourcesKey, rulesets[index].path);
diff --git a/chromium/extensions/common/api/declarative_net_request/test_utils.cc b/chromium/extensions/common/api/declarative_net_request/test_utils.cc
index ad0382daa0f..c5a54e160e5 100644
--- a/chromium/extensions/common/api/declarative_net_request/test_utils.cc
+++ b/chromium/extensions/common/api/declarative_net_request/test_utils.cc
@@ -147,8 +147,12 @@ std::unique_ptr<base::DictionaryValue> TestRuleRedirect::ToValue() const {
return dict;
}
-TestHeaderInfo::TestHeaderInfo(std::string header, std::string operation)
- : header(std::move(header)), operation(std::move(operation)) {}
+TestHeaderInfo::TestHeaderInfo(std::string header,
+ std::string operation,
+ base::Optional<std::string> value)
+ : header(std::move(header)),
+ operation(std::move(operation)),
+ value(std::move(value)) {}
TestHeaderInfo::~TestHeaderInfo() = default;
TestHeaderInfo::TestHeaderInfo(const TestHeaderInfo&) = default;
TestHeaderInfo& TestHeaderInfo::operator=(const TestHeaderInfo&) = default;
@@ -157,6 +161,7 @@ std::unique_ptr<base::DictionaryValue> TestHeaderInfo::ToValue() const {
auto dict = std::make_unique<base::DictionaryValue>();
SetValue(dict.get(), kHeaderNameKey, header);
SetValue(dict.get(), kHeaderOperationKey, operation);
+ SetValue(dict.get(), kHeaderValueKey, value);
return dict;
}
diff --git a/chromium/extensions/common/api/declarative_net_request/test_utils.h b/chromium/extensions/common/api/declarative_net_request/test_utils.h
index cd3200cd0b2..50e9253e12b 100644
--- a/chromium/extensions/common/api/declarative_net_request/test_utils.h
+++ b/chromium/extensions/common/api/declarative_net_request/test_utils.h
@@ -107,13 +107,16 @@ struct TestRuleRedirect : public DictionarySource {
};
struct TestHeaderInfo : public DictionarySource {
- TestHeaderInfo(std::string header, std::string operation);
+ TestHeaderInfo(std::string header,
+ std::string operation,
+ base::Optional<std::string> value);
~TestHeaderInfo() override;
TestHeaderInfo(const TestHeaderInfo&);
TestHeaderInfo& operator=(const TestHeaderInfo&);
base::Optional<std::string> header;
base::Optional<std::string> operation;
+ base::Optional<std::string> value;
std::unique_ptr<base::DictionaryValue> ToValue() const override;
};
diff --git a/chromium/extensions/common/api/externs_checker.py b/chromium/extensions/common/api/externs_checker.py
index 74906bd4883..09a97bb108a 100644
--- a/chromium/extensions/common/api/externs_checker.py
+++ b/chromium/extensions/common/api/externs_checker.py
@@ -7,7 +7,10 @@ class ExternsChecker(object):
src/ $ python tools/json_schema_compiler/compiler.py\
%s --root=. --generator=externs > %s"""
- def __init__(self, input_api, output_api, api_pairs):
+ def __init__(self, input_api, output_api, api_pairs=None, api_root=None):
+ if api_pairs is None:
+ api_pairs = self.ParseApiFileList(input_api, api_root=api_root)
+
self._input_api = input_api
self._output_api = output_api
self._api_pairs = api_pairs
@@ -16,6 +19,31 @@ class ExternsChecker(object):
if not input_api.os_path.exists(path):
raise OSError('Path Not Found: %s' % path)
+ @staticmethod
+ def ParseApiFileList(input_api, api_root=None):
+ """Extract the API pairs from the registered list."""
+ if api_root is None:
+ api_root = input_api.PresubmitLocalPath()
+ externs_root = input_api.os_path.join(
+ input_api.change.RepositoryRoot(), 'third_party', 'closure_compiler',
+ 'externs')
+
+ ret = {}
+ listing = input_api.os_path.join(api_root, 'generated_externs_list.txt')
+ for line in input_api.ReadFile(listing).splitlines():
+ # Skip blank & comment lines.
+ if not line.split('#', 1)[0].strip():
+ continue
+
+ source = input_api.os_path.join(api_root, line)
+ api_name, ext = line.rsplit('.', 1)
+ assert ext == 'json' or ext == 'idl'
+ externs = input_api.os_path.join(externs_root, api_name + '.js')
+ ret[source] = externs
+
+ assert ret
+ return ret
+
def RunChecks(self):
bad_files = []
affected = [f.AbsoluteLocalPath() for f in
diff --git a/chromium/extensions/common/api/generated_externs_list.txt b/chromium/extensions/common/api/generated_externs_list.txt
new file mode 100644
index 00000000000..e035738dc72
--- /dev/null
+++ b/chromium/extensions/common/api/generated_externs_list.txt
@@ -0,0 +1,12 @@
+# APIs that have their externs generated.
+# TODO(rdevlin.cronin): Add more!
+audio.idl
+automation.idl
+bluetooth.idl
+bluetooth_private.idl
+clipboard.idl
+management.json
+metrics_private.json
+mime_handler_private.idl
+networking_private.idl
+system_display.idl
diff --git a/chromium/extensions/common/api/networking_onc.idl b/chromium/extensions/common/api/networking_onc.idl
index a6071c99bcb..85691350559 100644
--- a/chromium/extensions/common/api/networking_onc.idl
+++ b/chromium/extensions/common/api/networking_onc.idl
@@ -706,6 +706,8 @@ namespace networking.onc {
IPConfigProperties[]? IPConfigs;
// The network's MAC address.
DOMString? MacAddress;
+ // Whether the network is metered.
+ boolean? Metered;
// A user friendly network name.
DOMString? Name;
// The IP configuration type for the name servers used by the network.
@@ -762,6 +764,8 @@ namespace networking.onc {
IPConfigProperties[]? IPConfigs;
// See $(ref:NetworkProperties.MacAddress).
DOMString? MacAddress;
+ // See $(ref:NetworkProperties.Metered).
+ ManagedBoolean? Metered;
// See $(ref:NetworkProperties.Name).
ManagedDOMString? Name;
// See $(ref:NetworkProperties.NameServersConfigType).
diff --git a/chromium/extensions/common/api/networking_private.idl b/chromium/extensions/common/api/networking_private.idl
index ec5efed3bde..ddedf0e4218 100644
--- a/chromium/extensions/common/api/networking_private.idl
+++ b/chromium/extensions/common/api/networking_private.idl
@@ -711,6 +711,7 @@ namespace networkingPrivate {
IPConfigType? IPAddressConfigType;
IPConfigProperties[]? IPConfigs;
DOMString? MacAddress;
+ boolean? Metered;
DOMString? Name;
IPConfigType? NameServersConfigType;
long? Priority;
@@ -739,6 +740,7 @@ namespace networkingPrivate {
ManagedIPConfigType? IPAddressConfigType;
IPConfigProperties[]? IPConfigs;
DOMString? MacAddress;
+ ManagedBoolean? Metered;
ManagedDOMString? Name;
ManagedIPConfigType? NameServersConfigType;
ManagedLong? Priority;