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 8d69c71e8ddf51c0cebb4c566fda09100271e219..5f07695c7bf2063d189a45b57ba5c820b807126d 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 FakePageLoadMetricsBinder |
+ : public content::WebContentsBindingSetTestBinder< |
+ page_load_metrics::mojom::PageLoadMetrics> { |
+ public: |
+ FakePageLoadMetricsBinder( |
+ page_load_metrics::mojom::PageLoadMetrics* page_load_metrics) |
+ : page_load_metrics_(page_load_metrics) {} |
+ ~FakePageLoadMetricsBinder() 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(FakePageLoadMetricsBinder); |
+}; |
+ |
+} // namespace |
+ |
class PageLoadMetricsBrowserTest : public InProcessBrowserTest { |
public: |
PageLoadMetricsBrowserTest() {} |
@@ -181,11 +224,21 @@ class PageLoadMetricsBrowserTest : public InProcessBrowserTest { |
scoped_refptr<TimingUpdatedObserver> CreateTimingUpdatedObserver() { |
content::WebContents* web_contents = |
browser()->tab_strip_model()->GetActiveWebContents(); |
+ if (!mock_page_load_metrics_) { |
Bryan McQuade
2017/04/26 16:04:34
just so i better understand, why is this needed in
lpy
2017/04/27 10:58:35
Done, I forgot to remove this part.
As I mentione
|
+ mock_page_load_metrics_.reset( |
+ new page_load_metrics::MockPageLoadMetrics()); |
+ content::WebContentsBindingSet::GetForWebContents< |
+ page_load_metrics::mojom::PageLoadMetrics>(web_contents) |
+ ->SetBinderForTesting(base::MakeUnique<FakePageLoadMetricsBinder>( |
+ mock_page_load_metrics_.get())); |
+ } |
scoped_refptr<TimingUpdatedObserver> observer(new TimingUpdatedObserver( |
web_contents->GetRenderViewHost()->GetWidget())); |
return observer; |
} |
+ std::unique_ptr<page_load_metrics::MockPageLoadMetrics> |
+ mock_page_load_metrics_; |
base::HistogramTester histogram_tester_; |
private: |