Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 1 // Copyright 2017 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 | |
| 5 #include "ui/arc/notification/arc_notification_surface_impl.h" | |
| 6 | |
| 7 #include "base/logging.h" | |
| 8 #include "components/exo/notification_surface.h" | |
| 9 #include "components/exo/surface.h" | |
| 10 #include "ui/aura/window.h" | |
| 11 #include "ui/views/controls/native/native_view_host.h" | |
| 12 | |
| 13 namespace arc { | |
| 14 | |
| 15 // Handles notification surface role of a given surface. | |
| 16 ArcNotificationSurfaceImpl::ArcNotificationSurfaceImpl( | |
| 17 exo::NotificationSurface* surface) | |
| 18 : surface_(surface) { | |
| 19 DCHECK(surface); | |
| 20 } | |
| 21 | |
| 22 gfx::Size ArcNotificationSurfaceImpl::GetSize() const { | |
| 23 return surface_->GetSize(); | |
| 24 } | |
| 25 | |
| 26 void ArcNotificationSurfaceImpl::Attach( | |
| 27 views::NativeViewHost* native_view_host) { | |
| 28 DCHECK(!native_view_host_); | |
| 29 native_view_host_ = native_view_host; | |
| 30 native_view_host->Attach(surface_->window()); | |
| 31 } | |
| 32 | |
| 33 void ArcNotificationSurfaceImpl::Detach() { | |
| 34 if (!native_view_host_) { | |
| 35 NOTREACHED(); | |
| 36 return; | |
| 37 } | |
| 38 DCHECK_EQ(surface_->window(), native_view_host_->native_view()); | |
| 39 native_view_host_->Detach(); | |
| 40 native_view_host_ = nullptr; | |
| 41 } | |
| 42 | |
| 43 bool ArcNotificationSurfaceImpl::IsAttached() const { | |
| 44 return native_view_host_; | |
| 45 } | |
| 46 | |
| 47 aura::Window* ArcNotificationSurfaceImpl::GetWindow() const { | |
| 48 return surface_->window(); | |
| 49 } | |
| 50 | |
| 51 aura::Window* ArcNotificationSurfaceImpl::GetContentWindow() const { | |
| 52 DCHECK(surface_->window()); | |
| 53 DCHECK(!surface_->window()->children().empty()); | |
|
hidehiko
2017/06/15 15:26:20
If above DCHECK fails (i.e. if surface_->window()
yoshiki
2017/06/16 11:29:08
Previously double-detach existed so we had null-ch
| |
| 54 | |
| 55 aura::Window* content_window = surface_->window()->children()[0]; | |
| 56 | |
| 57 DCHECK(!content_window); | |
| 58 DCHECK_EQ(exo::Surface::kSurfaceWindowName, content_window->GetName()); | |
| 59 | |
| 60 return content_window; | |
| 61 } | |
| 62 | |
| 63 const std::string& ArcNotificationSurfaceImpl::GetNotificationKey() const { | |
| 64 return surface_->notification_key(); | |
| 65 } | |
| 66 | |
| 67 } // namespace arc | |
| OLD | NEW |