| Index: services/shell/shell.cc
|
| diff --git a/services/shell/shell.cc b/services/shell/shell.cc
|
| index b64e5a4a14d42b544487ca966eb631d8e63e98d8..4d9d42457d5c2bbd62d1223b3d63c177f69bd997 100644
|
| --- a/services/shell/shell.cc
|
| +++ b/services/shell/shell.cc
|
| @@ -38,6 +38,7 @@ const char kCapabilityClass_UserID[] = "shell:user_id";
|
| const char kCapabilityClass_ClientProcess[] = "shell:client_process";
|
| const char kCapabilityClass_InstanceName[] = "shell:instance_name";
|
| const char kCapabilityClass_AllUsers[] = "shell:all_users";
|
| +const char kCapabilityClass_ExplicitClass[] = "shell:explicit_class";
|
|
|
| void EmptyResolverCallback(mojom::ResolveResultPtr result) {}
|
|
|
| @@ -158,6 +159,14 @@ class Shell::Instance : public mojom::Connector,
|
| source->capability_spec_, identity_, capability_spec_);
|
| source_id = source->id();
|
| }
|
| +
|
| + // The target has specified that sources must request one of its provided
|
| + // classes instead of specifying a wild-card for interfaces.
|
| + if (HasClass(capability_spec_, kCapabilityClass_ExplicitClass) &&
|
| + (request.interfaces.count("*") != 0)) {
|
| + request.interfaces = Interfaces();
|
| + }
|
| +
|
| shell_client_->AcceptConnection(
|
| mojom::Identity::From(params->source()), source_id,
|
| params->TakeRemoteInterfaces(), params->TakeLocalInterfaces(),
|
|
|