Update OSR code

This commit is contained in:
Heilig Benedek 2018-05-15 03:59:22 +02:00 committed by Samuel Attard
parent 91d16c9b3a
commit 65b8dd48d8
12 changed files with 187 additions and 182 deletions

View file

@ -784,9 +784,8 @@ content::JavaScriptDialogManager* WebContents::GetJavaScriptDialogManager(
return dialog_manager_.get();
}
void WebContents::ResizeDueToAutoResize(
content::WebContents* web_contents,
const gfx::Size& new_size) {
void WebContents::ResizeDueToAutoResize(content::WebContents* web_contents,
const gfx::Size& new_size) {
if (IsGuest()) {
guest_delegate_->ResizeDueToAutoResize(new_size);
}
@ -1613,7 +1612,13 @@ void WebContents::SendInputEvent(v8::Isolate* isolate,
if (blink::WebInputEvent::IsMouseEventType(type)) {
blink::WebMouseEvent mouse_event;
if (mate::ConvertFromV8(isolate, input_event, &mouse_event)) {
rwh->ForwardMouseEvent(mouse_event);
if (IsOffScreen()) {
#if defined(ENABLE_OSR)
GetOffScreenRenderWidgetHostView()->SendMouseEvent(mouse_event);
#endif
} else {
rwh->ForwardMouseEvent(mouse_event);
}
return;
}
} else if (blink::WebInputEvent::IsKeyboardEventType(type)) {
@ -1627,7 +1632,14 @@ void WebContents::SendInputEvent(v8::Isolate* isolate,
} else if (type == blink::WebInputEvent::kMouseWheel) {
blink::WebMouseWheelEvent mouse_wheel_event;
if (mate::ConvertFromV8(isolate, input_event, &mouse_wheel_event)) {
rwh->ForwardWheelEvent(mouse_wheel_event);
if (IsOffScreen()) {
#if defined(ENABLE_OSR)
GetOffScreenRenderWidgetHostView()->SendMouseWheelEvent(
mouse_wheel_event);
#endif
} else {
rwh->ForwardWheelEvent(mouse_wheel_event);
}
return;
}
}
@ -1823,8 +1835,7 @@ int WebContents::GetFrameRate() const {
void WebContents::Invalidate() {
if (IsOffScreen()) {
#if defined(ENABLE_OSR)
auto* osr_rwhv = static_cast<OffScreenRenderWidgetHostView*>(
web_contents()->GetRenderWidgetHostView());
auto* osr_rwhv = GetOffScreenRenderWidgetHostView();
if (osr_rwhv)
osr_rwhv->Invalidate();
#endif

View file

@ -51,6 +51,7 @@ class FrameSubscriber;
#if defined(ENABLE_OSR)
class OffScreenWebContentsView;
class OffScreenRenderWidgetHostView;
#endif
namespace api {
@ -402,6 +403,7 @@ class WebContents : public mate::TrackableObject<WebContents>,
#if defined(ENABLE_OSR)
OffScreenWebContentsView* GetOffScreenWebContentsView() const;
OffScreenRenderWidgetHostView* GetOffScreenRenderWidgetHostView() const;
#endif
// Called when we receive a CursorChange message from chromium.

View file

@ -4,6 +4,7 @@
#include "atom/browser/api/atom_api_web_contents.h"
#include "atom/browser/osr/osr_render_widget_host_view.h"
#include "atom/browser/osr/osr_web_contents_view.h"
#include "content/browser/web_contents/web_contents_impl.h"
@ -21,6 +22,12 @@ OffScreenWebContentsView* WebContents::GetOffScreenWebContentsView() const {
return static_cast<OffScreenWebContentsView*>(impl->GetView());
}
OffScreenRenderWidgetHostView* WebContents::GetOffScreenRenderWidgetHostView()
const {
return static_cast<OffScreenRenderWidgetHostView*>(
web_contents()->GetRenderWidgetHostView());
}
} // namespace api
} // namespace atom