spellcheck_panel.h 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. // Copyright 2017 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_SPELLCHECK_RENDERER_SPELLCHECK_PANEL_H_
  5. #define COMPONENTS_SPELLCHECK_RENDERER_SPELLCHECK_PANEL_H_
  6. #include "components/spellcheck/common/spellcheck_panel.mojom.h"
  7. #include "components/spellcheck/spellcheck_buildflags.h"
  8. #include "content/public/renderer/render_frame_observer.h"
  9. #include "mojo/public/cpp/bindings/pending_receiver.h"
  10. #include "mojo/public/cpp/bindings/receiver_set.h"
  11. #include "mojo/public/cpp/bindings/remote.h"
  12. #include "services/service_manager/public/cpp/binder_registry.h"
  13. #include "third_party/blink/public/platform/web_spell_check_panel_host_client.h"
  14. #if !BUILDFLAG(HAS_SPELLCHECK_PANEL)
  15. #error "Spellcheck panel should be enabled."
  16. #endif
  17. namespace service_manager {
  18. class LocalInterfaceProvider;
  19. }
  20. class SpellCheckPanel : public content::RenderFrameObserver,
  21. public blink::WebSpellCheckPanelHostClient,
  22. public spellcheck::mojom::SpellCheckPanel {
  23. public:
  24. SpellCheckPanel(content::RenderFrame* render_frame,
  25. service_manager::BinderRegistry* registry,
  26. service_manager::LocalInterfaceProvider* embedder_provider);
  27. SpellCheckPanel(const SpellCheckPanel&) = delete;
  28. SpellCheckPanel& operator=(const SpellCheckPanel&) = delete;
  29. ~SpellCheckPanel() override;
  30. private:
  31. // content::RenderFrameObserver:
  32. void OnDestruct() override;
  33. // blink::WebSpellCheckPanelHostClient:
  34. bool IsShowingSpellingUI() override;
  35. void ShowSpellingUI(bool show) override;
  36. void UpdateSpellingUIWithMisspelledWord(
  37. const blink::WebString& word) override;
  38. // Binds browser receivers for the frame SpellCheckPanel interface.
  39. void SpellCheckPanelReceiver(
  40. mojo::PendingReceiver<spellcheck::mojom::SpellCheckPanel> receiver);
  41. // spellcheck::mojom::SpellCheckPanel:
  42. void ToggleSpellPanel(bool visible) override;
  43. void AdvanceToNextMisspelling() override;
  44. mojo::Remote<spellcheck::mojom::SpellCheckPanelHost> GetSpellCheckPanelHost();
  45. // SpellCheckPanel receivers.
  46. mojo::ReceiverSet<spellcheck::mojom::SpellCheckPanel> receivers_;
  47. // True if the browser is showing the spelling panel.
  48. bool spelling_panel_visible_;
  49. service_manager::LocalInterfaceProvider* embedder_provider_;
  50. };
  51. #endif // COMPONENTS_SPELLCHECK_RENDERER_SPELLCHECK_PANEL_H_