| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 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 | 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 "ash/common/devtools/ash_devtools_dom_agent.h" | 5 #include "ash/common/devtools/ash_devtools_dom_agent.h" |
| 6 | 6 |
| 7 #include "ash/common/wm_window.h" | 7 #include "ash/common/wm_window.h" |
| 8 #include "ash/public/cpp/shell_window_ids.h" | 8 #include "ash/public/cpp/shell_window_ids.h" |
| 9 #include "ash/root_window_controller.h" | 9 #include "ash/root_window_controller.h" |
| 10 #include "ash/shell.h" | 10 #include "ash/shell.h" |
| (...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 130 } | 130 } |
| 131 | 131 |
| 132 ui::devtools::protocol::Response AshDevToolsDOMAgent::hideHighlight() { | 132 ui::devtools::protocol::Response AshDevToolsDOMAgent::hideHighlight() { |
| 133 if (widget_for_highlighting_ && widget_for_highlighting_->IsVisible()) | 133 if (widget_for_highlighting_ && widget_for_highlighting_->IsVisible()) |
| 134 widget_for_highlighting_->Hide(); | 134 widget_for_highlighting_->Hide(); |
| 135 return ui::devtools::protocol::Response::OK(); | 135 return ui::devtools::protocol::Response::OK(); |
| 136 } | 136 } |
| 137 | 137 |
| 138 // Handles removing windows. | 138 // Handles removing windows. |
| 139 void AshDevToolsDOMAgent::OnWindowHierarchyChanging( | 139 void AshDevToolsDOMAgent::OnWindowHierarchyChanging( |
| 140 const HierarchyChangeParams& params) { | 140 const aura::WindowObserver::HierarchyChangeParams& params) { |
| 141 // Only trigger this when params.receiver == params.old_parent. | 141 // Only trigger this when params.receiver == params.old_parent. |
| 142 // Only removals are handled here. Removing a node can occur as a result of | 142 // Only removals are handled here. Removing a node can occur as a result of |
| 143 // reorganizing a window or just destroying it. OnWindowHierarchyChanged | 143 // reorganizing a window or just destroying it. OnWindowHierarchyChanged |
| 144 // is only called if there is a new_parent. The only case this method isn't | 144 // is only called if there is a new_parent. The only case this method isn't |
| 145 // called is when adding a node because old_parent is then null. | 145 // called is when adding a node because old_parent is then null. |
| 146 // Finally, We only trigger this 0 or 1 times as an old_parent will | 146 // Finally, We only trigger this 0 or 1 times as an old_parent will |
| 147 // either exist and only call this callback once, or not at all. | 147 // either exist and only call this callback once, or not at all. |
| 148 if (params.receiver == params.old_parent) | 148 if (params.receiver == params.old_parent) |
| 149 RemoveWindowTree(WmWindow::Get(params.target), true); | 149 RemoveWindowTree(WmWindow::Get(params.target), true); |
| 150 } | 150 } |
| 151 | 151 |
| 152 // Handles adding windows. | 152 // Handles adding windows. |
| 153 void AshDevToolsDOMAgent::OnWindowHierarchyChanged( | 153 void AshDevToolsDOMAgent::OnWindowHierarchyChanged( |
| 154 const HierarchyChangeParams& params) { | 154 const aura::WindowObserver::HierarchyChangeParams& params) { |
| 155 // Only trigger this when params.receiver == params.new_parent. | 155 // Only trigger this when params.receiver == params.new_parent. |
| 156 // If there is an old_parent + new_parent, then this window's node was | 156 // If there is an old_parent + new_parent, then this window's node was |
| 157 // removed in OnWindowHierarchyChanging and will now be added to the | 157 // removed in OnWindowHierarchyChanging and will now be added to the |
| 158 // new_parent. If there is only a new_parent, OnWindowHierarchyChanging is | 158 // new_parent. If there is only a new_parent, OnWindowHierarchyChanging is |
| 159 // never called and the window is only added here. | 159 // never called and the window is only added here. |
| 160 if (params.receiver == params.new_parent) | 160 if (params.receiver == params.new_parent) |
| 161 AddWindowTree(WmWindow::Get(params.target)); | 161 AddWindowTree(WmWindow::Get(params.target)); |
| 162 } | 162 } |
| 163 | 163 |
| 164 void AshDevToolsDOMAgent::OnWindowStackingChanged(aura::Window* window) { | 164 // For WindowElement observers |
| 165 RemoveWindowTree(WmWindow::Get(window), false); | 165 void AshDevToolsDOMAgent::NotifyOnWindowHierarchyChanging( |
| 166 AddWindowTree(WmWindow::Get(window)); | 166 const aura::WindowObserver::HierarchyChangeParams& params) { |
| 167 OnWindowHierarchyChanging(params); |
| 167 } | 168 } |
| 168 | 169 |
| 169 void AshDevToolsDOMAgent::OnWindowBoundsChanged(aura::Window* window, | 170 void AshDevToolsDOMAgent::NotifyOnWindowHierarchyChanged( |
| 170 const gfx::Rect& old_bounds, | 171 const aura::WindowObserver::HierarchyChangeParams& params) { |
| 171 const gfx::Rect& new_bounds) { | 172 OnWindowHierarchyChanged(params); |
| 172 for (auto& observer : observers_) | |
| 173 observer.OnWindowBoundsChanged(WmWindow::Get(window)); | |
| 174 } | 173 } |
| 175 | 174 |
| 176 void AshDevToolsDOMAgent::OnWillRemoveView(views::Widget* widget, | 175 void AshDevToolsDOMAgent::NotifyRemoveWindowTree(WmWindow* window, |
| 177 views::View* view) { | 176 bool remove_observer) { |
| 178 if (view == widget->GetRootView()) | 177 RemoveWindowTree(window, remove_observer); |
| 179 RemoveViewTree(view, nullptr, true); | |
| 180 } | 178 } |
| 181 | 179 |
| 182 void AshDevToolsDOMAgent::OnWidgetBoundsChanged(views::Widget* widget, | 180 void AshDevToolsDOMAgent::NotifyAddWindowTree(WmWindow* window) { |
| 183 const gfx::Rect& new_bounds) { | 181 AddWindowTree(window); |
| 182 } |
| 183 |
| 184 void AshDevToolsDOMAgent::NotfiyOnWindowBoundsChanged(WmWindow* window) { |
| 185 for (auto& observer : observers_) |
| 186 observer.OnWindowBoundsChanged(window); |
| 187 } |
| 188 |
| 189 // For ViewElement observers |
| 190 void AshDevToolsDOMAgent::NotifyRemoveViewTree(views::View* view, |
| 191 views::View* parent, |
| 192 bool remove_observer) { |
| 193 RemoveViewTree(view, parent, true); |
| 194 } |
| 195 |
| 196 void AshDevToolsDOMAgent::NotifyAddViewTree(views::View* view) { |
| 197 AddViewTree(view); |
| 198 } |
| 199 |
| 200 void AshDevToolsDOMAgent::NotifyOnViewBoundsChanged(views::View* view) { |
| 201 for (auto& observer : observers_) |
| 202 observer.OnViewBoundsChanged(view); |
| 203 } |
| 204 |
| 205 // For WidgetElement observers |
| 206 void AshDevToolsDOMAgent::NotifyOnWidgetBoundsChanged(views::Widget* widget) { |
| 184 for (auto& observer : observers_) | 207 for (auto& observer : observers_) |
| 185 observer.OnWidgetBoundsChanged(widget); | 208 observer.OnWidgetBoundsChanged(widget); |
| 186 } | 209 } |
| 187 | 210 |
| 188 void AshDevToolsDOMAgent::OnChildViewRemoved(views::View* parent, | 211 void AshDevToolsDOMAgent::OnUIElementBoundsChanged(UIElement* ui_element) { |
| 189 views::View* view) { | |
| 190 RemoveViewTree(view, parent, true); | |
| 191 } | |
| 192 | |
| 193 void AshDevToolsDOMAgent::OnChildViewAdded(views::View* parent, | |
| 194 views::View* view) { | |
| 195 AddViewTree(view); | |
| 196 } | |
| 197 | |
| 198 void AshDevToolsDOMAgent::OnChildViewReordered(views::View* parent, | |
| 199 views::View* view) { | |
| 200 RemoveViewTree(view, parent, false); | |
| 201 AddViewTree(view); | |
| 202 } | |
| 203 | |
| 204 void AshDevToolsDOMAgent::OnViewBoundsChanged(views::View* view) { | |
| 205 for (auto& observer : observers_) | 212 for (auto& observer : observers_) |
| 206 observer.OnViewBoundsChanged(view); | 213 observer.OnUIElementBoundsChanged(ui_element); |
| 207 } | 214 } |
| 208 | 215 |
| 209 WmWindow* AshDevToolsDOMAgent::GetWindowFromNodeId(int nodeId) { | 216 WmWindow* AshDevToolsDOMAgent::GetWindowFromNodeId(int nodeId) { |
| 210 return node_id_to_window_map_.count(nodeId) ? node_id_to_window_map_[nodeId] | 217 return node_id_to_window_map_.count(nodeId) ? node_id_to_window_map_[nodeId] |
| 211 : nullptr; | 218 : nullptr; |
| 212 } | 219 } |
| 213 | 220 |
| 214 views::Widget* AshDevToolsDOMAgent::GetWidgetFromNodeId(int nodeId) { | 221 views::Widget* AshDevToolsDOMAgent::GetWidgetFromNodeId(int nodeId) { |
| 215 return node_id_to_widget_map_.count(nodeId) ? node_id_to_widget_map_[nodeId] | 222 return node_id_to_widget_map_.count(nodeId) ? node_id_to_widget_map_[nodeId] |
| 216 : nullptr; | 223 : nullptr; |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 260 views::Widget* widget = GetWidgetFromWmWindow(window); | 267 views::Widget* widget = GetWidgetFromWmWindow(window); |
| 261 if (widget) | 268 if (widget) |
| 262 children->addItem(BuildTreeForRootWidget(widget)); | 269 children->addItem(BuildTreeForRootWidget(widget)); |
| 263 for (ash::WmWindow* child : window->GetChildren()) { | 270 for (ash::WmWindow* child : window->GetChildren()) { |
| 264 if (!IsHighlightingWindow(child)) | 271 if (!IsHighlightingWindow(child)) |
| 265 children->addItem(BuildTreeForWindow(child)); | 272 children->addItem(BuildTreeForWindow(child)); |
| 266 } | 273 } |
| 267 | 274 |
| 268 std::unique_ptr<ui::devtools::protocol::DOM::Node> node = | 275 std::unique_ptr<ui::devtools::protocol::DOM::Node> node = |
| 269 BuildNode("Window", GetAttributes(window), std::move(children)); | 276 BuildNode("Window", GetAttributes(window), std::move(children)); |
| 270 if (!window->aura_window()->HasObserver(this)) | 277 // if (!window->aura_window()->HasObserver(this)) |
| 271 window->aura_window()->AddObserver(this); | 278 // window->aura_window()->AddObserver(this); |
| 272 window_to_node_id_map_[window] = node->getNodeId(); | 279 window_to_node_id_map_[window] = node->getNodeId(); |
| 273 node_id_to_window_map_[node->getNodeId()] = window; | 280 node_id_to_window_map_[node->getNodeId()] = window; |
| 274 return node; | 281 return node; |
| 275 } | 282 } |
| 276 | 283 |
| 277 std::unique_ptr<DOM::Node> AshDevToolsDOMAgent::BuildTreeForRootWidget( | 284 std::unique_ptr<DOM::Node> AshDevToolsDOMAgent::BuildTreeForRootWidget( |
| 278 views::Widget* widget) { | 285 views::Widget* widget) { |
| 279 DCHECK(!widget_to_node_id_map_.count(widget)); | 286 DCHECK(!widget_to_node_id_map_.count(widget)); |
| 280 std::unique_ptr<Array<DOM::Node>> children = Array<DOM::Node>::create(); | 287 std::unique_ptr<Array<DOM::Node>> children = Array<DOM::Node>::create(); |
| 281 children->addItem(BuildTreeForView(widget->GetRootView())); | 288 children->addItem(BuildTreeForView(widget->GetRootView())); |
| 282 std::unique_ptr<ui::devtools::protocol::DOM::Node> node = | 289 std::unique_ptr<ui::devtools::protocol::DOM::Node> node = |
| 283 BuildNode("Widget", GetAttributes(widget), std::move(children)); | 290 BuildNode("Widget", GetAttributes(widget), std::move(children)); |
| 284 if (!widget->HasRemovalsObserver(this)) | 291 // if (!widget->HasRemovalsObserver(this)) |
| 285 widget->AddRemovalsObserver(this); | 292 // widget->AddRemovalsObserver(this); |
| 286 widget_to_node_id_map_[widget] = node->getNodeId(); | 293 widget_to_node_id_map_[widget] = node->getNodeId(); |
| 287 node_id_to_widget_map_[node->getNodeId()] = widget; | 294 node_id_to_widget_map_[node->getNodeId()] = widget; |
| 288 return node; | 295 return node; |
| 289 } | 296 } |
| 290 | 297 |
| 291 std::unique_ptr<DOM::Node> AshDevToolsDOMAgent::BuildTreeForView( | 298 std::unique_ptr<DOM::Node> AshDevToolsDOMAgent::BuildTreeForView( |
| 292 views::View* view) { | 299 views::View* view) { |
| 293 DCHECK(!view_to_node_id_map_.count(view)); | 300 DCHECK(!view_to_node_id_map_.count(view)); |
| 294 std::unique_ptr<Array<DOM::Node>> children = Array<DOM::Node>::create(); | 301 std::unique_ptr<Array<DOM::Node>> children = Array<DOM::Node>::create(); |
| 295 for (int i = 0, count = view->child_count(); i < count; i++) | 302 for (int i = 0, count = view->child_count(); i < count; i++) |
| 296 children->addItem(BuildTreeForView(view->child_at(i))); | 303 children->addItem(BuildTreeForView(view->child_at(i))); |
| 297 std::unique_ptr<ui::devtools::protocol::DOM::Node> node = | 304 std::unique_ptr<ui::devtools::protocol::DOM::Node> node = |
| 298 BuildNode("View", GetAttributes(view), std::move(children)); | 305 BuildNode("View", GetAttributes(view), std::move(children)); |
| 299 if (!view->HasObserver(this)) | 306 // if (!view->HasObserver(this)) |
| 300 view->AddObserver(this); | 307 // view->AddObserver(this); |
| 301 view_to_node_id_map_[view] = node->getNodeId(); | 308 view_to_node_id_map_[view] = node->getNodeId(); |
| 302 node_id_to_view_map_[node->getNodeId()] = view; | 309 node_id_to_view_map_[node->getNodeId()] = view; |
| 303 return node; | 310 return node; |
| 304 } | 311 } |
| 305 | 312 |
| 306 void AshDevToolsDOMAgent::AddWindowTree(WmWindow* window) { | 313 void AshDevToolsDOMAgent::AddWindowTree(WmWindow* window) { |
| 307 if (IsHighlightingWindow(window)) | 314 if (IsHighlightingWindow(window)) |
| 308 return; | 315 return; |
| 309 | 316 |
| 310 DCHECK(window_to_node_id_map_.count(window->GetParent())); | 317 DCHECK(window_to_node_id_map_.count(window->GetParent())); |
| (...skipping 25 matching lines...) Expand all Loading... |
| 336 window_to_node_id_map_.find(window); | 343 window_to_node_id_map_.find(window); |
| 337 DCHECK(window_to_node_id_it != window_to_node_id_map_.end()); | 344 DCHECK(window_to_node_id_it != window_to_node_id_map_.end()); |
| 338 | 345 |
| 339 int node_id = window_to_node_id_it->second; | 346 int node_id = window_to_node_id_it->second; |
| 340 int parent_id = GetNodeIdFromWindow(window->GetParent()); | 347 int parent_id = GetNodeIdFromWindow(window->GetParent()); |
| 341 | 348 |
| 342 NodeIdToWindowMap::iterator node_id_to_window_it = | 349 NodeIdToWindowMap::iterator node_id_to_window_it = |
| 343 node_id_to_window_map_.find(node_id); | 350 node_id_to_window_map_.find(node_id); |
| 344 DCHECK(node_id_to_window_it != node_id_to_window_map_.end()); | 351 DCHECK(node_id_to_window_it != node_id_to_window_map_.end()); |
| 345 | 352 |
| 346 if (remove_observer) | 353 // if (remove_observer) |
| 347 window->aura_window()->RemoveObserver(this); | 354 // window->aura_window()->RemoveObserver(this); |
| 348 | 355 |
| 349 node_id_to_window_map_.erase(node_id_to_window_it); | 356 node_id_to_window_map_.erase(node_id_to_window_it); |
| 350 window_to_node_id_map_.erase(window_to_node_id_it); | 357 window_to_node_id_map_.erase(window_to_node_id_it); |
| 351 frontend()->childNodeRemoved(parent_id, node_id); | 358 frontend()->childNodeRemoved(parent_id, node_id); |
| 352 } | 359 } |
| 353 | 360 |
| 354 void AshDevToolsDOMAgent::RemoveWidgetTree(views::Widget* widget, | 361 void AshDevToolsDOMAgent::RemoveWidgetTree(views::Widget* widget, |
| 355 bool remove_observer) { | 362 bool remove_observer) { |
| 356 DCHECK(widget); | 363 DCHECK(widget); |
| 357 if (widget->GetRootView()) | 364 if (widget->GetRootView()) |
| 358 RemoveViewTree(widget->GetRootView(), nullptr, remove_observer); | 365 RemoveViewTree(widget->GetRootView(), nullptr, remove_observer); |
| 359 RemoveWidgetNode(widget, remove_observer); | 366 RemoveWidgetNode(widget, remove_observer); |
| 360 } | 367 } |
| 361 | 368 |
| 362 void AshDevToolsDOMAgent::RemoveWidgetNode(views::Widget* widget, | 369 void AshDevToolsDOMAgent::RemoveWidgetNode(views::Widget* widget, |
| 363 bool remove_observer) { | 370 bool remove_observer) { |
| 364 WidgetToNodeIdMap::iterator widget_to_node_id_it = | 371 WidgetToNodeIdMap::iterator widget_to_node_id_it = |
| 365 widget_to_node_id_map_.find(widget); | 372 widget_to_node_id_map_.find(widget); |
| 366 DCHECK(widget_to_node_id_it != widget_to_node_id_map_.end()); | 373 DCHECK(widget_to_node_id_it != widget_to_node_id_map_.end()); |
| 367 | 374 |
| 368 int node_id = widget_to_node_id_it->second; | 375 int node_id = widget_to_node_id_it->second; |
| 369 int parent_id = GetNodeIdFromWindow(WmWindow::Get(widget->GetNativeWindow())); | 376 int parent_id = GetNodeIdFromWindow(WmWindow::Get(widget->GetNativeWindow())); |
| 370 | 377 |
| 371 if (remove_observer) | 378 // if (remove_observer) |
| 372 widget->RemoveRemovalsObserver(this); | 379 // widget->RemoveRemovalsObserver(this); |
| 373 | 380 |
| 374 NodeIdToWidgetMap::iterator node_id_to_widget_it = | 381 NodeIdToWidgetMap::iterator node_id_to_widget_it = |
| 375 node_id_to_widget_map_.find(node_id); | 382 node_id_to_widget_map_.find(node_id); |
| 376 DCHECK(node_id_to_widget_it != node_id_to_widget_map_.end()); | 383 DCHECK(node_id_to_widget_it != node_id_to_widget_map_.end()); |
| 377 | 384 |
| 378 widget_to_node_id_map_.erase(widget_to_node_id_it); | 385 widget_to_node_id_map_.erase(widget_to_node_id_it); |
| 379 node_id_to_widget_map_.erase(node_id_to_widget_it); | 386 node_id_to_widget_map_.erase(node_id_to_widget_it); |
| 380 frontend()->childNodeRemoved(parent_id, node_id); | 387 frontend()->childNodeRemoved(parent_id, node_id); |
| 381 } | 388 } |
| 382 | 389 |
| (...skipping 22 matching lines...) Expand all Loading... |
| 405 view_to_node_id_map_.find(view); | 412 view_to_node_id_map_.find(view); |
| 406 DCHECK(view_to_node_id_it != view_to_node_id_map_.end()); | 413 DCHECK(view_to_node_id_it != view_to_node_id_map_.end()); |
| 407 | 414 |
| 408 int node_id = view_to_node_id_it->second; | 415 int node_id = view_to_node_id_it->second; |
| 409 int parent_id = 0; | 416 int parent_id = 0; |
| 410 if (parent) | 417 if (parent) |
| 411 parent_id = GetNodeIdFromView(parent); | 418 parent_id = GetNodeIdFromView(parent); |
| 412 else // views::RootView | 419 else // views::RootView |
| 413 parent_id = GetNodeIdFromWidget(view->GetWidget()); | 420 parent_id = GetNodeIdFromWidget(view->GetWidget()); |
| 414 | 421 |
| 415 if (remove_observer) | 422 // if (remove_observer) |
| 416 view->RemoveObserver(this); | 423 // view->RemoveObserver(this); |
| 417 | 424 |
| 418 NodeIdToViewMap::iterator node_id_to_view_it = | 425 NodeIdToViewMap::iterator node_id_to_view_it = |
| 419 node_id_to_view_map_.find(node_id); | 426 node_id_to_view_map_.find(node_id); |
| 420 DCHECK(node_id_to_view_it != node_id_to_view_map_.end()); | 427 DCHECK(node_id_to_view_it != node_id_to_view_map_.end()); |
| 421 | 428 |
| 422 view_to_node_id_map_.erase(view_to_node_id_it); | 429 view_to_node_id_map_.erase(view_to_node_id_it); |
| 423 node_id_to_view_map_.erase(node_id_to_view_it); | 430 node_id_to_view_map_.erase(node_id_to_view_it); |
| 424 frontend()->childNodeRemoved(parent_id, node_id); | 431 frontend()->childNodeRemoved(parent_id, node_id); |
| 425 } | 432 } |
| 426 | 433 |
| 427 void AshDevToolsDOMAgent::RemoveObservers() { | 434 void AshDevToolsDOMAgent::RemoveObservers() { |
| 428 for (auto& pair : window_to_node_id_map_) | 435 // for (auto& pair : window_to_node_id_map_) |
| 429 pair.first->aura_window()->RemoveObserver(this); | 436 // pair.first->aura_window()->RemoveObserver(this); |
| 430 for (auto& pair : widget_to_node_id_map_) | 437 // for (auto& pair : widget_to_node_id_map_) |
| 431 pair.first->RemoveRemovalsObserver(this); | 438 // pair.first->RemoveRemovalsObserver(this); |
| 432 for (auto& pair : view_to_node_id_map_) | 439 // for (auto& pair : view_to_node_id_map_) |
| 433 pair.first->RemoveObserver(this); | 440 // pair.first->RemoveObserver(this); |
| 434 } | 441 } |
| 435 | 442 |
| 436 void AshDevToolsDOMAgent::Reset() { | 443 void AshDevToolsDOMAgent::Reset() { |
| 437 RemoveObservers(); | 444 RemoveObservers(); |
| 438 widget_for_highlighting_.reset(); | 445 widget_for_highlighting_.reset(); |
| 439 window_to_node_id_map_.clear(); | 446 window_to_node_id_map_.clear(); |
| 440 widget_to_node_id_map_.clear(); | 447 widget_to_node_id_map_.clear(); |
| 441 view_to_node_id_map_.clear(); | 448 view_to_node_id_map_.clear(); |
| 442 node_id_to_window_map_.clear(); | 449 node_id_to_window_map_.clear(); |
| 443 node_id_to_widget_map_.clear(); | 450 node_id_to_widget_map_.clear(); |
| (...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 524 return ui::devtools::protocol::Response::OK(); | 531 return ui::devtools::protocol::Response::OK(); |
| 525 } | 532 } |
| 526 | 533 |
| 527 bool AshDevToolsDOMAgent::IsHighlightingWindow(WmWindow* window) { | 534 bool AshDevToolsDOMAgent::IsHighlightingWindow(WmWindow* window) { |
| 528 return widget_for_highlighting_ && | 535 return widget_for_highlighting_ && |
| 529 GetWidgetFromWmWindow(window) == widget_for_highlighting_.get(); | 536 GetWidgetFromWmWindow(window) == widget_for_highlighting_.get(); |
| 530 } | 537 } |
| 531 | 538 |
| 532 } // namespace devtools | 539 } // namespace devtools |
| 533 } // namespace ash | 540 } // namespace ash |
| OLD | NEW |