electron/shell/browser/osr/osr_web_contents_view.h

113 lines
3.7 KiB
C
Raw Normal View History

2016-07-30 19:35:14 +00:00
// Copyright (c) 2016 GitHub, Inc.
2016-07-20 09:30:06 +00:00
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
2019-06-19 20:56:58 +00:00
#ifndef SHELL_BROWSER_OSR_OSR_WEB_CONTENTS_VIEW_H_
#define SHELL_BROWSER_OSR_OSR_WEB_CONTENTS_VIEW_H_
2016-07-20 09:30:06 +00:00
#include "shell/browser/native_window.h"
#include "shell/browser/native_window_observer.h"
#include "content/browser/renderer_host/render_view_host_delegate_view.h" // nogncheck
#include "content/browser/web_contents/web_contents_view.h" // nogncheck
2016-07-27 12:36:22 +00:00
#include "content/public/browser/web_contents.h"
#include "shell/browser/osr/osr_render_widget_host_view.h"
2016-07-20 09:30:06 +00:00
2016-08-04 06:34:29 +00:00
#if defined(OS_MACOSX)
#ifdef __OBJC__
@class OffScreenView;
#else
class OffScreenView;
#endif
#endif
namespace electron {
2016-07-20 09:30:06 +00:00
class OffScreenWebContentsView : public content::WebContentsView,
public content::RenderViewHostDelegateView,
public NativeWindowObserver {
2016-07-31 10:19:56 +00:00
public:
OffScreenWebContentsView(bool transparent, const OnPaintCallback& callback);
2018-05-04 06:45:12 +00:00
~OffScreenWebContentsView() override;
2016-07-29 12:50:27 +00:00
2016-07-27 12:36:22 +00:00
void SetWebContents(content::WebContents*);
void SetNativeWindow(NativeWindow* window);
// NativeWindowObserver:
void OnWindowResize() override;
void OnWindowClosed() override;
gfx::Size GetSize();
2016-07-20 09:30:06 +00:00
// content::WebContentsView:
2016-07-20 09:30:06 +00:00
gfx::NativeView GetNativeView() const override;
gfx::NativeView GetContentNativeView() const override;
gfx::NativeWindow GetTopLevelNativeWindow() const override;
void GetContainerBounds(gfx::Rect* out) const override;
void SizeContents(const gfx::Size& size) override;
void Focus() override;
void SetInitialFocus() override;
void StoreFocus() override;
void RestoreFocus() override;
2018-05-15 01:59:22 +00:00
void FocusThroughTabTraversal(bool reverse) override;
2016-07-20 09:30:06 +00:00
content::DropData* GetDropData() const override;
gfx::Rect GetViewBounds() const override;
2018-04-18 01:44:10 +00:00
void CreateView(const gfx::Size& initial_size,
gfx::NativeView context) override;
2016-07-20 09:30:06 +00:00
content::RenderWidgetHostViewBase* CreateViewForWidget(
content::RenderWidgetHost* render_widget_host,
bool is_guest_view_hack) override;
content::RenderWidgetHostViewBase* CreateViewForChildWidget(
2016-07-20 09:30:06 +00:00
content::RenderWidgetHost* render_widget_host) override;
void SetPageTitle(const base::string16& title) override;
void RenderViewCreated(content::RenderViewHost* host) override;
void RenderViewReady() override;
void RenderViewHostChanged(content::RenderViewHost* old_host,
content::RenderViewHost* new_host) override;
2016-07-20 09:30:06 +00:00
void SetOverscrollControllerEnabled(bool enabled) override;
#if defined(OS_MACOSX)
bool CloseTabAfterEventTrackingIfNeeded() override;
2016-07-20 09:30:06 +00:00
#endif
2016-07-29 22:51:19 +00:00
// content::RenderViewHostDelegateView
2017-01-24 05:06:48 +00:00
void StartDragging(const content::DropData& drop_data,
blink::WebDragOperationsMask allowed_ops,
const gfx::ImageSkia& image,
const gfx::Vector2d& image_offset,
const content::DragEventSourceInfo& event_info,
content::RenderWidgetHostImpl* source_rwh) override;
void UpdateDragCursor(blink::WebDragOperation operation) override;
void SetPainting(bool painting);
bool IsPainting() const;
void SetFrameRate(int frame_rate);
int GetFrameRate() const;
2016-07-31 10:19:56 +00:00
private:
2016-08-04 06:34:29 +00:00
#if defined(OS_MACOSX)
void PlatformCreate();
void PlatformDestroy();
#endif
OffScreenRenderWidgetHostView* GetView() const;
NativeWindow* native_window_;
2016-08-01 11:27:39 +00:00
const bool transparent_;
bool painting_ = true;
int frame_rate_ = 60;
OnPaintCallback callback_;
2016-08-01 11:27:39 +00:00
2016-08-03 04:46:34 +00:00
// Weak refs.
content::WebContents* web_contents_ = nullptr;
2016-08-04 06:34:29 +00:00
#if defined(OS_MACOSX)
OffScreenView* offScreenView_;
#endif
2016-07-20 09:30:06 +00:00
};
2016-07-20 09:32:59 +00:00
} // namespace electron
2016-07-20 09:30:06 +00:00
2019-06-19 20:56:58 +00:00
#endif // SHELL_BROWSER_OSR_OSR_WEB_CONTENTS_VIEW_H_