| Index: chrome/browser/prerender/prerender_test_utils.h
|
| diff --git a/chrome/browser/prerender/prerender_test_utils.h b/chrome/browser/prerender/prerender_test_utils.h
|
| index d7f4af8de292a2d9585e96eb596dcaeefde913c7..aed9d2cd469cf0fff467fde79a69b2d87b985508 100644
|
| --- a/chrome/browser/prerender/prerender_test_utils.h
|
| +++ b/chrome/browser/prerender/prerender_test_utils.h
|
| @@ -17,6 +17,7 @@
|
| #include "base/run_loop.h"
|
| #include "base/test/histogram_tester.h"
|
| #include "chrome/browser/external_protocol/external_protocol_handler.h"
|
| +#include "chrome/browser/page_load_metrics/observers/prerender_page_load_metrics_observer.h"
|
| #include "chrome/browser/prerender/prerender_contents.h"
|
| #include "chrome/browser/prerender/prerender_manager.h"
|
| #include "chrome/browser/safe_browsing/test_safe_browsing_service.h"
|
| @@ -242,6 +243,26 @@ class DestructionWaiter {
|
| DISALLOW_COPY_AND_ASSIGN(DestructionWaiter);
|
| };
|
|
|
| +// Wait until a PrerenderManager has seen a first contentful paint.
|
| +class FirstContentfulPaintManagerWaiter : public PrerenderManagerObserver {
|
| + public:
|
| + // Create and return a pointer to a |FirstContentfulPaintManagerWaiter|. The
|
| + // instance is owned by the |PrerenderManager|.
|
| + static FirstContentfulPaintManagerWaiter* Create(PrerenderManager* manager);
|
| + ~FirstContentfulPaintManagerWaiter();
|
| +
|
| + void OnFirstContentfulPaint() override;
|
| +
|
| + // Wait for a first contentful paint to be seen by our PrerenderManager.
|
| + void Wait();
|
| +
|
| + private:
|
| + FirstContentfulPaintManagerWaiter();
|
| +
|
| + std::unique_ptr<base::RunLoop> waiter_;
|
| + bool saw_fcp_;
|
| +};
|
| +
|
| // PrerenderContentsFactory that uses TestPrerenderContents.
|
| class TestPrerenderContentsFactory : public PrerenderContents::Factory {
|
| public:
|
| @@ -368,6 +389,22 @@ class PrerenderInProcessBrowserTest : virtual public InProcessBrowserTest {
|
| DISALLOW_COPY_AND_ASSIGN(PrerenderInProcessBrowserTest);
|
| };
|
|
|
| +// A test observer that allows the observed navigation start time to be set.
|
| +class TestPrerenderPageLoadMetricsObserver
|
| + : public PrerenderPageLoadMetricsObserver {
|
| + public:
|
| + using PrerenderPageLoadMetricsObserver::PrerenderPageLoadMetricsObserver;
|
| +
|
| + void SetNavigationStartMilliseconds(int ms) {
|
| + SetNavigationStartTicksForTesting(base::TimeTicks() +
|
| + base::TimeDelta::FromMilliseconds(ms));
|
| + }
|
| +
|
| + void SetNavigationStartFromZero(base::TimeDelta delta) {
|
| + SetNavigationStartTicksForTesting(base::TimeTicks() + delta);
|
| + }
|
| +};
|
| +
|
| // Makes |url| respond to requests with the contents of |file|, counting the
|
| // number that start in |counter|.
|
| void CreateCountingInterceptorOnIO(
|
|
|