| Index: chrome/browser/page_load_metrics/page_load_metrics_browsertest.cc
|
| diff --git a/chrome/browser/page_load_metrics/page_load_metrics_browsertest.cc b/chrome/browser/page_load_metrics/page_load_metrics_browsertest.cc
|
| index 2c20891f70534955975e5de036cd595e0374397d..0904255a38d665d09922c73c4272c4d0e29c0cf0 100644
|
| --- a/chrome/browser/page_load_metrics/page_load_metrics_browsertest.cc
|
| +++ b/chrome/browser/page_load_metrics/page_load_metrics_browsertest.cc
|
| @@ -29,12 +29,15 @@
|
| #include "content/public/browser/render_view_host.h"
|
| #include "content/public/test/browser_test_utils.h"
|
| #include "content/public/test/download_test_observer.h"
|
| +#include "content/public/test/web_contents_binding_set_test_binder.h"
|
| +#include "mojo/public/cpp/bindings/associated_binding.h"
|
| #include "net/http/failing_http_transaction_factory.h"
|
| #include "net/http/http_cache.h"
|
| #include "net/test/embedded_test_server/embedded_test_server.h"
|
| #include "net/test/url_request/url_request_failed_job.h"
|
| #include "net/url_request/url_request_context.h"
|
| #include "net/url_request/url_request_context_getter.h"
|
| +#include "testing/gmock/include/gmock/gmock.h"
|
|
|
| namespace {
|
|
|
| @@ -157,6 +160,46 @@ class TimingUpdatedObserver : public content::BrowserMessageFilter {
|
|
|
| } // namespace
|
|
|
| +namespace page_load_metrics {
|
| +
|
| +class MockPageLoadMetrics : public mojom::PageLoadMetrics {
|
| + public:
|
| + MockPageLoadMetrics() {}
|
| + ~MockPageLoadMetrics() override {}
|
| + MOCK_METHOD2(UpdateTiming,
|
| + void(const PageLoadTiming&, const PageLoadMetadata&));
|
| +};
|
| +
|
| +} // namespace page_load_metrics
|
| +
|
| +namespace {
|
| +
|
| +class MockPageLoadMetricsBinder
|
| + : public content::WebContentsBindingSetTestBinder<
|
| + page_load_metrics::mojom::PageLoadMetrics> {
|
| + public:
|
| + MockPageLoadMetricsBinder(
|
| + page_load_metrics::mojom::PageLoadMetrics* page_load_metrics)
|
| + : page_load_metrics_(page_load_metrics) {}
|
| + ~MockPageLoadMetricsBinder() override {}
|
| +
|
| + void BindRequest(content::RenderFrameHost* frame_host,
|
| + page_load_metrics::mojom::PageLoadMetricsAssociatedRequest
|
| + request) override {
|
| + bindings_.AddBinding(page_load_metrics_, std::move(request), frame_host);
|
| + }
|
| +
|
| + private:
|
| + page_load_metrics::mojom::PageLoadMetrics* page_load_metrics_;
|
| + mojo::AssociatedBindingSet<page_load_metrics::mojom::PageLoadMetrics,
|
| + content::RenderFrameHost*>
|
| + bindings_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(MockPageLoadMetricsBinder);
|
| +};
|
| +
|
| +} // namespace
|
| +
|
| class PageLoadMetricsBrowserTest : public InProcessBrowserTest {
|
| public:
|
| PageLoadMetricsBrowserTest() {}
|
| @@ -183,9 +226,19 @@ class PageLoadMetricsBrowserTest : public InProcessBrowserTest {
|
| browser()->tab_strip_model()->GetActiveWebContents();
|
| scoped_refptr<TimingUpdatedObserver> observer(new TimingUpdatedObserver(
|
| web_contents->GetRenderViewHost()->GetWidget()));
|
| + if (!mock_page_load_metrics_) {
|
| + mock_page_load_metrics_.reset(
|
| + new page_load_metrics::MockPageLoadMetrics());
|
| + content::WebContentsBindingSet::GetForWebContents<
|
| + page_load_metrics::mojom::PageLoadMetrics>(web_contents)
|
| + ->SetBinderForTesting(base::MakeUnique<MockPageLoadMetricsBinder>(
|
| + mock_page_load_metrics_.get()));
|
| + }
|
| return observer;
|
| }
|
|
|
| + std::unique_ptr<page_load_metrics::MockPageLoadMetrics>
|
| + mock_page_load_metrics_;
|
| base::HistogramTester histogram_tester_;
|
|
|
| private:
|
|
|