| 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 a2bdcb134cb86b2e2ebce697c20e809c1f1876e0..035632e8114abd90f218e1e510fb50989775a946 100644
|
| --- a/content/browser/web_contents/web_contents_impl.cc
|
| +++ b/content/browser/web_contents/web_contents_impl.cc
|
| @@ -217,6 +217,11 @@ void SendToAllFramesInternal(IPC::Message* message, RenderFrameHost* rfh) {
|
| rfh->Send(message_copy);
|
| }
|
|
|
| +void AddRenderWidgetHostToSet(std::set<RenderWidgetHostImpl*>* set,
|
| + RenderFrameHost* rfh) {
|
| + set->insert(static_cast<RenderFrameHostImpl*>(rfh)->render_widget_host());
|
| +}
|
| +
|
| } // namespace
|
|
|
| WebContents* WebContents::Create(const WebContents::CreateParams& params) {
|
| @@ -938,12 +943,18 @@ base::TimeTicks WebContentsImpl::GetLastActiveTime() const {
|
|
|
| void WebContentsImpl::WasShown() {
|
| controller_.SetActive(true);
|
| - RenderWidgetHostView* rwhv = GetRenderWidgetHostView();
|
| - if (rwhv) {
|
| - rwhv->Show();
|
| +
|
| + std::set<RenderWidgetHostImpl*> widgets = GetRenderWidgetHostsInTree();
|
| + for (std::set<RenderWidgetHostImpl*>::iterator iter = widgets.begin();
|
| + iter != widgets.end();
|
| + iter++) {
|
| + RenderWidgetHostView* rwhv = (*iter)->GetView();
|
| + if (rwhv) {
|
| + rwhv->Show();
|
| #if defined(OS_MACOSX)
|
| - rwhv->SetActive(true);
|
| + rwhv->SetActive(true);
|
| #endif
|
| + }
|
| }
|
|
|
| last_active_time_ = base::TimeTicks::Now();
|
| @@ -971,9 +982,14 @@ void WebContentsImpl::WasHidden() {
|
| // removes the |GetRenderViewHost()|; then when we actually destroy the
|
| // window, OnWindowPosChanged() notices and calls WasHidden() (which
|
| // calls us).
|
| - RenderWidgetHostView* rwhv = GetRenderWidgetHostView();
|
| - if (rwhv)
|
| - rwhv->Hide();
|
| + std::set<RenderWidgetHostImpl*> widgets = GetRenderWidgetHostsInTree();
|
| + for (std::set<RenderWidgetHostImpl*>::iterator iter = widgets.begin();
|
| + iter != widgets.end();
|
| + iter++) {
|
| + RenderWidgetHostView* rwhv = (*iter)->GetView();
|
| + if (rwhv)
|
| + rwhv->Hide();
|
| + }
|
| }
|
|
|
| FOR_EACH_OBSERVER(WebContentsObserver, observers_, WasHidden());
|
| @@ -1129,6 +1145,12 @@ void WebContentsImpl::RemoveObserver(WebContentsObserver* observer) {
|
| observers_.RemoveObserver(observer);
|
| }
|
|
|
| +std::set<RenderWidgetHostImpl*> WebContentsImpl::GetRenderWidgetHostsInTree() {
|
| + std::set<RenderWidgetHostImpl*> set;
|
| + ForEachFrame(base::Bind(&AddRenderWidgetHostToSet, base::Unretained(&set)));
|
| + return set;
|
| +}
|
| +
|
| void WebContentsImpl::Activate() {
|
| if (delegate_)
|
| delegate_->ActivateContents(this);
|
|
|