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

Unified Diff: content/browser/web_contents/web_contents_impl.cc

Issue 1658003002: Enable range-based for loops to loop over a WebContents' frame hosts. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: FrameHosts -> GetAllFrames Created 4 years, 11 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
Index: content/browser/web_contents/web_contents_impl.cc
diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc
index c27846075d8df9aa8e9bd426f0ec265e6201b34f..da0a0d0ec319f408ea80d78a95c72ea1907a1e7c 100644
--- a/content/browser/web_contents/web_contents_impl.cc
+++ b/content/browser/web_contents/web_contents_impl.cc
@@ -185,24 +185,6 @@ bool HasMatchingProcess(FrameTree* tree, int render_process_id) {
return false;
}
-void SendToAllFramesInternal(int* number_of_messages,
- IPC::Message* message,
- RenderFrameHost* rfh) {
- *number_of_messages = *number_of_messages + 1;
- IPC::Message* message_copy = new IPC::Message(*message);
- message_copy->set_routing_id(rfh->GetRoutingID());
- rfh->Send(message_copy);
-}
-
-void AddRenderWidgetHostViewToSet(std::set<RenderWidgetHostView*>* set,
- RenderFrameHost* rfh) {
- RenderWidgetHostView* rwhv = static_cast<RenderFrameHostImpl*>(rfh)
- ->frame_tree_node()
- ->render_manager()
- ->GetRenderWidgetHostView();
- set->insert(rwhv);
-}
-
void SetAccessibilityModeOnFrame(AccessibilityMode mode,
RenderFrameHost* frame_host) {
static_cast<RenderFrameHostImpl*>(frame_host)->SetAccessibilityMode(mode);
@@ -788,10 +770,21 @@ void WebContentsImpl::ForEachFrame(
}
}
+std::vector<RenderFrameHost*> WebContentsImpl::GetAllFrames() {
+ std::vector<RenderFrameHost*> frame_hosts;
+ for (FrameTreeNode* node : frame_tree_.Nodes())
+ frame_hosts.push_back(node->current_frame_host());
+ return frame_hosts;
+}
+
int WebContentsImpl::SendToAllFrames(IPC::Message* message) {
int number_of_messages = 0;
- ForEachFrame(
- base::Bind(&SendToAllFramesInternal, &number_of_messages, message));
+ for (RenderFrameHost* rfh : GetAllFrames()) {
+ ++number_of_messages;
+ IPC::Message* message_copy = new IPC::Message(*message);
+ message_copy->set_routing_id(rfh->GetRoutingID());
+ rfh->Send(message_copy);
+ }
delete message;
return number_of_messages;
}
@@ -914,10 +907,12 @@ const std::string& WebContentsImpl::GetUserAgentOverride() const {
}
void WebContentsImpl::EnableTreeOnlyAccessibilityMode() {
- if (GetAccessibilityMode() != AccessibilityModeOff)
- ForEachFrame(base::Bind(&ResetAccessibility));
- else
+ if (GetAccessibilityMode() != AccessibilityModeOff) {
+ for (RenderFrameHost* rfh : GetAllFrames())
+ ResetAccessibility(rfh);
+ } else {
AddAccessibilityMode(AccessibilityModeTreeOnly);
+ }
}
bool WebContentsImpl::IsTreeOnlyAccessibilityModeForTesting() const {
@@ -1506,8 +1501,13 @@ WebContentsImpl::GetRenderWidgetHostViewsInTree() {
if (ShowingInterstitialPage()) {
set.insert(GetRenderWidgetHostView());
} else {
- ForEachFrame(
- base::Bind(&AddRenderWidgetHostViewToSet, base::Unretained(&set)));
+ for (RenderFrameHost* rfh : GetAllFrames()) {
+ RenderWidgetHostView* rwhv = static_cast<RenderFrameHostImpl*>(rfh)
+ ->frame_tree_node()
+ ->render_manager()
+ ->GetRenderWidgetHostView();
+ set.insert(rwhv);
+ }
}
return set;
}

Powered by Google App Engine
This is Rietveld 408576698