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

Unified Diff: chrome/browser/memory/tab_manager_web_contents_data.cc

Issue 1427613002: [TabManager] Move remaining discard logic from TabStripModel to TabManager. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: chrisha@ comments. 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/memory/tab_manager_web_contents_data.h ('k') | chrome/browser/ui/browser.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/memory/tab_manager_web_contents_data.cc
diff --git a/chrome/browser/memory/tab_manager_web_contents_data.cc b/chrome/browser/memory/tab_manager_web_contents_data.cc
index d4efa76a7b5a02259ee598c286515081be369c49..42e31f7e9f002b41ff5983d888e8d1040a5c2a0f 100644
--- a/chrome/browser/memory/tab_manager_web_contents_data.cc
+++ b/chrome/browser/memory/tab_manager_web_contents_data.cc
@@ -11,116 +11,82 @@
using base::TimeTicks;
using content::WebContents;
-namespace {
-
-const char kDiscardStateKey[] = "WebContentsData";
-
-} // namespace
+DEFINE_WEB_CONTENTS_USER_DATA_KEY(memory::TabManager::WebContentsData);
namespace memory {
-// static
-TabManager::WebContentsData* TabManager::WebContentsData::Get(
- WebContents* web_contents) {
- DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
- TabManager::WebContentsData* discard_state = static_cast<WebContentsData*>(
- web_contents->GetUserData(&kDiscardStateKey));
-
- // If this function is called, we probably need to query/change the discard
- // state. Let's go ahead a add one.
- if (!discard_state) {
- discard_state = new WebContentsData;
- web_contents->SetUserData(&kDiscardStateKey, discard_state);
- }
+TabManager::WebContentsData::WebContentsData(content::WebContents* web_contents)
+ : WebContentsObserver(web_contents) {}
- return discard_state;
-}
+TabManager::WebContentsData::~WebContentsData() {}
-// static
-void TabManager::WebContentsData::Set(WebContents* web_contents,
- WebContentsData* state) {
- DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
- web_contents->SetUserData(&kDiscardStateKey, state);
+void TabManager::WebContentsData::DidStartLoading() {
+ // Marks the tab as no longer discarded if it has been reloaded from another
+ // source (ie: context menu).
+ SetDiscardState(false);
}
-// static
-void TabManager::WebContentsData::CopyState(
- content::WebContents* old_contents,
- content::WebContents* new_contents) {
- WebContentsData* old_state = Get(old_contents);
- WebContentsData* new_State = Get(new_contents);
- *new_State = *old_state;
-}
-
-// static
-bool TabManager::WebContentsData::IsDiscarded(WebContents* web_contents) {
- return TabManager::WebContentsData::Get(web_contents)->is_discarded_;
+bool TabManager::WebContentsData::IsDiscarded() {
+ return tab_data_.is_discarded_;
}
-// static
-void TabManager::WebContentsData::SetDiscardState(WebContents* web_contents,
- bool state) {
- WebContentsData* discard_state =
- TabManager::WebContentsData::Get(web_contents);
- if (discard_state->is_discarded_ && !state) {
+void TabManager::WebContentsData::SetDiscardState(bool state) {
+ if (tab_data_.is_discarded_ && !state) {
static int reload_count = 0;
UMA_HISTOGRAM_CUSTOM_COUNTS("TabManager.Discarding.ReloadCount",
++reload_count, 1, 1000, 50);
- auto delta = base::TimeTicks::Now() - discard_state->last_discard_time_;
+ auto delta = base::TimeTicks::Now() - tab_data_.last_discard_time_;
// Capped to one day for now, will adjust if necessary.
UMA_HISTOGRAM_CUSTOM_TIMES("TabManager.Discarding.DiscardToReloadTime",
delta, base::TimeDelta::FromSeconds(1),
base::TimeDelta::FromDays(1), 100);
- } else if (!discard_state->is_discarded_ && state) {
+ } else if (!tab_data_.is_discarded_ && state) {
static int discard_count = 0;
UMA_HISTOGRAM_CUSTOM_COUNTS("TabManager.Discarding.DiscardCount",
++discard_count, 1, 1000, 50);
- discard_state->last_discard_time_ = base::TimeTicks::Now();
+ tab_data_.last_discard_time_ = base::TimeTicks::Now();
}
- discard_state->is_discarded_ = state;
+ tab_data_.is_discarded_ = state;
}
-// static
-int TabManager::WebContentsData::DiscardCount(WebContents* web_contents) {
- return TabManager::WebContentsData::Get(web_contents)->discard_count_;
+int TabManager::WebContentsData::DiscardCount() {
+ return tab_data_.discard_count_;
}
-// static
-void TabManager::WebContentsData::IncrementDiscardCount(
- WebContents* web_contents) {
- TabManager::WebContentsData::Get(web_contents)->discard_count_++;
+void TabManager::WebContentsData::IncrementDiscardCount() {
+ tab_data_.discard_count_++;
}
-// static
-bool TabManager::WebContentsData::IsRecentlyAudible(
- content::WebContents* web_contents) {
- return TabManager::WebContentsData::Get(web_contents)->is_recently_audible_;
+bool TabManager::WebContentsData::IsRecentlyAudible() {
+ return tab_data_.is_recently_audible_;
}
-// static
-void TabManager::WebContentsData::SetRecentlyAudible(
- content::WebContents* web_contents,
- bool state) {
- TabManager::WebContentsData::Get(web_contents)->is_recently_audible_ = state;
+void TabManager::WebContentsData::SetRecentlyAudible(bool state) {
+ tab_data_.is_recently_audible_ = state;
}
-// static
-TimeTicks TabManager::WebContentsData::LastAudioChangeTime(
- content::WebContents* web_contents) {
- return TabManager::WebContentsData::Get(web_contents)
- ->last_audio_change_time_;
+TimeTicks TabManager::WebContentsData::LastAudioChangeTime() {
+ return tab_data_.last_audio_change_time_;
+}
+
+void TabManager::WebContentsData::SetLastAudioChangeTime(TimeTicks timestamp) {
+ tab_data_.last_audio_change_time_ = timestamp;
}
// static
-void TabManager::WebContentsData::SetLastAudioChangeTime(
- content::WebContents* web_contents,
- TimeTicks timestamp) {
- TabManager::WebContentsData::Get(web_contents)->last_audio_change_time_ =
- timestamp;
+void TabManager::WebContentsData::CopyState(
+ content::WebContents* old_contents,
+ content::WebContents* new_contents) {
+ // Only copy if an existing state is found.
+ if (FromWebContents(old_contents)) {
+ CreateForWebContents(new_contents);
+ FromWebContents(new_contents)->tab_data_ =
+ FromWebContents(old_contents)->tab_data_;
+ }
}
-TabManager::WebContentsData::WebContentsData()
+TabManager::WebContentsData::Data::Data()
: is_discarded_(false),
discard_count_(0),
is_recently_audible_(false),
« no previous file with comments | « chrome/browser/memory/tab_manager_web_contents_data.h ('k') | chrome/browser/ui/browser.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698