Commit 571c7ef4 authored by yiyix's avatar yiyix Committed by Commit Bot

VizDevTools: Remove the duplicated information in DomAgentViz

|registered_frame_sink_ids_to_is_connected_| and |frame_sink_elements_|
saves the same information about the FrameSinkId, that is if a
FrameSinkId is register and/or created. This cl removes the variable
|registered_frame_sink_ids_to_is_connected_|.

Bug:816802

Change-Id: Iad9c9e9819ffd44ca8aff7c7b82ad0b5852d6e8d
Reviewed-on: https://chromium-review.googlesource.com/1186195Reviewed-by: default avatarSadrul Chowdhury <sadrul@chromium.org>
Reviewed-by: default avatarkylechar <kylechar@chromium.org>
Commit-Queue: Yi Xu <yiyix@chromium.org>
Cr-Commit-Position: refs/heads/master@{#585859}
parent d2535c4f
...@@ -4,6 +4,7 @@ ...@@ -4,6 +4,7 @@
#include "components/ui_devtools/viz_views/dom_agent_viz.h" #include "components/ui_devtools/viz_views/dom_agent_viz.h"
#include "base/stl_util.h"
#include "components/ui_devtools/root_element.h" #include "components/ui_devtools/root_element.h"
#include "components/ui_devtools/ui_element.h" #include "components/ui_devtools/ui_element.h"
#include "components/ui_devtools/viz_views/frame_sink_element.h" #include "components/ui_devtools/viz_views/frame_sink_element.h"
...@@ -71,7 +72,6 @@ void DOMAgentViz::OnRegisteredFrameSinkId( ...@@ -71,7 +72,6 @@ void DOMAgentViz::OnRegisteredFrameSinkId(
element_root()->children().empty() ? nullptr element_root()->children().empty() ? nullptr
: element_root()->children().back()); : element_root()->children().back());
} }
registered_frame_sink_ids_to_is_connected_[frame_sink_id] = false;
} }
void DOMAgentViz::OnInvalidatedFrameSinkId( void DOMAgentViz::OnInvalidatedFrameSinkId(
...@@ -80,7 +80,6 @@ void DOMAgentViz::OnInvalidatedFrameSinkId( ...@@ -80,7 +80,6 @@ void DOMAgentViz::OnInvalidatedFrameSinkId(
DCHECK(it != frame_sink_elements_.end()); DCHECK(it != frame_sink_elements_.end());
FrameSinkElement* element = it->second; FrameSinkElement* element = it->second;
registered_frame_sink_ids_to_is_connected_.erase(frame_sink_id);
element->SetRegistered(false); element->SetRegistered(false);
// If a FrameSink is destroyed and invalidated we should remove it from the // If a FrameSink is destroyed and invalidated we should remove it from the
...@@ -98,8 +97,6 @@ void DOMAgentViz::OnCreatedCompositorFrameSink( ...@@ -98,8 +97,6 @@ void DOMAgentViz::OnCreatedCompositorFrameSink(
// should update its |is_client_connected_| and |is_root_| properties. // should update its |is_client_connected_| and |is_root_| properties.
frame_sink_element->second->SetClientConnected(true); frame_sink_element->second->SetClientConnected(true);
frame_sink_element->second->SetRoot(is_root); frame_sink_element->second->SetRoot(is_root);
registered_frame_sink_ids_to_is_connected_[frame_sink_id] = true;
} }
void DOMAgentViz::OnDestroyedCompositorFrameSink( void DOMAgentViz::OnDestroyedCompositorFrameSink(
...@@ -110,13 +107,6 @@ void DOMAgentViz::OnDestroyedCompositorFrameSink( ...@@ -110,13 +107,6 @@ void DOMAgentViz::OnDestroyedCompositorFrameSink(
FrameSinkElement* element = it->second; FrameSinkElement* element = it->second;
element->SetClientConnected(false); element->SetClientConnected(false);
// If the FrameSink is still registered, update its status on is_connected.
if (base::ContainsKey(registered_frame_sink_ids_to_is_connected_,
frame_sink_id)) {
registered_frame_sink_ids_to_is_connected_[frame_sink_id] = false;
return;
}
// If a FrameSink is invalidated and destroyed we should remove it from the // If a FrameSink is invalidated and destroyed we should remove it from the
// tree. // tree.
RemoveFrameSinkSubtree(element); RemoveFrameSinkSubtree(element);
...@@ -175,11 +165,12 @@ std::unique_ptr<DOM::Node> DOMAgentViz::BuildTreeForFrameSink( ...@@ -175,11 +165,12 @@ std::unique_ptr<DOM::Node> DOMAgentViz::BuildTreeForFrameSink(
// subtree. So we iterate through |frame_sink_element|'s children and // subtree. So we iterate through |frame_sink_element|'s children and
// recursively build the subtree for them. // recursively build the subtree for them.
for (auto& child : frame_sink_manager_->GetChildrenByParent(frame_sink_id)) { for (auto& child : frame_sink_manager_->GetChildrenByParent(frame_sink_id)) {
bool is_registered = base::ContainsKey( bool is_registered = base::ContainsValue(
registered_frame_sink_ids_to_is_connected_, frame_sink_id); frame_sink_manager_->GetRegisteredFrameSinkIds(), frame_sink_id);
bool is_client_connected = bool is_client_connected =
is_registered && is_registered &&
registered_frame_sink_ids_to_is_connected_.find(frame_sink_id)->second; base::ContainsValue(frame_sink_manager_->GetCreatedFrameSinkIds(),
frame_sink_id);
FrameSinkElement* f_s_element = new FrameSinkElement( FrameSinkElement* f_s_element = new FrameSinkElement(
child, frame_sink_manager_, this, frame_sink_element, child, frame_sink_manager_, this, frame_sink_element,
...@@ -210,13 +201,14 @@ std::vector<UIElement*> DOMAgentViz::CreateChildrenForRoot() { ...@@ -210,13 +201,14 @@ std::vector<UIElement*> DOMAgentViz::CreateChildrenForRoot() {
std::vector<UIElement*> children; std::vector<UIElement*> children;
// Add created RootFrameSinks and detached FrameSinks. // Add created RootFrameSinks and detached FrameSinks.
for (auto& frame_sink_id : registered_frame_sink_ids_to_is_connected_) { for (auto& frame_sink_id : frame_sink_manager_->GetRegisteredFrameSinkIds()) {
if (frame_sink_id.second) { if (base::ContainsValue(frame_sink_manager_->GetCreatedFrameSinkIds(),
frame_sink_id)) {
const viz::CompositorFrameSinkSupport* support = const viz::CompositorFrameSinkSupport* support =
frame_sink_manager_->GetFrameSinkForId(frame_sink_id.first); frame_sink_manager_->GetFrameSinkForId(frame_sink_id);
// Do nothing if it's a non-detached non-root FrameSink. // Do nothing if it's a non-detached non-root FrameSink.
if (support && !support->is_root() && if (support && !support->is_root() &&
attached_frame_sinks_.find(frame_sink_id.first) != attached_frame_sinks_.find(frame_sink_id) !=
attached_frame_sinks_.end()) { attached_frame_sinks_.end()) {
continue; continue;
} }
...@@ -224,8 +216,7 @@ std::vector<UIElement*> DOMAgentViz::CreateChildrenForRoot() { ...@@ -224,8 +216,7 @@ std::vector<UIElement*> DOMAgentViz::CreateChildrenForRoot() {
bool is_root = support && support->is_root(); bool is_root = support && support->is_root();
UIElement* frame_sink_element = new FrameSinkElement( UIElement* frame_sink_element = new FrameSinkElement(
frame_sink_id.first, frame_sink_manager_, this, element_root(), frame_sink_id, frame_sink_manager_, this, element_root(), is_root,
is_root,
/*is_registered=*/true, /*is_client_connected=*/true); /*is_registered=*/true, /*is_client_connected=*/true);
children.push_back(frame_sink_element); children.push_back(frame_sink_element);
...@@ -237,7 +228,7 @@ std::vector<UIElement*> DOMAgentViz::CreateChildrenForRoot() { ...@@ -237,7 +228,7 @@ std::vector<UIElement*> DOMAgentViz::CreateChildrenForRoot() {
// consider them unembedded as well. // consider them unembedded as well.
} else { } else {
UIElement* frame_sink_element = new FrameSinkElement( UIElement* frame_sink_element = new FrameSinkElement(
frame_sink_id.first, frame_sink_manager_, this, element_root(), frame_sink_id, frame_sink_manager_, this, element_root(),
/*is_root=*/false, /*is_registered=*/true, /*is_root=*/false, /*is_registered=*/true,
/*is_client_connected=*/false); /*is_client_connected=*/false);
...@@ -252,10 +243,13 @@ std::unique_ptr<DOM::Node> DOMAgentViz::BuildTreeForUIElement( ...@@ -252,10 +243,13 @@ std::unique_ptr<DOM::Node> DOMAgentViz::BuildTreeForUIElement(
UIElement* ui_element) { UIElement* ui_element) {
if (ui_element->type() == UIElementType::FRAMESINK) { if (ui_element->type() == UIElementType::FRAMESINK) {
viz::FrameSinkId frame_sink_id = FrameSinkElement::From(ui_element); viz::FrameSinkId frame_sink_id = FrameSinkElement::From(ui_element);
bool is_registered = base::ContainsKey(
registered_frame_sink_ids_to_is_connected_, frame_sink_id); bool is_registered = base::ContainsValue(
frame_sink_manager_->GetRegisteredFrameSinkIds(), frame_sink_id);
bool is_client_connected = bool is_client_connected =
registered_frame_sink_ids_to_is_connected_.find(frame_sink_id)->second; is_registered &&
base::ContainsValue(frame_sink_manager_->GetCreatedFrameSinkIds(),
frame_sink_id);
FrameSinkElement* frame_sink_element = new FrameSinkElement( FrameSinkElement* frame_sink_element = new FrameSinkElement(
frame_sink_id, frame_sink_manager_, this, nullptr, frame_sink_id, frame_sink_manager_, this, nullptr,
/*is_root=*/false, is_registered, is_client_connected); /*is_root=*/false, is_registered, is_client_connected);
...@@ -276,29 +270,21 @@ void DOMAgentViz::DestroyChildSubtree(UIElement* parent, UIElement* child) { ...@@ -276,29 +270,21 @@ void DOMAgentViz::DestroyChildSubtree(UIElement* parent, UIElement* child) {
void DOMAgentViz::Clear() { void DOMAgentViz::Clear() {
attached_frame_sinks_.clear(); attached_frame_sinks_.clear();
frame_sink_elements_.clear(); frame_sink_elements_.clear();
registered_frame_sink_ids_to_is_connected_.clear();
} }
void DOMAgentViz::InitFrameSinkSets() { void DOMAgentViz::InitFrameSinkSets() {
for (auto& entry : frame_sink_manager_->GetRegisteredFrameSinkIds())
registered_frame_sink_ids_to_is_connected_[entry] = false;
for (auto& entry : frame_sink_manager_->GetCreatedFrameSinkIds()) {
DCHECK(
base::ContainsKey(registered_frame_sink_ids_to_is_connected_, entry));
registered_frame_sink_ids_to_is_connected_[entry] = true;
}
// Init the |attached_frame_sinks_| set. All RootFrameSinks and accessible // Init the |attached_frame_sinks_| set. All RootFrameSinks and accessible
// from roots are attached. All the others are detached. // from roots are attached. All the others are detached.
for (auto& frame_sink_id : registered_frame_sink_ids_to_is_connected_) { for (auto& frame_sink_id : frame_sink_manager_->GetRegisteredFrameSinkIds()) {
if (frame_sink_id.second) { if (base::ContainsValue(frame_sink_manager_->GetCreatedFrameSinkIds(),
frame_sink_id)) {
const viz::CompositorFrameSinkSupport* support = const viz::CompositorFrameSinkSupport* support =
frame_sink_manager_->GetFrameSinkForId(frame_sink_id.first); frame_sink_manager_->GetFrameSinkForId(frame_sink_id);
// Start only from roots. // Start only from roots.
if (!support || !support->is_root()) if (!support || !support->is_root())
continue; continue;
SetAttachedFrameSink(frame_sink_id.first); SetAttachedFrameSink(frame_sink_id);
} }
} }
} }
......
...@@ -78,20 +78,6 @@ class DOMAgentViz : public viz::FrameSinkObserver, public DOMAgent { ...@@ -78,20 +78,6 @@ class DOMAgentViz : public viz::FrameSinkObserver, public DOMAgent {
// |frame_sink_elements_|. // |frame_sink_elements_|.
void RemoveFrameSinkElement(UIElement* element); void RemoveFrameSinkElement(UIElement* element);
// These sets are used to create and update the DOM tree. We add/remove
// registered FrameSinks to |registered_frame_sink_ids_to_is_connected_| when
// FrameSink is registered/invalidated and initialize the bool to false to
// indicate that the FrameSink is not created yet. Then when a |frame_sink| is
// created/destroyed, we update |registered_frame_sink_ids_to_is_connected_|
// of |frame_sink| true or false accordingly. When we get events
// registered/unregistered hierarchy we don't change these sets because we
// detach a subtree from one node and attach it to another node and the list
// of registered/created FrameSinkIds doesn't change.
// TODO(yiyix): Removes this map because it saves duplicated information as
// |frame_sink_elements_|.
base::flat_map<viz::FrameSinkId, bool>
registered_frame_sink_ids_to_is_connected_;
// This is used to track created FrameSinkElements in a FrameSink tree. Every // This is used to track created FrameSinkElements in a FrameSink tree. Every
// time we register/invalidate a FrameSinkId, create/destroy a FrameSink, // time we register/invalidate a FrameSinkId, create/destroy a FrameSink,
// register/unregister hierarchy we change this set, because these actions // register/unregister hierarchy we change this set, because these actions
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment