Chromium Code Reviews| 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..70efea89b01cf0d8b100b222423a1775ffd40020 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) |
| + : WebContentsObserver(web_contents) {} |
|
sky
2015/10/27 21:16:46
Don't inline this, and I wouldn't inline the destr
Georges Khalil
2015/10/30 14:17:44
Done.
|
| - // 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 |