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

Side by Side Diff: chrome/browser/memory/tab_manager.cc

Issue 1637943003: Remove HostDesktopType from BrowserList::GetInstance() (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@screen-wrapper-land
Patch Set: mac2 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 unified diff | Download patch
« no previous file with comments | « chrome/browser/memory/tab_manager.h ('k') | chrome/browser/policy/policy_browsertest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 "chrome/browser/memory/tab_manager.h" 5 #include "chrome/browser/memory/tab_manager.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <algorithm> 9 #include <algorithm>
10 #include <set> 10 #include <set>
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after
198 // Things to collect on the browser thread (because TabStripModel isn't thread 198 // Things to collect on the browser thread (because TabStripModel isn't thread
199 // safe): 199 // safe):
200 // 1) whether or not a tab is pinned 200 // 1) whether or not a tab is pinned
201 // 2) last time a tab was selected 201 // 2) last time a tab was selected
202 // 3) is the tab currently selected 202 // 3) is the tab currently selected
203 TabStatsList TabManager::GetTabStats() { 203 TabStatsList TabManager::GetTabStats() {
204 DCHECK_CURRENTLY_ON(BrowserThread::UI); 204 DCHECK_CURRENTLY_ON(BrowserThread::UI);
205 TabStatsList stats_list; 205 TabStatsList stats_list;
206 stats_list.reserve(32); // 99% of users have < 30 tabs open 206 stats_list.reserve(32); // 99% of users have < 30 tabs open
207 207
208 // Go through each window to get all the tabs. Depending on the platform, 208 // Go through each window to get all the tabs.
209 // windows are either native or ash or both. The goal is to make sure to go 209 AddTabStats(&stats_list);
210 // through them all, starting with the active window first (use
211 // chrome::GetActiveDesktop to get the current used type).
212 AddTabStats(BrowserList::GetInstance(chrome::GetActiveDesktop()), true,
213 &stats_list);
214 if (chrome::GetActiveDesktop() != chrome::HOST_DESKTOP_TYPE_NATIVE) {
215 AddTabStats(BrowserList::GetInstance(chrome::HOST_DESKTOP_TYPE_NATIVE),
216 false, &stats_list);
217 } else if (chrome::GetActiveDesktop() != chrome::HOST_DESKTOP_TYPE_ASH) {
218 AddTabStats(BrowserList::GetInstance(chrome::HOST_DESKTOP_TYPE_ASH), false,
219 &stats_list);
220 }
221 210
222 // Sort the collected data so that least desirable to be killed is first, most 211 // Sort the collected data so that least desirable to be killed is first, most
223 // desirable is last. 212 // desirable is last.
224 std::sort(stats_list.begin(), stats_list.end(), CompareTabStats); 213 std::sort(stats_list.begin(), stats_list.end(), CompareTabStats);
225 return stats_list; 214 return stats_list;
226 } 215 }
227 216
228 bool TabManager::IsTabDiscarded(content::WebContents* contents) const { 217 bool TabManager::IsTabDiscarded(content::WebContents* contents) const {
229 return GetWebContentsData(contents)->IsDiscarded(); 218 return GetWebContentsData(contents)->IsDiscarded();
230 } 219 }
(...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after
402 } 391 }
403 } 392 }
404 393
405 int TabManager::GetTabCount() const { 394 int TabManager::GetTabCount() const {
406 int tab_count = 0; 395 int tab_count = 0;
407 for (chrome::BrowserIterator it; !it.done(); it.Next()) 396 for (chrome::BrowserIterator it; !it.done(); it.Next())
408 tab_count += it->tab_strip_model()->count(); 397 tab_count += it->tab_strip_model()->count();
409 return tab_count; 398 return tab_count;
410 } 399 }
411 400
412 void TabManager::AddTabStats(BrowserList* browser_list, 401 void TabManager::AddTabStats(TabStatsList* stats_list) {
413 bool active_desktop, 402 BrowserList* browser_list = BrowserList::GetInstance();
414 TabStatsList* stats_list) { 403 // The first window will be the active one.
415 // If it's the active desktop, the first window will be the active one. 404 bool browser_active = true;
416 // Otherwise, assume no active windows.
417 bool browser_active = active_desktop;
418 for (BrowserList::const_reverse_iterator browser_iterator = 405 for (BrowserList::const_reverse_iterator browser_iterator =
419 browser_list->begin_last_active(); 406 browser_list->begin_last_active();
420 browser_iterator != browser_list->end_last_active(); 407 browser_iterator != browser_list->end_last_active();
421 ++browser_iterator) { 408 ++browser_iterator) {
422 Browser* browser = *browser_iterator; 409 Browser* browser = *browser_iterator;
423 bool is_browser_for_app = browser->is_app(); 410 bool is_browser_for_app = browser->is_app();
424 const TabStripModel* model = browser->tab_strip_model(); 411 const TabStripModel* model = browser->tab_strip_model();
425 for (int i = 0; i < model->count(); i++) { 412 for (int i = 0; i < model->count(); i++) {
426 WebContents* contents = model->GetWebContentsAt(i); 413 WebContents* contents = model->GetWebContentsAt(i);
427 if (!contents->IsCrashed()) { 414 if (!contents->IsCrashed()) {
(...skipping 25 matching lines...) Expand all
453 } 440 }
454 441
455 // This function is called when |update_timer_| fires. It will adjust the clock 442 // This function is called when |update_timer_| fires. It will adjust the clock
456 // if needed (if it detects that the machine was asleep) and will fire the stats 443 // if needed (if it detects that the machine was asleep) and will fire the stats
457 // updating on ChromeOS via the delegate. 444 // updating on ChromeOS via the delegate.
458 void TabManager::UpdateTimerCallback() { 445 void TabManager::UpdateTimerCallback() {
459 // If Chrome is shutting down, do not do anything. 446 // If Chrome is shutting down, do not do anything.
460 if (g_browser_process->IsShuttingDown()) 447 if (g_browser_process->IsShuttingDown())
461 return; 448 return;
462 449
463 if (BrowserList::GetInstance(chrome::HOST_DESKTOP_TYPE_ASH)->empty() && 450 if (BrowserList::GetInstance()->empty())
464 BrowserList::GetInstance(chrome::HOST_DESKTOP_TYPE_NATIVE)->empty())
465 return; 451 return;
466 452
467 // Check for a discontinuity in time caused by the machine being suspended. 453 // Check for a discontinuity in time caused by the machine being suspended.
468 if (!last_adjust_time_.is_null()) { 454 if (!last_adjust_time_.is_null()) {
469 TimeDelta suspend_time = NowTicks() - last_adjust_time_; 455 TimeDelta suspend_time = NowTicks() - last_adjust_time_;
470 if (suspend_time.InSeconds() > kSuspendThresholdSeconds) { 456 if (suspend_time.InSeconds() > kSuspendThresholdSeconds) {
471 // System was probably suspended, move the event timers forward in time so 457 // System was probably suspended, move the event timers forward in time so
472 // when they get subtracted out later, "uptime" is being counted. 458 // when they get subtracted out later, "uptime" is being counted.
473 start_time_ += suspend_time; 459 start_time_ += suspend_time;
474 if (!last_discard_time_.is_null()) 460 if (!last_discard_time_.is_null())
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after
662 } 648 }
663 649
664 TimeTicks TabManager::NowTicks() const { 650 TimeTicks TabManager::NowTicks() const {
665 if (!test_tick_clock_) 651 if (!test_tick_clock_)
666 return TimeTicks::Now(); 652 return TimeTicks::Now();
667 653
668 return test_tick_clock_->NowTicks(); 654 return test_tick_clock_->NowTicks();
669 } 655 }
670 656
671 } // namespace memory 657 } // namespace memory
OLDNEW
« no previous file with comments | « chrome/browser/memory/tab_manager.h ('k') | chrome/browser/policy/policy_browsertest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698