sadrul | 0a064b9 | 2016-04-22 17:36:50 | [diff] [blame] | 1 | // Copyright 2016 The Chromium Authors. All rights reserved. |
| 2 | // Use of this source code is governed by a BSD-style license that can be |
| 3 | // found in the LICENSE file. |
| 4 | |
Scott Violet | 4c79b0d | 2017-11-17 21:47:13 | [diff] [blame] | 5 | #ifndef ASH_DISCONNECTED_APP_HANDLER_H_ |
| 6 | #define ASH_DISCONNECTED_APP_HANDLER_H_ |
sadrul | 0a064b9 | 2016-04-22 17:36:50 | [diff] [blame] | 7 | |
| 8 | #include "base/macros.h" |
sky | 02b9d14 | 2017-01-13 04:16:19 | [diff] [blame] | 9 | #include "ui/aura/window_observer.h" |
sadrul | 0a064b9 | 2016-04-22 17:36:50 | [diff] [blame] | 10 | |
sky | 002ba4a | 2016-06-03 00:56:11 | [diff] [blame] | 11 | namespace ash { |
sadrul | 0a064b9 | 2016-04-22 17:36:50 | [diff] [blame] | 12 | |
sky | 02b9d14 | 2017-01-13 04:16:19 | [diff] [blame] | 13 | // DisconnectedAppHandler is associated with a single aura Window and deletes |
| 14 | // the window when the embedded app is disconnected. This is intended to be used |
Scott Violet | 4c79b0d | 2017-11-17 21:47:13 | [diff] [blame] | 15 | // for windows created at the request of client apps. This is only used in mash. |
sky | 02b9d14 | 2017-01-13 04:16:19 | [diff] [blame] | 16 | class DisconnectedAppHandler : public aura::WindowObserver { |
sadrul | 0a064b9 | 2016-04-22 17:36:50 | [diff] [blame] | 17 | public: |
sky | 02b9d14 | 2017-01-13 04:16:19 | [diff] [blame] | 18 | // Public for WindowProperty. |
sadrul | 0a064b9 | 2016-04-22 17:36:50 | [diff] [blame] | 19 | ~DisconnectedAppHandler() override; |
| 20 | |
sky | 02b9d14 | 2017-01-13 04:16:19 | [diff] [blame] | 21 | // Creates a new DisconnectedAppHandler associated with |window|. |
| 22 | // DisconnectedAppHandler is owned by the window. |
| 23 | static void Create(aura::Window* window); |
| 24 | |
sadrul | 0a064b9 | 2016-04-22 17:36:50 | [diff] [blame] | 25 | private: |
sky | 02b9d14 | 2017-01-13 04:16:19 | [diff] [blame] | 26 | explicit DisconnectedAppHandler(aura::Window* root_window); |
| 27 | |
sky | fcf18b5 | 2016-12-06 03:53:51 | [diff] [blame] | 28 | // aura::WindowObserver: |
| 29 | void OnEmbeddedAppDisconnected(aura::Window* window) override; |
sky | 02b9d14 | 2017-01-13 04:16:19 | [diff] [blame] | 30 | |
| 31 | aura::Window* window_; |
sadrul | 0a064b9 | 2016-04-22 17:36:50 | [diff] [blame] | 32 | |
| 33 | DISALLOW_COPY_AND_ASSIGN(DisconnectedAppHandler); |
| 34 | }; |
| 35 | |
sky | 002ba4a | 2016-06-03 00:56:11 | [diff] [blame] | 36 | } // namespace ash |
sadrul | 0a064b9 | 2016-04-22 17:36:50 | [diff] [blame] | 37 | |
Scott Violet | 4c79b0d | 2017-11-17 21:47:13 | [diff] [blame] | 38 | #endif // ASH_DISCONNECTED_APP_HANDLER_H_ |