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

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

Issue 2823523003: [Page Load Metrics] PageLoadMetrics Mojofication. (Closed)
Patch Set: rebase Created 3 years, 7 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 CHROME_RENDERER_PAGE_LOAD_METRICS_FAKE_PAGE_TIMING_METRICS_IPC_SENDER_H_
6 #define CHROME_RENDERER_PAGE_LOAD_METRICS_FAKE_PAGE_TIMING_METRICS_IPC_SENDER_H_
7
8 #include <vector>
9
10 #include "chrome/common/page_load_metrics/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 mojom::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<mojom::PageLoadTimingPtr>& expected_timings() const {
57 return expected_timings_;
58 }
59 const std::vector<mojom::PageLoadTimingPtr>& actual_timings() const {
60 return actual_timings_;
61 }
62
63 private:
64 void OnTimingUpdated(const mojom::PageLoadTiming& timing,
65 mojom::PageLoadMetadata metadata);
66
67 std::vector<mojom::PageLoadTimingPtr> expected_timings_;
68 std::vector<mojom::PageLoadTimingPtr> actual_timings_;
69 };
70
71 } // namespace page_load_metrics
72
73 #endif // CHROME_RENDERER_PAGE_LOAD_METRICS_FAKE_PAGE_TIMING_METRICS_IPC_SENDER _H_
OLDNEW
« no previous file with comments | « chrome/renderer/BUILD.gn ('k') | chrome/renderer/page_load_metrics/fake_page_timing_metrics_ipc_sender.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698