| Index: chrome/browser/data_use_measurement/chrome_data_use_ascriber_service.h
|
| diff --git a/chrome/browser/data_use_measurement/chrome_data_use_ascriber_service.h b/chrome/browser/data_use_measurement/chrome_data_use_ascriber_service.h
|
| index ce7782ea0e5c3f665ee174f97bdfbf229e2313e1..522813d06c39e802311646ece59bf229a5ca0c76 100644
|
| --- a/chrome/browser/data_use_measurement/chrome_data_use_ascriber_service.h
|
| +++ b/chrome/browser/data_use_measurement/chrome_data_use_ascriber_service.h
|
| @@ -6,6 +6,7 @@
|
| #define CHROME_BROWSER_DATA_USE_MEASUREMENT_CHROME_DATA_USE_ASCRIBER_SERVICE_H_
|
|
|
| #include <list>
|
| +#include <unordered_set>
|
|
|
| #include "base/macros.h"
|
| #include "components/keyed_service/core/keyed_service.h"
|
| @@ -53,6 +54,15 @@ class ChromeDataUseAscriberService : public KeyedService {
|
| // methods cannot be called on the IO thread, so the pointer is cast to void*.
|
| void ReadyToCommitNavigation(content::NavigationHandle* navigation_handle);
|
|
|
| + // Called every time the WebContents changes visibility. Propagates the event
|
| + // to the |ascriber_| on the IO thread.
|
| + void WasShownOrHidden(content::RenderFrameHost* main_render_frame_host,
|
| + bool visible);
|
| +
|
| + // Called when one of the render frames of a WebContents is swapped.
|
| + void RenderFrameHostChanged(content::RenderFrameHost* old_host,
|
| + content::RenderFrameHost* new_host);
|
| +
|
| private:
|
| friend class ChromeDataUseAscriberServiceTest;
|
|
|
| @@ -72,6 +82,11 @@ class ChromeDataUseAscriberService : public KeyedService {
|
| // duration that they are in the queue.
|
| std::list<content::RenderFrameHost*> pending_frames_queue_;
|
|
|
| + // WebContents visibility change events might arrive from the UI thread before
|
| + // |ascriber_| is set. Sucn pending main render frame visibile events are
|
| + // maintained in this set and propagated immediately after |ascriber_| is set.
|
| + std::unordered_set<content::RenderFrameHost*> pending_visible_main_frames_;
|
| +
|
| DISALLOW_COPY_AND_ASSIGN(ChromeDataUseAscriberService);
|
| };
|
|
|
|
|