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

Unified Diff: content/browser/devtools/protocol/target_auto_attacher.cc

Issue 2944523002: Improving flat containers interface. (Closed)
Patch Set: Compilation 3. Created 3 years, 5 months 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « components/viz/service/display/surface_aggregator.cc ('k') | ui/events/blink/input_handler_proxy.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/browser/devtools/protocol/target_auto_attacher.cc
diff --git a/content/browser/devtools/protocol/target_auto_attacher.cc b/content/browser/devtools/protocol/target_auto_attacher.cc
index dbccd7b1292946e8f334c65b7d2191ffbe2cf7bb..bc082c5e6e18fe143fc6fb1875d89806b025c8a1 100644
--- a/content/browser/devtools/protocol/target_auto_attacher.cc
+++ b/content/browser/devtools/protocol/target_auto_attacher.cc
@@ -134,7 +134,7 @@ void TargetAutoAttacher::UpdateFrames() {
}
void TargetAutoAttacher::AgentHostClosed(DevToolsAgentHost* host) {
- auto_attached_hosts_.erase(host);
+ auto_attached_hosts_.erase(make_scoped_refptr(host));
danakj 2017/07/20 15:52:52 Not for this CL but looks like we should make a co
dyaroshev 2017/07/20 16:03:18 I agree. We discussed that earlier in this CL, I e
}
void TargetAutoAttacher::ReattachServiceWorkers(bool waiting_for_debugger) {
@@ -165,20 +165,29 @@ void TargetAutoAttacher::ReattachServiceWorkers(bool waiting_for_debugger) {
void TargetAutoAttacher::ReattachTargetsOfType(const Hosts& new_hosts,
const std::string& type,
bool waiting_for_debugger) {
- Hosts old_hosts = auto_attached_hosts_;
- for (auto& it : old_hosts) {
- DevToolsAgentHost* host = it.get();
- if (host->GetType() == type && new_hosts.find(host) == new_hosts.end()) {
- auto_attached_hosts_.erase(host);
- detach_callback_.Run(host);
- }
+ // Detach.
+ {
+ Hosts removed_hosts =
+ base::STLSetDifference<Hosts>(new_hosts, auto_attached_hosts_);
+ for (const auto& h : removed_hosts)
dyaroshev 2017/07/19 23:38:41 And I missed GetType check. Ok than, I'll revert t
danakj 2017/07/20 15:52:52 I'll wait for your update then.
+ detach_callback_.Run(h.get());
}
- for (auto& it : new_hosts) {
- DevToolsAgentHost* host = it.get();
- if (old_hosts.find(host) == old_hosts.end()) {
- if (attach_callback_.Run(host, waiting_for_debugger))
- auto_attached_hosts_.insert(host);
- }
+
+ // Attach.
+ {
+ Hosts newly_attached_hosts =
+ base::STLSetDifference<Hosts>(auto_attached_hosts_, new_hosts);
+
+ auto_attached_hosts_.clear();
+
+ // Since newly_attached is already a set, inserting in the end is faster
+ // than buffer + sort.
+ std::copy_if(
+ newly_attached_hosts.begin(), newly_attached_hosts.end(),
+ std::inserter(auto_attached_hosts_, auto_attached_hosts_.end()),
+ [&](const scoped_refptr<DevToolsAgentHost>& h) {
+ return attach_callback_.Run(h.get(), waiting_for_debugger);
+ });
}
}
« no previous file with comments | « components/viz/service/display/surface_aggregator.cc ('k') | ui/events/blink/input_handler_proxy.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698