url_rewrite_rules_provider.h 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. // Copyright 2021 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. #ifndef CHROMECAST_RENDERER_URL_REWRITE_RULES_PROVIDER_H_
  5. #define CHROMECAST_RENDERER_URL_REWRITE_RULES_PROVIDER_H_
  6. #include "base/callback.h"
  7. #include "components/url_rewrite/renderer/url_request_rules_receiver.h"
  8. #include "content/public/renderer/render_frame_observer.h"
  9. namespace content {
  10. class RenderFrame;
  11. } // namespace content
  12. namespace chromecast {
  13. // This class provides URL request rewrite rules by binding a
  14. // UrlRequestRulesReceiver mojo interface and listening for updates from
  15. // browser. The lifespan of provider and rules is tied to a RenderFrame. Owned
  16. // by CastRuntimeContentRendererClient, this object will be destroyed on
  17. // RenderFrame destruction, triggering the destruction of all of the objects it
  18. // exposes.
  19. class UrlRewriteRulesProvider final : public content::RenderFrameObserver {
  20. public:
  21. // |on_render_frame_deleted_callback| must delete |this|.
  22. UrlRewriteRulesProvider(
  23. content::RenderFrame* render_frame,
  24. base::OnceCallback<void(int)> on_render_frame_deleted_callback);
  25. ~UrlRewriteRulesProvider() override;
  26. UrlRewriteRulesProvider(const UrlRewriteRulesProvider&) = delete;
  27. UrlRewriteRulesProvider& operator=(const UrlRewriteRulesProvider&) = delete;
  28. const scoped_refptr<url_rewrite::UrlRequestRewriteRules>& GetCachedRules()
  29. const;
  30. private:
  31. // content::RenderFrameObserver implementation.
  32. void OnDestruct() override;
  33. url_rewrite::UrlRequestRulesReceiver url_request_rules_receiver_;
  34. base::OnceCallback<void(int)> on_render_frame_deleted_callback_;
  35. };
  36. } // namespace chromecast
  37. #endif // CHROMECAST_RENDERER_URL_REWRITE_RULES_PROVIDER_H_