electron/atom/browser/osr/osr_web_contents_view.h

93 lines
3 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.
#ifndef ATOM_BROWSER_OSR_OSR_WEB_CONTENTS_VIEW_H_
#define ATOM_BROWSER_OSR_OSR_WEB_CONTENTS_VIEW_H_
2016-07-20 09:30:06 +00:00
#include "atom/browser/osr/osr_render_widget_host_view.h"
#include "content/browser/renderer_host/render_view_host_delegate_view.h"
2016-07-20 09:30:06 +00:00
#include "content/browser/web_contents/web_contents_view.h"
2016-07-27 12:36:22 +00:00
#include "content/public/browser/web_contents.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
2016-07-20 09:30:06 +00:00
namespace atom {
class OffScreenWebContentsView : public content::WebContentsView,
public content::RenderViewHostDelegateView {
2016-07-31 10:19:56 +00:00
public:
OffScreenWebContentsView(bool transparent, const OnPaintCallback& callback);
2016-07-20 09:30:06 +00:00
~OffScreenWebContentsView();
2016-07-29 12:50:27 +00:00
2016-07-27 12:36:22 +00:00
void SetWebContents(content::WebContents*);
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;
content::DropData* GetDropData() const override;
gfx::Rect GetViewBounds() const override;
void CreateView(
const gfx::Size& initial_size, gfx::NativeView context) override;
content::RenderWidgetHostViewBase* CreateViewForWidget(
content::RenderWidgetHost* render_widget_host,
bool is_guest_view_hack) override;
content::RenderWidgetHostViewBase* CreateViewForPopupWidget(
content::RenderWidgetHost* render_widget_host) override;
void SetPageTitle(const base::string16& title) override;
void RenderViewCreated(content::RenderViewHost* host) override;
void RenderViewSwappedIn(content::RenderViewHost* host) override;
void SetOverscrollControllerEnabled(bool enabled) override;
2016-11-30 07:30:03 +00:00
void GetScreenInfo(blink::WebScreenInfo* web_screen_info) const override;
2016-07-20 09:30:06 +00:00
#if defined(OS_MACOSX)
void SetAllowOtherViews(bool allow) override;
bool GetAllowOtherViews() const override;
bool IsEventTracking() const override;
void CloseTabAfterEventTracking() override;
#endif
2016-07-29 22:51:19 +00:00
// content::RenderViewHostDelegateView
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) override;
void UpdateDragCursor(blink::WebDragOperation operation) override;
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
2016-08-01 11:27:39 +00:00
const bool transparent_;
OnPaintCallback callback_;
2016-08-01 11:27:39 +00:00
2016-08-03 04:46:34 +00:00
// Weak refs.
2016-08-01 11:27:39 +00:00
OffScreenRenderWidgetHostView* view_;
2016-07-27 12:36:22 +00:00
content::WebContents* web_contents_;
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
2016-07-20 09:30:06 +00:00
} // namespace atom
#endif // ATOM_BROWSER_OSR_OSR_WEB_CONTENTS_VIEW_H_