| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "content/browser/web_contents/web_contents_impl.h" | 5 #include "content/browser/web_contents/web_contents_impl.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include <cmath> | 9 #include <cmath> |
| 10 #include <utility> | 10 #include <utility> |
| (...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 178 } | 178 } |
| 179 | 179 |
| 180 bool HasMatchingProcess(FrameTree* tree, int render_process_id) { | 180 bool HasMatchingProcess(FrameTree* tree, int render_process_id) { |
| 181 for (FrameTreeNode* node : tree->Nodes()) { | 181 for (FrameTreeNode* node : tree->Nodes()) { |
| 182 if (node->current_frame_host()->GetProcess()->GetID() == render_process_id) | 182 if (node->current_frame_host()->GetProcess()->GetID() == render_process_id) |
| 183 return true; | 183 return true; |
| 184 } | 184 } |
| 185 return false; | 185 return false; |
| 186 } | 186 } |
| 187 | 187 |
| 188 void SendToAllFramesInternal(int* number_of_messages, | |
| 189 IPC::Message* message, | |
| 190 RenderFrameHost* rfh) { | |
| 191 *number_of_messages = *number_of_messages + 1; | |
| 192 IPC::Message* message_copy = new IPC::Message(*message); | |
| 193 message_copy->set_routing_id(rfh->GetRoutingID()); | |
| 194 rfh->Send(message_copy); | |
| 195 } | |
| 196 | |
| 197 void AddRenderWidgetHostViewToSet(std::set<RenderWidgetHostView*>* set, | |
| 198 RenderFrameHost* rfh) { | |
| 199 RenderWidgetHostView* rwhv = static_cast<RenderFrameHostImpl*>(rfh) | |
| 200 ->frame_tree_node() | |
| 201 ->render_manager() | |
| 202 ->GetRenderWidgetHostView(); | |
| 203 set->insert(rwhv); | |
| 204 } | |
| 205 | |
| 206 void SetAccessibilityModeOnFrame(AccessibilityMode mode, | 188 void SetAccessibilityModeOnFrame(AccessibilityMode mode, |
| 207 RenderFrameHost* frame_host) { | 189 RenderFrameHost* frame_host) { |
| 208 static_cast<RenderFrameHostImpl*>(frame_host)->SetAccessibilityMode(mode); | 190 static_cast<RenderFrameHostImpl*>(frame_host)->SetAccessibilityMode(mode); |
| 209 } | 191 } |
| 210 | 192 |
| 211 void ResetAccessibility(RenderFrameHost* rfh) { | 193 void ResetAccessibility(RenderFrameHost* rfh) { |
| 212 static_cast<RenderFrameHostImpl*>(rfh)->AccessibilityReset(); | 194 static_cast<RenderFrameHostImpl*>(rfh)->AccessibilityReset(); |
| 213 } | 195 } |
| 214 | 196 |
| 215 } // namespace | 197 } // namespace |
| (...skipping 565 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 781 return frame ? frame->current_frame_host() : nullptr; | 763 return frame ? frame->current_frame_host() : nullptr; |
| 782 } | 764 } |
| 783 | 765 |
| 784 void WebContentsImpl::ForEachFrame( | 766 void WebContentsImpl::ForEachFrame( |
| 785 const base::Callback<void(RenderFrameHost*)>& on_frame) { | 767 const base::Callback<void(RenderFrameHost*)>& on_frame) { |
| 786 for (FrameTreeNode* node : frame_tree_.Nodes()) { | 768 for (FrameTreeNode* node : frame_tree_.Nodes()) { |
| 787 on_frame.Run(node->current_frame_host()); | 769 on_frame.Run(node->current_frame_host()); |
| 788 } | 770 } |
| 789 } | 771 } |
| 790 | 772 |
| 773 std::vector<RenderFrameHost*> WebContentsImpl::GetAllFrames() { |
| 774 std::vector<RenderFrameHost*> frame_hosts; |
| 775 for (FrameTreeNode* node : frame_tree_.Nodes()) |
| 776 frame_hosts.push_back(node->current_frame_host()); |
| 777 return frame_hosts; |
| 778 } |
| 779 |
| 791 int WebContentsImpl::SendToAllFrames(IPC::Message* message) { | 780 int WebContentsImpl::SendToAllFrames(IPC::Message* message) { |
| 792 int number_of_messages = 0; | 781 int number_of_messages = 0; |
| 793 ForEachFrame( | 782 for (RenderFrameHost* rfh : GetAllFrames()) { |
| 794 base::Bind(&SendToAllFramesInternal, &number_of_messages, message)); | 783 ++number_of_messages; |
| 784 IPC::Message* message_copy = new IPC::Message(*message); |
| 785 message_copy->set_routing_id(rfh->GetRoutingID()); |
| 786 rfh->Send(message_copy); |
| 787 } |
| 795 delete message; | 788 delete message; |
| 796 return number_of_messages; | 789 return number_of_messages; |
| 797 } | 790 } |
| 798 | 791 |
| 799 RenderViewHostImpl* WebContentsImpl::GetRenderViewHost() const { | 792 RenderViewHostImpl* WebContentsImpl::GetRenderViewHost() const { |
| 800 return GetRenderManager()->current_host(); | 793 return GetRenderManager()->current_host(); |
| 801 } | 794 } |
| 802 | 795 |
| 803 int WebContentsImpl::GetRoutingID() const { | 796 int WebContentsImpl::GetRoutingID() const { |
| 804 if (!GetRenderViewHost()) | 797 if (!GetRenderViewHost()) |
| (...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 907 | 900 |
| 908 FOR_EACH_OBSERVER(WebContentsObserver, observers_, | 901 FOR_EACH_OBSERVER(WebContentsObserver, observers_, |
| 909 UserAgentOverrideSet(override)); | 902 UserAgentOverrideSet(override)); |
| 910 } | 903 } |
| 911 | 904 |
| 912 const std::string& WebContentsImpl::GetUserAgentOverride() const { | 905 const std::string& WebContentsImpl::GetUserAgentOverride() const { |
| 913 return renderer_preferences_.user_agent_override; | 906 return renderer_preferences_.user_agent_override; |
| 914 } | 907 } |
| 915 | 908 |
| 916 void WebContentsImpl::EnableTreeOnlyAccessibilityMode() { | 909 void WebContentsImpl::EnableTreeOnlyAccessibilityMode() { |
| 917 if (GetAccessibilityMode() != AccessibilityModeOff) | 910 if (GetAccessibilityMode() != AccessibilityModeOff) { |
| 918 ForEachFrame(base::Bind(&ResetAccessibility)); | 911 for (RenderFrameHost* rfh : GetAllFrames()) |
| 919 else | 912 ResetAccessibility(rfh); |
| 913 } else { |
| 920 AddAccessibilityMode(AccessibilityModeTreeOnly); | 914 AddAccessibilityMode(AccessibilityModeTreeOnly); |
| 915 } |
| 921 } | 916 } |
| 922 | 917 |
| 923 bool WebContentsImpl::IsTreeOnlyAccessibilityModeForTesting() const { | 918 bool WebContentsImpl::IsTreeOnlyAccessibilityModeForTesting() const { |
| 924 return accessibility_mode_ == AccessibilityModeTreeOnly; | 919 return accessibility_mode_ == AccessibilityModeTreeOnly; |
| 925 } | 920 } |
| 926 | 921 |
| 927 bool WebContentsImpl::IsFullAccessibilityModeForTesting() const { | 922 bool WebContentsImpl::IsFullAccessibilityModeForTesting() const { |
| 928 return accessibility_mode_ == AccessibilityModeComplete; | 923 return accessibility_mode_ == AccessibilityModeComplete; |
| 929 } | 924 } |
| 930 | 925 |
| (...skipping 568 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1499 void WebContentsImpl::RemoveObserver(WebContentsObserver* observer) { | 1494 void WebContentsImpl::RemoveObserver(WebContentsObserver* observer) { |
| 1500 observers_.RemoveObserver(observer); | 1495 observers_.RemoveObserver(observer); |
| 1501 } | 1496 } |
| 1502 | 1497 |
| 1503 std::set<RenderWidgetHostView*> | 1498 std::set<RenderWidgetHostView*> |
| 1504 WebContentsImpl::GetRenderWidgetHostViewsInTree() { | 1499 WebContentsImpl::GetRenderWidgetHostViewsInTree() { |
| 1505 std::set<RenderWidgetHostView*> set; | 1500 std::set<RenderWidgetHostView*> set; |
| 1506 if (ShowingInterstitialPage()) { | 1501 if (ShowingInterstitialPage()) { |
| 1507 set.insert(GetRenderWidgetHostView()); | 1502 set.insert(GetRenderWidgetHostView()); |
| 1508 } else { | 1503 } else { |
| 1509 ForEachFrame( | 1504 for (RenderFrameHost* rfh : GetAllFrames()) { |
| 1510 base::Bind(&AddRenderWidgetHostViewToSet, base::Unretained(&set))); | 1505 RenderWidgetHostView* rwhv = static_cast<RenderFrameHostImpl*>(rfh) |
| 1506 ->frame_tree_node() |
| 1507 ->render_manager() |
| 1508 ->GetRenderWidgetHostView(); |
| 1509 set.insert(rwhv); |
| 1510 } |
| 1511 } | 1511 } |
| 1512 return set; | 1512 return set; |
| 1513 } | 1513 } |
| 1514 | 1514 |
| 1515 void WebContentsImpl::Activate() { | 1515 void WebContentsImpl::Activate() { |
| 1516 if (delegate_) | 1516 if (delegate_) |
| 1517 delegate_->ActivateContents(this); | 1517 delegate_->ActivateContents(this); |
| 1518 } | 1518 } |
| 1519 | 1519 |
| 1520 void WebContentsImpl::LostCapture(RenderWidgetHostImpl* render_widget_host) { | 1520 void WebContentsImpl::LostCapture(RenderWidgetHostImpl* render_widget_host) { |
| (...skipping 3231 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4752 const WebContentsObserver::MediaPlayerId& id) { | 4752 const WebContentsObserver::MediaPlayerId& id) { |
| 4753 FOR_EACH_OBSERVER(WebContentsObserver, observers_, MediaStartedPlaying(id)); | 4753 FOR_EACH_OBSERVER(WebContentsObserver, observers_, MediaStartedPlaying(id)); |
| 4754 } | 4754 } |
| 4755 | 4755 |
| 4756 void WebContentsImpl::MediaStoppedPlaying( | 4756 void WebContentsImpl::MediaStoppedPlaying( |
| 4757 const WebContentsObserver::MediaPlayerId& id) { | 4757 const WebContentsObserver::MediaPlayerId& id) { |
| 4758 FOR_EACH_OBSERVER(WebContentsObserver, observers_, MediaStoppedPlaying(id)); | 4758 FOR_EACH_OBSERVER(WebContentsObserver, observers_, MediaStoppedPlaying(id)); |
| 4759 } | 4759 } |
| 4760 | 4760 |
| 4761 } // namespace content | 4761 } // namespace content |
| OLD | NEW |