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

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

Issue 2898033002: [TabManager] Move TabManager into chrome/browser/resource_coordinator. (Closed)
Patch Set: rebase Created 3 years, 7 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
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
deleted file mode 100644
index 1fd82e9245fa420d4d729dc6dac8dda5078ae048..0000000000000000000000000000000000000000
--- a/chrome/browser/memory/tab_manager_web_contents_data.cc
+++ /dev/null
@@ -1,204 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/memory/tab_manager_web_contents_data.h"
-
-#include "base/metrics/histogram_macros.h"
-#include "base/time/tick_clock.h"
-#include "chrome/browser/browser_process.h"
-#include "chrome/browser/engagement/site_engagement_service.h"
-#include "chrome/browser/profiles/profile.h"
-#include "content/public/browser/browser_thread.h"
-#include "content/public/browser/web_contents.h"
-
-using base::TimeTicks;
-using content::WebContents;
-
-DEFINE_WEB_CONTENTS_USER_DATA_KEY(memory::TabManager::WebContentsData);
-
-namespace memory {
-
-TabManager::WebContentsData::WebContentsData(content::WebContents* web_contents)
- : WebContentsObserver(web_contents),
- test_tick_clock_(nullptr),
- time_to_purge_(base::TimeDelta::FromMinutes(30)),
- is_purged_(false) {}
-
-TabManager::WebContentsData::~WebContentsData() {}
-
-void TabManager::WebContentsData::DidStartLoading() {
- // Marks the tab as no longer discarded if it has been reloaded from another
- // source (ie: context menu).
- SetDiscardState(false);
-}
-
-void TabManager::WebContentsData::WebContentsDestroyed() {
- // If Chrome is shutting down, ignore this event.
- if (g_browser_process->IsShuttingDown())
- return;
-
- // If the tab has been previously discarded but is not currently discarded
- // (ie. it has been reloaded), we want to record the time it took between the
- // reload event and the closing of the tab.
- if (tab_data_.discard_count > 0 && !tab_data_.is_discarded) {
- auto delta = NowTicks() - tab_data_.last_reload_time;
- // Capped to one day for now, will adjust if necessary.
- UMA_HISTOGRAM_CUSTOM_TIMES("TabManager.Discarding.ReloadToCloseTime", delta,
- base::TimeDelta::FromSeconds(1),
- base::TimeDelta::FromDays(1), 100);
- }
-}
-
-bool TabManager::WebContentsData::IsDiscarded() {
- return tab_data_.is_discarded;
-}
-
-void TabManager::WebContentsData::SetDiscardState(bool state) {
- if (tab_data_.is_discarded == state)
- return;
-
- if (!state) {
- static int reload_count = 0;
- tab_data_.last_reload_time = NowTicks();
- UMA_HISTOGRAM_CUSTOM_COUNTS("TabManager.Discarding.ReloadCount",
- ++reload_count, 1, 1000, 50);
- auto delta = tab_data_.last_reload_time - 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);
-
- // Record the site engagement score if available.
- if (tab_data_.engagement_score >= 0.0) {
- UMA_HISTOGRAM_COUNTS_100("TabManager.Discarding.ReloadedEngagementScore",
- tab_data_.engagement_score);
- }
- if (tab_data_.last_inactive_time != base::TimeTicks::UnixEpoch()) {
- delta = tab_data_.last_reload_time - tab_data_.last_inactive_time;
- UMA_HISTOGRAM_CUSTOM_TIMES("TabManager.Discarding.InactiveToReloadTime",
- delta, base::TimeDelta::FromSeconds(1),
- base::TimeDelta::FromDays(1), 100);
- }
-
- } else {
- static int discard_count = 0;
- UMA_HISTOGRAM_CUSTOM_COUNTS("TabManager.Discarding.DiscardCount",
- ++discard_count, 1, 1000, 50);
- tab_data_.last_discard_time = NowTicks();
- // Record the site engagement score if available.
- if (SiteEngagementService::IsEnabled()) {
- SiteEngagementService* service = SiteEngagementService::Get(
- Profile::FromBrowserContext(web_contents()->GetBrowserContext()));
- if (service) {
- tab_data_.engagement_score =
- service->GetScore(web_contents()->GetLastCommittedURL());
- UMA_HISTOGRAM_COUNTS_100(
- "TabManager.Discarding.DiscardedEngagementScore",
- tab_data_.engagement_score);
- }
- }
- }
-
- tab_data_.is_discarded = state;
- g_browser_process->GetTabManager()->OnDiscardedStateChange(web_contents(),
- state);
-}
-
-int TabManager::WebContentsData::DiscardCount() {
- return tab_data_.discard_count;
-}
-
-void TabManager::WebContentsData::IncrementDiscardCount() {
- tab_data_.discard_count++;
-}
-
-bool TabManager::WebContentsData::IsRecentlyAudible() {
- return tab_data_.is_recently_audible;
-}
-
-void TabManager::WebContentsData::SetRecentlyAudible(bool state) {
- tab_data_.is_recently_audible = state;
-}
-
-TimeTicks TabManager::WebContentsData::LastAudioChangeTime() {
- return tab_data_.last_audio_change_time;
-}
-
-void TabManager::WebContentsData::SetLastAudioChangeTime(TimeTicks timestamp) {
- tab_data_.last_audio_change_time = timestamp;
-}
-
-TimeTicks TabManager::WebContentsData::LastInactiveTime() {
- return tab_data_.last_inactive_time;
-}
-
-void TabManager::WebContentsData::SetLastInactiveTime(TimeTicks timestamp) {
- tab_data_.last_inactive_time = timestamp;
-}
-
-// static
-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_;
- FromWebContents(new_contents)->test_tick_clock_ =
- FromWebContents(old_contents)->test_tick_clock_;
- }
-}
-
-void TabManager::WebContentsData::set_test_tick_clock(
- base::TickClock* test_tick_clock) {
- test_tick_clock_ = test_tick_clock;
-}
-
-TimeTicks TabManager::WebContentsData::NowTicks() const {
- if (!test_tick_clock_)
- return TimeTicks::Now();
-
- return test_tick_clock_->NowTicks();
-}
-
-TabManager::WebContentsData::Data::Data()
- : is_discarded(false),
- discard_count(0),
- is_recently_audible(false),
- last_audio_change_time(TimeTicks::UnixEpoch()),
- last_discard_time(TimeTicks::UnixEpoch()),
- last_reload_time(TimeTicks::UnixEpoch()),
- last_inactive_time(TimeTicks::UnixEpoch()),
- engagement_score(-1.0),
- is_auto_discardable(true) {}
-
-bool TabManager::WebContentsData::Data::operator==(const Data& right) const {
- return is_discarded == right.is_discarded &&
- is_recently_audible == right.is_recently_audible &&
- last_audio_change_time == right.last_audio_change_time &&
- last_discard_time == right.last_discard_time &&
- last_reload_time == right.last_reload_time &&
- last_inactive_time == right.last_inactive_time &&
- engagement_score == right.engagement_score;
-}
-
-bool TabManager::WebContentsData::Data::operator!=(const Data& right) const {
- return !(*this == right);
-}
-
-void TabManager::WebContentsData::SetAutoDiscardableState(bool state) {
- if (tab_data_.is_auto_discardable == state)
- return;
-
- tab_data_.is_auto_discardable = state;
- g_browser_process->GetTabManager()->OnAutoDiscardableStateChange(
- web_contents(), state);
-}
-
-bool TabManager::WebContentsData::IsAutoDiscardable() {
- return tab_data_.is_auto_discardable;
-}
-
-} // namespace memory

Powered by Google App Engine
This is Rietveld 408576698