| Index: components/exo/display.cc
|
| diff --git a/components/exo/display.cc b/components/exo/display.cc
|
| index 7039936a1db49b11a4de1b0ff40cd987806c3a5f..56829ba78af91f254f6ad00469495531a8976ff0 100644
|
| --- a/components/exo/display.cc
|
| +++ b/components/exo/display.cc
|
| @@ -12,6 +12,8 @@
|
| #include "base/memory/ptr_util.h"
|
| #include "base/trace_event/trace_event.h"
|
| #include "base/trace_event/trace_event_argument.h"
|
| +#include "components/exo/notification_surface.h"
|
| +#include "components/exo/notification_surface_registry.h"
|
| #include "components/exo/shared_memory.h"
|
| #include "components/exo/shell_surface.h"
|
| #include "components/exo/sub_surface.h"
|
| @@ -32,7 +34,8 @@ namespace exo {
|
| ////////////////////////////////////////////////////////////////////////////////
|
| // Display, public:
|
|
|
| -Display::Display() {}
|
| +Display::Display()
|
| + : notification_surface_registry_(new NotificationSurfaceRegistry) {}
|
|
|
| Display::~Display() {}
|
|
|
| @@ -179,4 +182,24 @@ std::unique_ptr<SubSurface> Display::CreateSubSurface(Surface* surface,
|
| return base::WrapUnique(new SubSurface(surface, parent));
|
| }
|
|
|
| +std::unique_ptr<NotificationSurface> Display::CreateNotificationSurface(
|
| + Surface* surface,
|
| + const std::string& notification_id) {
|
| + TRACE_EVENT2("exo", "Display::CreateNotificationSurface", "surface",
|
| + surface->AsTracedValue(), "notification_id", notification_id);
|
| +
|
| + if (surface->HasSurfaceDelegate()) {
|
| + DLOG(ERROR) << "Surface has already been assigned a role";
|
| + return nullptr;
|
| + }
|
| +
|
| + if (notification_surface_registry_->GetSurface(notification_id) != nullptr) {
|
| + DLOG(ERROR) << "Invalid notification id, id=" << notification_id;
|
| + return nullptr;
|
| + }
|
| +
|
| + return base::WrapUnique(new NotificationSurface(
|
| + notification_surface_registry(), surface, notification_id));
|
| +}
|
| +
|
| } // namespace exo
|
|
|