| Index: chrome/browser/memory/tab_manager_web_contents_data.h
|
| diff --git a/chrome/browser/memory/tab_manager_web_contents_data.h b/chrome/browser/memory/tab_manager_web_contents_data.h
|
| index 649da9815a2d943ee8a5a2eba020334a1d00d4c5..11d28afd109654de1e2fcab259bb94f704b05c3b 100644
|
| --- a/chrome/browser/memory/tab_manager_web_contents_data.h
|
| +++ b/chrome/browser/memory/tab_manager_web_contents_data.h
|
| @@ -5,9 +5,11 @@
|
| #ifndef CHROME_BROWSER_MEMORY_TAB_MANAGER_WEB_CONTENTS_DATA_H_
|
| #define CHROME_BROWSER_MEMORY_TAB_MANAGER_WEB_CONTENTS_DATA_H_
|
|
|
| -#include "base/supports_user_data.h"
|
| +#include "base/macros.h"
|
| #include "base/time/time.h"
|
| #include "chrome/browser/memory/tab_manager.h"
|
| +#include "content/public/browser/web_contents_observer.h"
|
| +#include "content/public/browser/web_contents_user_data.h"
|
|
|
| namespace content {
|
| class WebContents;
|
| @@ -15,69 +17,67 @@ class WebContents;
|
|
|
| namespace memory {
|
|
|
| -// Manages the information about the discarding state of a tab. This data is
|
| -// stored in WebContents.
|
| -class TabManager::WebContentsData : public base::SupportsUserData::Data {
|
| +// Internal class used by TabManager to record the needed data for
|
| +// WebContentses.
|
| +class TabManager::WebContentsData
|
| + : public content::WebContentsObserver,
|
| + public content::WebContentsUserData<TabManager::WebContentsData> {
|
| public:
|
| - // Returns the WebContentsData associated with |web_contents|. It will create
|
| - // one if none exists.
|
| - static WebContentsData* Get(content::WebContents* web_contents);
|
| + explicit WebContentsData(content::WebContents* web_contents);
|
| + ~WebContentsData() override;
|
|
|
| - // Sets the WebContentsData of a |web_contents|. The object referenced by
|
| - // |state| is now owned by |web_contents|
|
| - static void Set(content::WebContents* web_contents, WebContentsData* state);
|
| -
|
| - // Copies the discard state from |old_contents| to |new_contents|.
|
| - static void CopyState(content::WebContents* old_contents,
|
| - content::WebContents* new_contents);
|
| + // WebContentsObserver implementation:
|
| + void DidStartLoading() override;
|
|
|
| // Returns true if |web_contents| has been discarded to save memory.
|
| - static bool IsDiscarded(content::WebContents* web_contents);
|
| + bool IsDiscarded();
|
|
|
| // Sets/clears the discard state of |web_contents|.
|
| - static void SetDiscardState(content::WebContents* web_contents, bool state);
|
| + void SetDiscardState(bool state);
|
|
|
| // Returns the number of times |web_contents| has been discarded.
|
| - static int DiscardCount(content::WebContents* web_contents);
|
| + int DiscardCount();
|
|
|
| // Increments the number of times |web_contents| has been discarded.
|
| - static void IncrementDiscardCount(content::WebContents* web_contents);
|
| + void IncrementDiscardCount();
|
|
|
| // Returns true if audio has recently been audible from the WebContents.
|
| - static bool IsRecentlyAudible(content::WebContents* web_contents);
|
| + bool IsRecentlyAudible();
|
|
|
| // Set/clears the state of whether audio has recently been audible from the
|
| // WebContents.
|
| - static void SetRecentlyAudible(content::WebContents* web_contents,
|
| - bool state);
|
| + void SetRecentlyAudible(bool state);
|
|
|
| // Returns the timestamp of the last time |web_contents| changed its audio
|
| // state.
|
| - static base::TimeTicks LastAudioChangeTime(
|
| - content::WebContents* web_contents);
|
| + base::TimeTicks LastAudioChangeTime();
|
|
|
| // Sets the timestamp of the last time |web_contents| changed its audio state.
|
| - static void SetLastAudioChangeTime(content::WebContents* web_contents,
|
| - base::TimeTicks timestamp);
|
| -
|
| - private:
|
| - WebContentsData();
|
| -
|
| - // Is the tab currently discarded?
|
| - bool is_discarded_;
|
| + void SetLastAudioChangeTime(base::TimeTicks timestamp);
|
|
|
| - // Number of times the tab has been discarded.
|
| - int discard_count_;
|
| -
|
| - // Is the tab playing audio?
|
| - bool is_recently_audible_;
|
| -
|
| - // Last time the tab started or stopped playing audio (we record the
|
| - // transition time).
|
| - base::TimeTicks last_audio_change_time_;
|
| + // Copies the discard state from |old_contents| to |new_contents|.
|
| + static void CopyState(content::WebContents* old_contents,
|
| + content::WebContents* new_contents);
|
|
|
| - // The last time the tab was discarded.
|
| - base::TimeTicks last_discard_time_;
|
| + private:
|
| + struct Data {
|
| + Data();
|
| + // Is the tab currently discarded?
|
| + bool is_discarded_;
|
| + // Number of times the tab has been discarded.
|
| + int discard_count_;
|
| + // Is the tab playing audio?
|
| + bool is_recently_audible_;
|
| + // Last time the tab started or stopped playing audio (we record the
|
| + // transition time).
|
| + base::TimeTicks last_audio_change_time_;
|
| + // The last time the tab was discarded.
|
| + base::TimeTicks last_discard_time_;
|
| + };
|
| +
|
| + Data tab_data_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(WebContentsData);
|
| };
|
|
|
| } // namespace memory
|
|
|