1 // Copyright 2020 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_NO_STATE_PREFETCH_RENDERER_PRERENDER_RENDER_FRAME_OBSERVER_H_ 6 #define COMPONENTS_NO_STATE_PREFETCH_RENDERER_PRERENDER_RENDER_FRAME_OBSERVER_H_ 7 8 #include "components/no_state_prefetch/common/prerender_types.mojom.h" 9 #include "components/no_state_prefetch/common/render_frame_prerender_messages.mojom.h" 10 #include "content/public/renderer/render_frame_observer.h" 11 #include "mojo/public/cpp/bindings/associated_receiver_set.h" 12 #include "mojo/public/cpp/bindings/pending_associated_receiver.h" 13 14 namespace content { 15 class RenderFrame; 16 } 17 18 namespace prerender { 19 20 class PrerenderRenderFrameObserver 21 : public content::RenderFrameObserver, 22 public prerender::mojom::PrerenderMessages { 23 public: 24 explicit PrerenderRenderFrameObserver(content::RenderFrame* render_frame); 25 ~PrerenderRenderFrameObserver() override; 26 27 // prerender::mojom::PrerenderMessages: 28 void SetIsPrerendering(prerender::mojom::PrerenderMode mode, 29 const std::string& histogram_prefix) override; 30 31 private: 32 // RenderFrameObserver implementation. 33 void OnDestruct() override; 34 35 void OnRenderFrameObserverRequest( 36 mojo::PendingAssociatedReceiver<prerender::mojom::PrerenderMessages> 37 receiver); 38 39 mojo::AssociatedReceiverSet<prerender::mojom::PrerenderMessages> receivers_; 40 }; 41 42 } // namespace prerender 43 44 #endif // COMPONENTS_NO_STATE_PREFETCH_RENDERER_PRERENDER_RENDER_FRAME_OBSERVER_H_