Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(409)

Side by Side Diff: components/page_load_metrics/renderer/fake_page_timing_metrics_ipc_sender.h

Issue 2056153002: Convert PageLoadMetrics to Mojo (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright (c) 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #ifndef COMPONENTS_PAGE_LOAD_METRICS_RENDERER_FAKE_PAGE_TIMING_METRICS_IPC_SENDE R_H_
6 #define COMPONENTS_PAGE_LOAD_METRICS_RENDERER_FAKE_PAGE_TIMING_METRICS_IPC_SENDE R_H_
7
8 #include <vector>
9
10 #include "components/page_load_metrics/common/page_load_timing.h"
11 #include "ipc/ipc_sender.h"
12
13 namespace IPC {
14 class Message;
15 }
16
17 namespace page_load_metrics {
18
19 // IPC::Sender implementation for use in tests. Allows for setting and verifying
20 // basic expectations when sending PageLoadTiming IPCs. By default,
21 // FakePageTimingMetricsIPCSender will verify that expected and actual
22 // PageLoadTimings match on each invocation to ExpectPageLoadTiming() and
23 // Send(), as well as in the destructor. Tests can force additional validations
24 // by calling VerifyExpectedTimings.
25 //
26 // Expected PageLoadTimings are specified via ExpectPageLoadTiming, and actual
27 // PageLoadTimings are dispatched through Send(). When Send() is called, we
28 // verify that the actual PageLoadTimings dipatched through Send() match the
29 // expected PageLoadTimings provided via ExpectPageLoadTiming.
30 //
31 // Normally, gmock would be used in place of this class, but gmock is not
32 // compatible with structures that use aligned memory, and PageLoadTiming will
33 // soon use base::Optional which uses aligned memory, so we're forced to roll
34 // our own implementation here. See
35 // https://groups.google.com/forum/#!topic/googletestframework/W-Hud3j_c6I for
36 // more details.
37 class FakePageTimingMetricsIPCSender : public IPC::Sender {
38 public:
39 FakePageTimingMetricsIPCSender();
40 ~FakePageTimingMetricsIPCSender() override;
41
42 // Implementation of IPC::Sender. PageLoadMetricsMsg_TimingUpdated IPCs that
43 // send updated PageLoadTimings should be dispatched through this method. This
44 // method will verify that all PageLoadTiming update IPCs dispatched so far
45 // match with the expected PageLoadTimings passed to ExpectPageLoadTiming.
46 bool Send(IPC::Message* message) override;
47
48 // PageLoadTimings that are expected to be sent through Send() should be
49 // passed to ExpectPageLoadTiming.
50 void ExpectPageLoadTiming(const PageLoadTiming& timing);
51
52 // Forces verification that actual timings sent through Send match
53 // expected timings provided via ExpectPageLoadTiming.
54 void VerifyExpectedTimings() const;
55
56 const std::vector<PageLoadTiming>& expected_timings() const {
57 return expected_timings_;
58 }
59 const std::vector<PageLoadTiming>& actual_timings() const {
60 return actual_timings_;
61 }
62
63 private:
64 void OnTimingUpdated(const PageLoadTiming& timing, PageLoadMetadata metadata);
65
66 std::vector<PageLoadTiming> expected_timings_;
67 std::vector<PageLoadTiming> actual_timings_;
68 };
69
70 } // namespace page_load_metrics
71
72 #endif // COMPONENTS_PAGE_LOAD_METRICS_RENDERER_FAKE_PAGE_TIMING_METRICS_IPC_SE NDER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698