// Copyright (c) 2017 The Chromium Embedded Framework Authors. All rights
// reserved. Use of this source code is governed by a BSD-style license that
// can be found in the LICENSE file.
//
// ---------------------------------------------------------------------------
//
// This file was generated by the CEF translator tool. If making changes by
// hand only do so within the body of existing method and function
// implementations. See the translator.README.txt file in the tools directory
// for more information.
//

#ifndef CEF_LIBCEF_DLL_CTOCPP_BROWSER_HOST_CTOCPP_H_
#define CEF_LIBCEF_DLL_CTOCPP_BROWSER_HOST_CTOCPP_H_
#pragma once

#if !defined(WRAPPING_CEF_SHARED)
#error This file can be included wrapper-side only
#endif

#include <vector>
#include "include/cef_browser.h"
#include "include/capi/cef_browser_capi.h"
#include "include/cef_client.h"
#include "include/capi/cef_client_capi.h"
#include "libcef_dll/ctocpp/ctocpp_ref_counted.h"

// Wrap a C structure with a C++ class.
// This class may be instantiated and accessed wrapper-side only.
class CefBrowserHostCToCpp
    : public CefCToCppRefCounted<CefBrowserHostCToCpp, CefBrowserHost,
        cef_browser_host_t> {
 public:
  CefBrowserHostCToCpp();

  // CefBrowserHost methods.
  CefRefPtr<CefBrowser> GetBrowser() OVERRIDE;
  void CloseBrowser(bool force_close) OVERRIDE;
  bool TryCloseBrowser() OVERRIDE;
  void SetFocus(bool focus) OVERRIDE;
  CefWindowHandle GetWindowHandle() OVERRIDE;
  CefWindowHandle GetOpenerWindowHandle() OVERRIDE;
  bool HasView() OVERRIDE;
  CefRefPtr<CefClient> GetClient() OVERRIDE;
  CefRefPtr<CefRequestContext> GetRequestContext() OVERRIDE;
  double GetZoomLevel() OVERRIDE;
  void SetZoomLevel(double zoomLevel) OVERRIDE;
  void RunFileDialog(FileDialogMode mode, const CefString& title,
      const CefString& default_file_path,
      const std::vector<CefString>& accept_filters, int selected_accept_filter,
      CefRefPtr<CefRunFileDialogCallback> callback) OVERRIDE;
  void StartDownload(const CefString& url) OVERRIDE;
  void DownloadImage(const CefString& image_url, bool is_favicon,
      uint32 max_image_size, bool bypass_cache,
      CefRefPtr<CefDownloadImageCallback> callback) OVERRIDE;
  void Print() OVERRIDE;
  void PrintToPDF(const CefString& path, const CefPdfPrintSettings& settings,
      CefRefPtr<CefPdfPrintCallback> callback) OVERRIDE;
  void Find(int identifier, const CefString& searchText, bool forward,
      bool matchCase, bool findNext) OVERRIDE;
  void StopFinding(bool clearSelection) OVERRIDE;
  void ShowDevTools(const CefWindowInfo& windowInfo,
      CefRefPtr<CefClient> client, const CefBrowserSettings& settings,
      const CefPoint& inspect_element_at) OVERRIDE;
  void CloseDevTools() OVERRIDE;
  bool HasDevTools() OVERRIDE;
  void GetNavigationEntries(CefRefPtr<CefNavigationEntryVisitor> visitor,
      bool current_only) OVERRIDE;
  void SetMouseCursorChangeDisabled(bool disabled) OVERRIDE;
  bool IsMouseCursorChangeDisabled() OVERRIDE;
  void ReplaceMisspelling(const CefString& word) OVERRIDE;
  void AddWordToDictionary(const CefString& word) OVERRIDE;
  bool IsWindowRenderingDisabled() OVERRIDE;
  void WasResized() OVERRIDE;
  void WasHidden(bool hidden) OVERRIDE;
  void NotifyScreenInfoChanged() OVERRIDE;
  void Invalidate(PaintElementType type) OVERRIDE;
  void SendKeyEvent(const CefKeyEvent& event) OVERRIDE;
  void SendMouseClickEvent(const CefMouseEvent& event, MouseButtonType type,
      bool mouseUp, int clickCount) OVERRIDE;
  void SendMouseMoveEvent(const CefMouseEvent& event, bool mouseLeave) OVERRIDE;
  void SendMouseWheelEvent(const CefMouseEvent& event, int deltaX,
      int deltaY) OVERRIDE;
  void SendFocusEvent(bool setFocus) OVERRIDE;
  void SendCaptureLostEvent() OVERRIDE;
  void NotifyMoveOrResizeStarted() OVERRIDE;
  int GetWindowlessFrameRate() OVERRIDE;
  void SetWindowlessFrameRate(int frame_rate) OVERRIDE;
  void ImeSetComposition(const CefString& text,
      const std::vector<CefCompositionUnderline>& underlines,
      const CefRange& replacement_range,
      const CefRange& selection_range) OVERRIDE;
  void ImeCommitText(const CefString& text, const CefRange& replacement_range,
      int relative_cursor_pos) OVERRIDE;
  void ImeFinishComposingText(bool keep_selection) OVERRIDE;
  void ImeCancelComposition() OVERRIDE;
  void DragTargetDragEnter(CefRefPtr<CefDragData> drag_data,
      const CefMouseEvent& event, DragOperationsMask allowed_ops) OVERRIDE;
  void DragTargetDragOver(const CefMouseEvent& event,
      DragOperationsMask allowed_ops) OVERRIDE;
  void DragTargetDragLeave() OVERRIDE;
  void DragTargetDrop(const CefMouseEvent& event) OVERRIDE;
  void DragSourceEndedAt(int x, int y, DragOperationsMask op) OVERRIDE;
  void DragSourceSystemDragEnded() OVERRIDE;
  CefRefPtr<CefNavigationEntry> GetVisibleNavigationEntry() OVERRIDE;
};

#endif  // CEF_LIBCEF_DLL_CTOCPP_BROWSER_HOST_CTOCPP_H_
