guest_view_message_handler.h 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. // Copyright 2022 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 COMPONENTS_GUEST_VIEW_BROWSER_GUEST_VIEW_MESSAGE_HANDLER_H_
  5. #define COMPONENTS_GUEST_VIEW_BROWSER_GUEST_VIEW_MESSAGE_HANDLER_H_
  6. #include <stddef.h>
  7. #include <stdint.h>
  8. #include <string>
  9. #include "base/values.h"
  10. #include "components/guest_view/common/guest_view.mojom.h"
  11. namespace content {
  12. class BrowserContext;
  13. }
  14. namespace guest_view {
  15. class GuestViewManager;
  16. class GuestViewManagerDelegate;
  17. class GuestViewMessageHandler : public mojom::GuestViewHost {
  18. public:
  19. GuestViewMessageHandler(const GuestViewMessageHandler&) = delete;
  20. GuestViewMessageHandler& operator=(const GuestViewMessageHandler&) = delete;
  21. ~GuestViewMessageHandler() override;
  22. protected:
  23. explicit GuestViewMessageHandler(int render_process_id);
  24. int render_process_id() const { return render_process_id_; }
  25. private:
  26. // Returns the GuestViewManager for the BrowserContext of our associated
  27. // render process if one already exists, otherwise creates and returns one.
  28. GuestViewManager* GetOrCreateGuestViewManager();
  29. // Returns the GuestViewManager for the BrowserContext of our associated
  30. // render process if it exists. Callers consider the renderer to be
  31. // misbehaving if we don't have a GuestViewManager at this point, in which
  32. // case we kill the renderer and return nullptr.
  33. GuestViewManager* GetGuestViewManagerOrKill();
  34. virtual std::unique_ptr<GuestViewManagerDelegate>
  35. CreateGuestViewManagerDelegate(content::BrowserContext* context) const;
  36. content::BrowserContext* GetBrowserContext() const;
  37. // mojom::GuestViewHost
  38. void AttachToEmbedderFrame(int embedder_local_render_frame_id,
  39. int element_instance_id,
  40. int guest_instance_id,
  41. base::Value::Dict params,
  42. AttachToEmbedderFrameCallback callback) override;
  43. void ViewCreated(int view_instance_id, const std::string& view_type) override;
  44. void ViewGarbageCollected(int view_instance_id) override;
  45. const int render_process_id_;
  46. };
  47. } // namespace guest_view
  48. #endif // COMPONENTS_GUEST_VIEW_BROWSER_GUEST_VIEW_MESSAGE_HANDLER_H_