| Index: chrome/common/extensions/extension_messages.cc
|
| diff --git a/chrome/common/extensions/extension_messages.cc b/chrome/common/extensions/extension_messages.cc
|
| index b38823495e8a3d0631f460049570856c4bd35b61..fe88896287fa805f6745be8bba3f72b4d6467200 100644
|
| --- a/chrome/common/extensions/extension_messages.cc
|
| +++ b/chrome/common/extensions/extension_messages.cc
|
| @@ -24,10 +24,14 @@ ExtensionMsg_Loaded_Params::ExtensionMsg_Loaded_Params(
|
| }
|
|
|
| ExtensionMsg_Loaded_Params::ExtensionMsg_Loaded_Params(
|
| - const Extension* extension)
|
| + const Extension* extension,
|
| + const ExtensionPermissionSet* active)
|
| : manifest(new DictionaryValue()),
|
| location(extension->location()),
|
| path(extension->path()),
|
| + apis(active->apis()),
|
| + explicit_hosts(active->explicit_hosts()),
|
| + scriptable_hosts(active->scriptable_hosts()),
|
| id(extension->id()),
|
| creation_flags(extension->creation_flags()) {
|
| // As we need more bits of extension data in the renderer, add more keys to
|
| @@ -65,6 +69,11 @@ scoped_refptr<Extension>
|
| return extension;
|
| }
|
|
|
| +const ExtensionPermissionSet*
|
| + ExtensionMsg_Loaded_Params::GetActivePermissions() const {
|
| + return new ExtensionPermissionSet(apis, explicit_hosts, scriptable_hosts);
|
| +}
|
| +
|
| namespace IPC {
|
|
|
| template <>
|
| @@ -101,8 +110,15 @@ bool ParamTraits<URLPattern>::Read(const Message* m, void** iter,
|
| !ReadParam(m, iter, &spec))
|
| return false;
|
|
|
| + // TODO(jstritar): We don't want the URLPattern to fail parsing when the
|
| + // scheme is invalid. Instead, the pattern should parse but it should not
|
| + // match the invalid patterns. We get around this by setting the valid
|
| + // schemes after parsing the pattern. Update these method calls once we can
|
| + // ignore scheme validation with URLPattern parse options. crbug.com/90544
|
| + p->SetValidSchemes(URLPattern::SCHEME_ALL);
|
| + URLPattern::ParseResult result = p->Parse(spec, URLPattern::IGNORE_PORTS);
|
| p->SetValidSchemes(valid_schemes);
|
| - return URLPattern::PARSE_SUCCESS == p->Parse(spec, URLPattern::IGNORE_PORTS);
|
| + return URLPattern::PARSE_SUCCESS == result;
|
| }
|
|
|
| void ParamTraits<URLPattern>::Log(const param_type& p, std::string* l) {
|
| @@ -116,9 +132,7 @@ void ParamTraits<URLPatternSet>::Write(Message* m, const param_type& p) {
|
| bool ParamTraits<URLPatternSet>::Read(const Message* m, void** iter,
|
| param_type* p) {
|
| std::set<URLPattern> patterns;
|
| - bool success =
|
| - ReadParam(m, iter, &patterns);
|
| - if (!success)
|
| + if (!ReadParam(m, iter, &patterns))
|
| return false;
|
|
|
| for (std::set<URLPattern>::iterator i = patterns.begin();
|
| @@ -131,12 +145,35 @@ void ParamTraits<URLPatternSet>::Log(const param_type& p, std::string* l) {
|
| LogParam(p.patterns(), l);
|
| }
|
|
|
| +void ParamTraits<ExtensionAPIPermission::ID>::Write(
|
| + Message* m, const param_type& p) {
|
| + WriteParam(m, static_cast<int>(p));
|
| +}
|
| +
|
| +bool ParamTraits<ExtensionAPIPermission::ID>::Read(
|
| + const Message* m, void** iter, param_type* p) {
|
| + int api_id = -2;
|
| + if (!ReadParam(m, iter, &api_id))
|
| + return false;
|
| +
|
| + *p = static_cast<ExtensionAPIPermission::ID>(api_id);
|
| + return true;
|
| +}
|
| +
|
| +void ParamTraits<ExtensionAPIPermission::ID>::Log(
|
| + const param_type& p, std::string* l) {
|
| + LogParam(static_cast<int>(p), l);
|
| +}
|
| +
|
| void ParamTraits<ExtensionMsg_Loaded_Params>::Write(Message* m,
|
| const param_type& p) {
|
| WriteParam(m, p.location);
|
| WriteParam(m, p.path);
|
| WriteParam(m, *(p.manifest));
|
| WriteParam(m, p.creation_flags);
|
| + WriteParam(m, p.apis);
|
| + WriteParam(m, p.explicit_hosts);
|
| + WriteParam(m, p.scriptable_hosts);
|
| }
|
|
|
| bool ParamTraits<ExtensionMsg_Loaded_Params>::Read(const Message* m,
|
| @@ -146,7 +183,10 @@ bool ParamTraits<ExtensionMsg_Loaded_Params>::Read(const Message* m,
|
| return ReadParam(m, iter, &p->location) &&
|
| ReadParam(m, iter, &p->path) &&
|
| ReadParam(m, iter, p->manifest.get()) &&
|
| - ReadParam(m, iter, &p->creation_flags);
|
| + ReadParam(m, iter, &p->creation_flags) &&
|
| + ReadParam(m, iter, &p->apis) &&
|
| + ReadParam(m, iter, &p->explicit_hosts) &&
|
| + ReadParam(m, iter, &p->scriptable_hosts);
|
| }
|
|
|
| void ParamTraits<ExtensionMsg_Loaded_Params>::Log(const param_type& p,
|
|
|