Index: mojo/shell/public/cpp/lib/shell_connection.cc |
diff --git a/mojo/shell/public/cpp/lib/shell_connection.cc b/mojo/shell/public/cpp/lib/shell_connection.cc |
index 8e03fb04ba79ec738b5bad59ac4f4813a463252f..1a3d398dabff3e053a3c2b8636520128a8438b6a 100644 |
--- a/mojo/shell/public/cpp/lib/shell_connection.cc |
+++ b/mojo/shell/public/cpp/lib/shell_connection.cc |
@@ -9,7 +9,9 @@ |
#include "base/logging.h" |
#include "base/message_loop/message_loop.h" |
#include "mojo/public/cpp/bindings/interface_ptr.h" |
+#include "mojo/shell/public/cpp/connector.h" |
#include "mojo/shell/public/cpp/lib/connection_impl.h" |
+#include "mojo/shell/public/cpp/lib/connector_impl.h" |
#include "mojo/shell/public/cpp/shell_client.h" |
#include "mojo/shell/public/cpp/shell_connection.h" |
@@ -84,15 +86,6 @@ class AppRefCountImpl : public AppRefCount { |
DISALLOW_COPY_AND_ASSIGN(AppRefCountImpl); |
}; |
- |
-ShellConnection::ConnectParams::ConnectParams(const std::string& url) |
- : url_(url), |
- filter_(shell::mojom::CapabilityFilter::New()), |
- user_id_(shell::mojom::Shell::kUserInherit) { |
- filter_->filter.SetToEmpty(); |
-} |
-ShellConnection::ConnectParams::~ConnectParams() {} |
- |
//////////////////////////////////////////////////////////////////////////////// |
// ShellConnection, public: |
@@ -125,39 +118,16 @@ void ShellConnection::WaitForInitialize() { |
// ShellConnection, Shell implementation: |
scoped_ptr<Connection> ShellConnection::Connect(const std::string& url) { |
- ConnectParams params(url); |
- params.set_filter(CreatePermissiveCapabilityFilter()); |
- return Connect(¶ms); |
+ return connector_->Connect(url); |
} |
-scoped_ptr<Connection> ShellConnection::Connect(ConnectParams* params) { |
- if (!shell_) |
- return nullptr; |
- DCHECK(params); |
- std::string application_url = params->url().spec(); |
- // We allow all interfaces on outgoing connections since we are presumably in |
- // a position to know who we're talking to. |
- // TODO(beng): is this a valid assumption or do we need to figure some way to |
- // filter here too? |
- std::set<std::string> allowed; |
- allowed.insert("*"); |
- shell::mojom::InterfaceProviderPtr local_interfaces; |
- shell::mojom::InterfaceProviderRequest local_request = |
- GetProxy(&local_interfaces); |
- shell::mojom::InterfaceProviderPtr remote_interfaces; |
- shell::mojom::InterfaceProviderRequest remote_request = |
- GetProxy(&remote_interfaces); |
- scoped_ptr<internal::ConnectionImpl> registry(new internal::ConnectionImpl( |
- application_url, application_url, |
- shell::mojom::Shell::kInvalidApplicationID, params->user_id(), |
- std::move(remote_interfaces), std::move(local_request), allowed)); |
- shell_->Connect(application_url, |
- params->user_id(), |
- std::move(remote_request), |
- std::move(local_interfaces), |
- params->TakeFilter(), |
- registry->GetConnectCallback()); |
- return std::move(registry); |
+scoped_ptr<Connection> ShellConnection::Connect( |
+ Connector::ConnectParams* params) { |
+ return connector_->Connect(params); |
+} |
+ |
+scoped_ptr<Connector> ShellConnection::CloneConnector() const { |
+ return connector_->Clone(); |
} |
void ShellConnection::Quit() { |
@@ -186,6 +156,11 @@ void ShellConnection::Initialize(shell::mojom::ShellPtr shell, |
uint32_t user_id) { |
shell_ = std::move(shell); |
shell_.set_connection_error_handler([this]() { OnConnectionError(); }); |
+ |
+ shell::mojom::ConnectorPtr connector; |
+ shell_->GetConnector(GetProxy(&connector)); |
+ connector_.reset(new ConnectorImpl(connector.PassInterface())); |
+ |
client_->Initialize(this, url, id, user_id); |
} |