Chromium Code Reviews| 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..0a38d8a51346dc1dfdd4c0471d8b8fe7bfdcb61c 100644 |
| --- a/chrome/browser/memory/tab_manager_web_contents_data.cc |
| +++ b/chrome/browser/memory/tab_manager_web_contents_data.cc |
| @@ -11,116 +11,77 @@ |
| 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); |
| - } |
| - |
| - return discard_state; |
| -} |
| - |
| -// 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). |
| + WebContentsData::FromWebContents(web_contents())->SetDiscardState(false); |
|
sky
2015/10/27 21:16:46
Isn't WebContentsData::FromWebContents(web_content
Georges Khalil
2015/10/30 14:17:44
Yep. SetDiscardedState was static at first but I c
|
| } |
| -// 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; |
| +bool TabManager::WebContentsData::IsDiscarded() { |
| + return tab_data_.is_discarded_; |
| } |
| -// static |
| -bool TabManager::WebContentsData::IsDiscarded(WebContents* web_contents) { |
| - return TabManager::WebContentsData::Get(web_contents)->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), |