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

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

Issue 1400823003: Creates BrowserTabStripTracker to consolidate common code (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: review feedback and git cl format Created 5 years, 2 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 "chrome/browser/memory/tab_manager.h" 5 #include "chrome/browser/memory/tab_manager.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <set> 8 #include <set>
9 #include <vector> 9 #include <vector>
10 10
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
94 94
95 return -1; 95 return -1;
96 } 96 }
97 97
98 } // namespace 98 } // namespace
99 99
100 //////////////////////////////////////////////////////////////////////////////// 100 ////////////////////////////////////////////////////////////////////////////////
101 // TabManager 101 // TabManager
102 102
103 TabManager::TabManager() 103 TabManager::TabManager()
104 : discard_count_(0), recent_tab_discard_(false), discard_once_(false) { 104 : discard_count_(0),
105 recent_tab_discard_(false),
106 discard_once_(false),
107 browser_tab_strip_tracker_(this, nullptr, nullptr) {
105 #if defined(OS_CHROMEOS) 108 #if defined(OS_CHROMEOS)
106 delegate_.reset(new TabManagerDelegate); 109 delegate_.reset(new TabManagerDelegate);
107 #endif 110 #endif
108 BrowserList::AddObserver(this); 111 browser_tab_strip_tracker_.Init(
112 BrowserTabStripTracker::InitWith::ALL_BROWERS);
109 } 113 }
110 114
111 TabManager::~TabManager() { 115 TabManager::~TabManager() {
112 Stop(); 116 Stop();
113 for (chrome::BrowserIterator iterator; !iterator.done(); iterator.Next())
114 iterator->tab_strip_model()->RemoveObserver(this);
115
116 BrowserList::RemoveObserver(this);
117 } 117 }
118 118
119 void TabManager::Start(bool discard_once) { 119 void TabManager::Start(bool discard_once) {
120 discard_once_ = discard_once; 120 discard_once_ = discard_once;
121 if (!update_timer_.IsRunning()) { 121 if (!update_timer_.IsRunning()) {
122 update_timer_.Start(FROM_HERE, 122 update_timer_.Start(FROM_HERE,
123 TimeDelta::FromSeconds(kAdjustmentIntervalSeconds), 123 TimeDelta::FromSeconds(kAdjustmentIntervalSeconds),
124 this, &TabManager::UpdateTimerCallback); 124 this, &TabManager::UpdateTimerCallback);
125 } 125 }
126 if (!recent_tab_discard_timer_.IsRunning()) { 126 if (!recent_tab_discard_timer_.IsRunning()) {
(...skipping 341 matching lines...) Expand 10 before | Expand all | Expand 10 after
468 468
469 // For the moment we only do something when we reach a critical state. 469 // For the moment we only do something when we reach a critical state.
470 if (memory_pressure_level == 470 if (memory_pressure_level ==
471 base::MemoryPressureListener::MEMORY_PRESSURE_LEVEL_CRITICAL) { 471 base::MemoryPressureListener::MEMORY_PRESSURE_LEVEL_CRITICAL) {
472 LogMemoryAndDiscardTab(); 472 LogMemoryAndDiscardTab();
473 } 473 }
474 // TODO(skuhne): If more memory pressure levels are introduced, we might 474 // TODO(skuhne): If more memory pressure levels are introduced, we might
475 // consider to call PurgeBrowserMemory() before CRITICAL is reached. 475 // consider to call PurgeBrowserMemory() before CRITICAL is reached.
476 } 476 }
477 477
478 void TabManager::OnBrowserAdded(Browser* browser) {
479 browser->tab_strip_model()->AddObserver(this);
480 }
481
482 void TabManager::OnBrowserRemoved(Browser* browser) {
483 browser->tab_strip_model()->RemoveObserver(this);
484 }
485
486 bool TabManager::IsAudioTab(WebContents* contents) const { 478 bool TabManager::IsAudioTab(WebContents* contents) const {
487 if (contents->WasRecentlyAudible()) 479 if (contents->WasRecentlyAudible())
488 return true; 480 return true;
489 auto delta = 481 auto delta =
490 TimeTicks::Now() - memory::TabDiscardState::LastAudioChangeTime(contents); 482 TimeTicks::Now() - memory::TabDiscardState::LastAudioChangeTime(contents);
491 return delta < TimeDelta::FromSeconds(kAudioProtectionTimeSeconds); 483 return delta < TimeDelta::FromSeconds(kAudioProtectionTimeSeconds);
492 } 484 }
493 485
494 // static 486 // static
495 bool TabManager::CompareTabStats(TabStats first, TabStats second) { 487 bool TabManager::CompareTabStats(TabStats first, TabStats second) {
(...skipping 29 matching lines...) Expand all
525 // sudden_termination_allowed false, and that covers too many common pages 517 // sudden_termination_allowed false, and that covers too many common pages
526 // with ad networks and statistics scripts. Ideally we would like to check 518 // with ad networks and statistics scripts. Ideally we would like to check
527 // for beforeUnload handlers, which are likely to present a dialog asking 519 // for beforeUnload handlers, which are likely to present a dialog asking
528 // if the user wants to discard state. crbug.com/123049 520 // if the user wants to discard state. crbug.com/123049
529 521
530 // Being more recently active is more important. 522 // Being more recently active is more important.
531 return first.last_active > second.last_active; 523 return first.last_active > second.last_active;
532 } 524 }
533 525
534 } // namespace memory 526 } // namespace memory
OLDNEW
« no previous file with comments | « chrome/browser/memory/tab_manager.h ('k') | chrome/browser/ui/ash/launcher/browser_status_monitor.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698