| Index: mojo/application/public/cpp/application_connection.h
|
| diff --git a/mojo/application/public/cpp/application_connection.h b/mojo/application/public/cpp/application_connection.h
|
| index 5fe14ef84109c2a2978e1ca41de6deaa10db4d13..e4affba14d589e8a25f8da1e9799f1a33a44808d 100644
|
| --- a/mojo/application/public/cpp/application_connection.h
|
| +++ b/mojo/application/public/cpp/application_connection.h
|
| @@ -7,6 +7,7 @@
|
|
|
| #include <string>
|
|
|
| +#include "base/memory/weak_ptr.h"
|
| #include "mojo/application/public/cpp/lib/interface_factory_connector.h"
|
| #include "mojo/application/public/interfaces/service_provider.mojom.h"
|
|
|
| @@ -45,11 +46,20 @@ class ServiceConnector;
|
| // close a connection, call CloseConnection which will destroy this object.
|
| class ApplicationConnection {
|
| public:
|
| - ApplicationConnection();
|
| + virtual ~ApplicationConnection() {}
|
|
|
| - // Closes the connection and destroys this object. This is the only valid way
|
| - // to destroy this object.
|
| - void CloseConnection();
|
| + class TestApi {
|
| + public:
|
| + explicit TestApi(ApplicationConnection* connection)
|
| + : connection_(connection) {
|
| + }
|
| + base::WeakPtr<ApplicationConnection> GetWeakPtr() {
|
| + return connection_->GetWeakPtr();
|
| + }
|
| +
|
| + private:
|
| + ApplicationConnection* connection_;
|
| + };
|
|
|
| // See class description for details.
|
| virtual void SetServiceConnector(ServiceConnector* connector) = 0;
|
| @@ -107,21 +117,12 @@ class ApplicationConnection {
|
| const Closure& handler) = 0;
|
|
|
| protected:
|
| - virtual ~ApplicationConnection();
|
| -
|
| - // Called to give the derived type to perform some cleanup before destruction.
|
| - virtual void OnCloseConnection() = 0;
|
| -
|
| - private:
|
| // Returns true if the connector was set, false if it was not set (e.g. by
|
| // some filtering policy preventing this interface from being exposed).
|
| virtual bool SetServiceConnectorForName(ServiceConnector* service_connector,
|
| const std::string& name) = 0;
|
|
|
| - // Ensures that CloseConnection can only be called once and the
|
| - // ApplicationConnection's destructor can only be called after the connection
|
| - // is closed.
|
| - bool connection_closed_;
|
| + virtual base::WeakPtr<ApplicationConnection> GetWeakPtr() = 0;
|
| };
|
|
|
| } // namespace mojo
|
|
|