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

Side by Side Diff: content/browser/web_contents/web_contents_view_aura.cc

Issue 536013002: Decoupling visibility states from webcontent, adding visibility management in ResourceManager (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Added a few more unittests Created 6 years, 3 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 unified diff | Download patch
OLDNEW
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_view_aura.h" 5 #include "content/browser/web_contents/web_contents_view_aura.h"
6 6
7 #include "base/auto_reset.h" 7 #include "base/auto_reset.h"
8 #include "base/command_line.h" 8 #include "base/command_line.h"
9 #include "base/file_util.h" 9 #include "base/file_util.h"
10 #include "base/metrics/histogram.h" 10 #include "base/metrics/histogram.h"
(...skipping 1579 matching lines...) Expand 10 before | Expand all | Expand 10 after
1590 if (parent) 1590 if (parent)
1591 UpdateWebContentsVisibility(window->IsVisible()); 1591 UpdateWebContentsVisibility(window->IsVisible());
1592 } 1592 }
1593 1593
1594 void WebContentsViewAura::OnWindowVisibilityChanged(aura::Window* window, 1594 void WebContentsViewAura::OnWindowVisibilityChanged(aura::Window* window,
1595 bool visible) { 1595 bool visible) {
1596 // Ignore any visibility changes in the hierarchy below. 1596 // Ignore any visibility changes in the hierarchy below.
1597 if (window != window_.get() && window_->Contains(window)) 1597 if (window != window_.get() && window_->Contains(window))
1598 return; 1598 return;
1599 1599
1600 UpdateWebContentsVisibility(visible); 1600 UpdateWebContentsVisibility(visible);
oshima 2014/09/04 16:39:23 If we use window_->IsVisible() here, instead of vi
Mr4D (OOO till 08-26) 2014/09/04 19:10:57 Very complicated at this place. a. Window_->IsVis
oshima 2014/09/04 22:11:01 Yes, I believe that's what we want in UpdateWebCon
Mr4D (OOO till 08-26) 2014/09/04 22:36:52 Acknowledged.
1601 } 1601 }
1602 1602
1603 void WebContentsViewAura::UpdateWebContentsVisibility(bool visible) { 1603 void WebContentsViewAura::UpdateWebContentsVisibility(bool visible) {
1604 #if defined(USE_ATHENA)
1605 // In Athena the resources/visibility get controlled by Activities and the
1606 // ResourceManager and not the window visibility.
oshima 2014/09/03 23:15:00 have you consult this approach (if def) with conte
Mr4D (OOO till 08-26) 2014/09/04 19:10:57 We don't do this. I have to come up with a differe
1607 #else
1604 if (!is_or_was_visible_) { 1608 if (!is_or_was_visible_) {
1605 // We should not hide the web contents before it was shown the first time, 1609 // We should not hide the web contents before it was shown the first time,
1606 // since resources would immediately be destroyed and only re-created after 1610 // since resources would immediately be destroyed and only re-created after
1607 // content got loaded. In this state the window content is undefined and can 1611 // content got loaded. In this state the window content is undefined and can
1608 // show garbage. 1612 // show garbage.
1609 // However - the page load mechanism requires an activation call through a 1613 // However - the page load mechanism requires an activation call through a
1610 // visibility call to (re)load. 1614 // visibility call to (re)load.
1611 if (visible) { 1615 if (visible) {
1612 is_or_was_visible_ = true; 1616 is_or_was_visible_ = true;
1613 web_contents_->WasShown(); 1617 web_contents_->WasShown();
1614 } 1618 }
1615 return; 1619 return;
1616 } 1620 }
1617 if (visible) { 1621 if (visible) {
1618 if (!web_contents_->should_normally_be_visible()) 1622 if (!web_contents_->should_normally_be_visible())
1619 web_contents_->WasShown(); 1623 web_contents_->WasShown();
1620 } else { 1624 } else {
1621 if (web_contents_->should_normally_be_visible()) 1625 if (web_contents_->should_normally_be_visible())
1622 web_contents_->WasHidden(); 1626 web_contents_->WasHidden();
1623 } 1627 }
1628 #endif
1624 } 1629 }
1625 1630
1626 } // namespace content 1631 } // namespace content
OLDNEW
« athena/resource_manager/public/resource_manager.h ('K') | « athena/wm/window_manager_impl.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698