Index: components/exo/shell_surface.cc |
diff --git a/components/exo/shell_surface.cc b/components/exo/shell_surface.cc |
index cf11569eddcc4e7b05cfd54c775f857efd404cc8..40bbd7f01dd034cbad5bc006063ee7afb0e971a1 100644 |
--- a/components/exo/shell_surface.cc |
+++ b/components/exo/shell_surface.cc |
@@ -13,9 +13,12 @@ |
#include "base/trace_event/trace_event_argument.h" |
#include "components/exo/surface.h" |
#include "ui/aura/window.h" |
+#include "ui/aura/window_property.h" |
#include "ui/base/hit_test.h" |
#include "ui/views/widget/widget.h" |
+DECLARE_WINDOW_PROPERTY_TYPE(std::string*) |
+ |
namespace exo { |
namespace { |
@@ -64,6 +67,8 @@ views::Widget::InitParams CreateWidgetInitParams( |
//////////////////////////////////////////////////////////////////////////////// |
// ShellSurface, public: |
+DEFINE_LOCAL_WINDOW_PROPERTY_KEY(std::string*, kApplicationIdKey, nullptr) |
+ |
ShellSurface::ShellSurface(Surface* surface) : surface_(surface) { |
surface_->SetSurfaceDelegate(this); |
surface_->AddSurfaceObserver(this); |
@@ -95,6 +100,7 @@ void ShellSurface::SetToplevel() { |
widget_->GetNativeWindow()->set_owned_by_parent(false); |
widget_->GetNativeWindow()->SetName("ExoShellSurface"); |
widget_->GetNativeWindow()->AddChild(surface_); |
+ SetApplicationId(widget_->GetNativeWindow(), &application_id_); |
// The position of a standard top level shell surface is managed by Ash. |
ash::wm::GetWindowState(widget_->GetNativeWindow()) |
@@ -116,6 +122,7 @@ void ShellSurface::SetMaximized() { |
widget_->GetNativeWindow()->set_owned_by_parent(false); |
widget_->GetNativeWindow()->SetName("ExoShellSurface"); |
widget_->GetNativeWindow()->AddChild(surface_); |
+ SetApplicationId(widget_->GetNativeWindow(), &application_id_); |
} |
void ShellSurface::SetFullscreen() { |
@@ -133,6 +140,7 @@ void ShellSurface::SetFullscreen() { |
widget_->GetNativeWindow()->set_owned_by_parent(false); |
widget_->GetNativeWindow()->SetName("ExoShellSurface"); |
widget_->GetNativeWindow()->AddChild(surface_); |
+ SetApplicationId(widget_->GetNativeWindow(), &application_id_); |
} |
void ShellSurface::SetTitle(const base::string16& title) { |
@@ -144,6 +152,25 @@ void ShellSurface::SetTitle(const base::string16& title) { |
widget_->UpdateWindowTitle(); |
} |
+// static |
+void ShellSurface::SetApplicationId(aura::Window* window, |
+ std::string* application_id) { |
+ window->SetProperty(kApplicationIdKey, application_id); |
+} |
+ |
+// static |
+const std::string ShellSurface::GetApplicationId(aura::Window* window) { |
+ std::string* string_ptr = window->GetProperty(kApplicationIdKey); |
+ return string_ptr ? *string_ptr : std::string(); |
+} |
+ |
+void ShellSurface::SetApplicationId(const std::string& application_id) { |
+ TRACE_EVENT1("exo", "ShellSurface::SetApplicationId", "application_id", |
+ application_id); |
+ |
+ application_id_ = application_id; |
+} |
+ |
void ShellSurface::Move() { |
TRACE_EVENT0("exo", "ShellSurface::Move"); |
@@ -158,6 +185,7 @@ scoped_refptr<base::trace_event::TracedValue> ShellSurface::AsTracedValue() |
scoped_refptr<base::trace_event::TracedValue> value = |
new base::trace_event::TracedValue; |
value->SetString("title", base::UTF16ToUTF8(title_)); |
+ value->SetString("application_id", application_id_); |
return value; |
} |