Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(435)

Side by Side Diff: components/exo/shell_surface.cc

Issue 1491843002: exo: Add ShellSurface::SetApplicationId. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « components/exo/shell_surface.h ('k') | components/exo/shell_surface_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "components/exo/shell_surface.h" 5 #include "components/exo/shell_surface.h"
6 6
7 #include "ash/shell.h" 7 #include "ash/shell.h"
8 #include "ash/shell_window_ids.h" 8 #include "ash/shell_window_ids.h"
9 #include "ash/wm/window_state.h" 9 #include "ash/wm/window_state.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
11 #include "base/strings/utf_string_conversions.h" 11 #include "base/strings/utf_string_conversions.h"
12 #include "base/trace_event/trace_event.h" 12 #include "base/trace_event/trace_event.h"
13 #include "base/trace_event/trace_event_argument.h" 13 #include "base/trace_event/trace_event_argument.h"
14 #include "components/exo/surface.h" 14 #include "components/exo/surface.h"
15 #include "ui/aura/window.h" 15 #include "ui/aura/window.h"
16 #include "ui/aura/window_property.h"
16 #include "ui/base/hit_test.h" 17 #include "ui/base/hit_test.h"
17 #include "ui/views/widget/widget.h" 18 #include "ui/views/widget/widget.h"
18 19
20 DECLARE_WINDOW_PROPERTY_TYPE(std::string*)
21
19 namespace exo { 22 namespace exo {
20 namespace { 23 namespace {
21 24
22 class CustomFrameView : public views::NonClientFrameView { 25 class CustomFrameView : public views::NonClientFrameView {
23 public: 26 public:
24 explicit CustomFrameView(views::Widget* widget) : widget_(widget) {} 27 explicit CustomFrameView(views::Widget* widget) : widget_(widget) {}
25 ~CustomFrameView() override {} 28 ~CustomFrameView() override {}
26 29
27 // Overridden from views::NonClientFrameView: 30 // Overridden from views::NonClientFrameView:
28 gfx::Rect GetBoundsForClientView() const override { return bounds(); } 31 gfx::Rect GetBoundsForClientView() const override { return bounds(); }
(...skipping 28 matching lines...) Expand all
57 params.parent = ash::Shell::GetContainer( 60 params.parent = ash::Shell::GetContainer(
58 ash::Shell::GetPrimaryRootWindow(), ash::kShellWindowId_DefaultContainer); 61 ash::Shell::GetPrimaryRootWindow(), ash::kShellWindowId_DefaultContainer);
59 return params; 62 return params;
60 } 63 }
61 64
62 } // namespace 65 } // namespace
63 66
64 //////////////////////////////////////////////////////////////////////////////// 67 ////////////////////////////////////////////////////////////////////////////////
65 // ShellSurface, public: 68 // ShellSurface, public:
66 69
70 DEFINE_LOCAL_WINDOW_PROPERTY_KEY(std::string*, kApplicationIdKey, nullptr)
71
67 ShellSurface::ShellSurface(Surface* surface) : surface_(surface) { 72 ShellSurface::ShellSurface(Surface* surface) : surface_(surface) {
68 surface_->SetSurfaceDelegate(this); 73 surface_->SetSurfaceDelegate(this);
69 surface_->AddSurfaceObserver(this); 74 surface_->AddSurfaceObserver(this);
70 surface_->Show(); 75 surface_->Show();
71 set_owned_by_client(); 76 set_owned_by_client();
72 } 77 }
73 78
74 ShellSurface::~ShellSurface() { 79 ShellSurface::~ShellSurface() {
75 if (surface_) { 80 if (surface_) {
76 surface_->SetSurfaceDelegate(nullptr); 81 surface_->SetSurfaceDelegate(nullptr);
(...skipping 11 matching lines...) Expand all
88 return; 93 return;
89 } 94 }
90 95
91 views::Widget::InitParams params = CreateWidgetInitParams(this); 96 views::Widget::InitParams params = CreateWidgetInitParams(this);
92 params.bounds = gfx::Rect(gfx::Size(1, 1)); 97 params.bounds = gfx::Rect(gfx::Size(1, 1));
93 widget_.reset(new views::Widget); 98 widget_.reset(new views::Widget);
94 widget_->Init(params); 99 widget_->Init(params);
95 widget_->GetNativeWindow()->set_owned_by_parent(false); 100 widget_->GetNativeWindow()->set_owned_by_parent(false);
96 widget_->GetNativeWindow()->SetName("ExoShellSurface"); 101 widget_->GetNativeWindow()->SetName("ExoShellSurface");
97 widget_->GetNativeWindow()->AddChild(surface_); 102 widget_->GetNativeWindow()->AddChild(surface_);
103 SetApplicationId(widget_->GetNativeWindow(), &application_id_);
98 104
99 // The position of a standard top level shell surface is managed by Ash. 105 // The position of a standard top level shell surface is managed by Ash.
100 ash::wm::GetWindowState(widget_->GetNativeWindow()) 106 ash::wm::GetWindowState(widget_->GetNativeWindow())
101 ->set_window_position_managed(true); 107 ->set_window_position_managed(true);
102 } 108 }
103 109
104 void ShellSurface::SetMaximized() { 110 void ShellSurface::SetMaximized() {
105 TRACE_EVENT0("exo", "ShellSurface::SetMaximized"); 111 TRACE_EVENT0("exo", "ShellSurface::SetMaximized");
106 112
107 if (widget_) { 113 if (widget_) {
108 DLOG(WARNING) << "Shell surface already mapped"; 114 DLOG(WARNING) << "Shell surface already mapped";
109 return; 115 return;
110 } 116 }
111 117
112 views::Widget::InitParams params = CreateWidgetInitParams(this); 118 views::Widget::InitParams params = CreateWidgetInitParams(this);
113 params.show_state = ui::SHOW_STATE_MAXIMIZED; 119 params.show_state = ui::SHOW_STATE_MAXIMIZED;
114 widget_.reset(new views::Widget); 120 widget_.reset(new views::Widget);
115 widget_->Init(params); 121 widget_->Init(params);
116 widget_->GetNativeWindow()->set_owned_by_parent(false); 122 widget_->GetNativeWindow()->set_owned_by_parent(false);
117 widget_->GetNativeWindow()->SetName("ExoShellSurface"); 123 widget_->GetNativeWindow()->SetName("ExoShellSurface");
118 widget_->GetNativeWindow()->AddChild(surface_); 124 widget_->GetNativeWindow()->AddChild(surface_);
125 SetApplicationId(widget_->GetNativeWindow(), &application_id_);
119 } 126 }
120 127
121 void ShellSurface::SetFullscreen() { 128 void ShellSurface::SetFullscreen() {
122 TRACE_EVENT0("exo", "ShellSurface::SetFullscreen"); 129 TRACE_EVENT0("exo", "ShellSurface::SetFullscreen");
123 130
124 if (widget_) { 131 if (widget_) {
125 DLOG(WARNING) << "Shell surface already mapped"; 132 DLOG(WARNING) << "Shell surface already mapped";
126 return; 133 return;
127 } 134 }
128 135
129 views::Widget::InitParams params = CreateWidgetInitParams(this); 136 views::Widget::InitParams params = CreateWidgetInitParams(this);
130 params.show_state = ui::SHOW_STATE_FULLSCREEN; 137 params.show_state = ui::SHOW_STATE_FULLSCREEN;
131 widget_.reset(new views::Widget); 138 widget_.reset(new views::Widget);
132 widget_->Init(params); 139 widget_->Init(params);
133 widget_->GetNativeWindow()->set_owned_by_parent(false); 140 widget_->GetNativeWindow()->set_owned_by_parent(false);
134 widget_->GetNativeWindow()->SetName("ExoShellSurface"); 141 widget_->GetNativeWindow()->SetName("ExoShellSurface");
135 widget_->GetNativeWindow()->AddChild(surface_); 142 widget_->GetNativeWindow()->AddChild(surface_);
143 SetApplicationId(widget_->GetNativeWindow(), &application_id_);
136 } 144 }
137 145
138 void ShellSurface::SetTitle(const base::string16& title) { 146 void ShellSurface::SetTitle(const base::string16& title) {
139 TRACE_EVENT1("exo", "ShellSurface::SetTitle", "title", 147 TRACE_EVENT1("exo", "ShellSurface::SetTitle", "title",
140 base::UTF16ToUTF8(title)); 148 base::UTF16ToUTF8(title));
141 149
142 title_ = title; 150 title_ = title;
143 if (widget_) 151 if (widget_)
144 widget_->UpdateWindowTitle(); 152 widget_->UpdateWindowTitle();
145 } 153 }
146 154
155 // static
156 void ShellSurface::SetApplicationId(aura::Window* window,
157 std::string* application_id) {
158 window->SetProperty(kApplicationIdKey, application_id);
159 }
160
161 // static
162 const std::string ShellSurface::GetApplicationId(aura::Window* window) {
163 std::string* string_ptr = window->GetProperty(kApplicationIdKey);
164 return string_ptr ? *string_ptr : std::string();
165 }
166
167 void ShellSurface::SetApplicationId(const std::string& application_id) {
168 TRACE_EVENT1("exo", "ShellSurface::SetApplicationId", "application_id",
169 application_id);
170
171 application_id_ = application_id;
172 }
173
147 void ShellSurface::Move() { 174 void ShellSurface::Move() {
148 TRACE_EVENT0("exo", "ShellSurface::Move"); 175 TRACE_EVENT0("exo", "ShellSurface::Move");
149 176
150 if (widget_) { 177 if (widget_) {
151 widget_->RunMoveLoop(gfx::Vector2d(), views::Widget::MOVE_LOOP_SOURCE_MOUSE, 178 widget_->RunMoveLoop(gfx::Vector2d(), views::Widget::MOVE_LOOP_SOURCE_MOUSE,
152 views::Widget::MOVE_LOOP_ESCAPE_BEHAVIOR_DONT_HIDE); 179 views::Widget::MOVE_LOOP_ESCAPE_BEHAVIOR_DONT_HIDE);
153 } 180 }
154 } 181 }
155 182
156 scoped_refptr<base::trace_event::TracedValue> ShellSurface::AsTracedValue() 183 scoped_refptr<base::trace_event::TracedValue> ShellSurface::AsTracedValue()
157 const { 184 const {
158 scoped_refptr<base::trace_event::TracedValue> value = 185 scoped_refptr<base::trace_event::TracedValue> value =
159 new base::trace_event::TracedValue; 186 new base::trace_event::TracedValue;
160 value->SetString("title", base::UTF16ToUTF8(title_)); 187 value->SetString("title", base::UTF16ToUTF8(title_));
188 value->SetString("application_id", application_id_);
161 return value; 189 return value;
162 } 190 }
163 191
164 //////////////////////////////////////////////////////////////////////////////// 192 ////////////////////////////////////////////////////////////////////////////////
165 // SurfaceDelegate overrides: 193 // SurfaceDelegate overrides:
166 194
167 void ShellSurface::OnSurfaceCommit() { 195 void ShellSurface::OnSurfaceCommit() {
168 surface_->CommitSurfaceHierarchy(); 196 surface_->CommitSurfaceHierarchy();
169 if (widget_) { 197 if (widget_) {
170 // Update surface bounds and widget size. 198 // Update surface bounds and widget size.
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
217 } 245 }
218 246
219 //////////////////////////////////////////////////////////////////////////////// 247 ////////////////////////////////////////////////////////////////////////////////
220 // views::Views overrides: 248 // views::Views overrides:
221 249
222 gfx::Size ShellSurface::GetPreferredSize() const { 250 gfx::Size ShellSurface::GetPreferredSize() const {
223 return surface_ ? surface_->GetPreferredSize() : gfx::Size(); 251 return surface_ ? surface_->GetPreferredSize() : gfx::Size();
224 } 252 }
225 253
226 } // namespace exo 254 } // namespace exo
OLDNEW
« no previous file with comments | « components/exo/shell_surface.h ('k') | components/exo/shell_surface_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698