Index: mojo/services/window_manager/window_manager_app.cc |
diff --git a/mojo/services/window_manager/window_manager_app.cc b/mojo/services/window_manager/window_manager_app.cc |
index bc6ca00042dbf24d22241ec278aba3f51cfd8fbe..2ba436a291a4bb42f41e83d83b71e734b79d6add 100644 |
--- a/mojo/services/window_manager/window_manager_app.cc |
+++ b/mojo/services/window_manager/window_manager_app.cc |
@@ -90,7 +90,13 @@ class WindowManagerApp::WindowManagerInternalImpl |
ScopedMessagePipeHandle window_manager_pipe) override { |
// |wm_internal| is tied to the life of the pipe. |
WindowManagerImpl* wm = new WindowManagerImpl(app_, true); |
- BindToPipe(wm, window_manager_pipe.Pass()); |
+ WeakBindToPipe(wm, window_manager_pipe.Pass()); |
+ } |
+ |
+ // InterfaceImpl: |
+ void OnConnectionError() override { |
+ // Necessary since we used WeakBindToPipe and are not automatically deleted. |
+ delete this; |
} |
private: |
@@ -122,7 +128,9 @@ WindowManagerApp::WindowManagerApp( |
dummy_delegate_(new DummyDelegate) { |
} |
-WindowManagerApp::~WindowManagerApp() {} |
+WindowManagerApp::~WindowManagerApp() { |
+ STLDeleteElements(&connections_); |
+} |
// static |
View* WindowManagerApp::GetViewForWindow(aura::Window* window) { |