| 
									
										
										
										
											2016-07-30 21:35:14 +02:00
										 |  |  | // Copyright (c) 2016 GitHub, Inc.
 | 
					
						
							| 
									
										
										
										
											2016-07-20 11:30:06 +02:00
										 |  |  | // Use of this source code is governed by the MIT license that can be
 | 
					
						
							|  |  |  | // found in the LICENSE file.
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-03 11:01:35 +09:00
										 |  |  | #ifndef ATOM_BROWSER_OSR_OSR_WEB_CONTENTS_VIEW_H_
 | 
					
						
							|  |  |  | #define ATOM_BROWSER_OSR_OSR_WEB_CONTENTS_VIEW_H_
 | 
					
						
							| 
									
										
										
										
											2016-07-20 11:30:06 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-03 11:01:35 +09:00
										 |  |  | #include "atom/browser/osr/osr_render_widget_host_view.h"
 | 
					
						
							| 
									
										
										
										
											2016-07-25 15:55:00 +02:00
										 |  |  | #include "content/browser/renderer_host/render_view_host_delegate_view.h"
 | 
					
						
							| 
									
										
										
										
											2016-07-20 11:30:06 +02:00
										 |  |  | #include "content/browser/web_contents/web_contents_view.h"
 | 
					
						
							| 
									
										
										
										
											2016-07-27 14:36:22 +02:00
										 |  |  | #include "content/public/browser/web_contents.h"
 | 
					
						
							| 
									
										
										
										
											2016-07-20 11:30:06 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-04 15:34:29 +09:00
										 |  |  | #if defined(OS_MACOSX)
 | 
					
						
							|  |  |  | #ifdef __OBJC__
 | 
					
						
							|  |  |  | @class OffScreenView; | 
					
						
							|  |  |  | #else
 | 
					
						
							|  |  |  | class OffScreenView; | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-07-20 11:30:06 +02:00
										 |  |  | namespace atom { | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-07-25 15:55:00 +02:00
										 |  |  | class OffScreenWebContentsView : public content::WebContentsView, | 
					
						
							|  |  |  |                                  public content::RenderViewHostDelegateView { | 
					
						
							| 
									
										
										
										
											2016-07-31 12:19:56 +02:00
										 |  |  |  public: | 
					
						
							| 
									
										
										
										
											2016-08-04 13:03:24 +09:00
										 |  |  |   OffScreenWebContentsView(bool transparent, const OnPaintCallback& callback); | 
					
						
							| 
									
										
										
										
											2016-07-20 11:30:06 +02:00
										 |  |  |   ~OffScreenWebContentsView(); | 
					
						
							| 
									
										
										
										
											2016-07-29 14:50:27 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-07-27 14:36:22 +02:00
										 |  |  |   void SetWebContents(content::WebContents*); | 
					
						
							| 
									
										
										
										
											2016-07-20 11:30:06 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-04 13:03:24 +09:00
										 |  |  |   // content::WebContentsView:
 | 
					
						
							| 
									
										
										
										
											2016-07-20 11:30:06 +02: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; | 
					
						
							| 
									
										
										
										
											2017-01-24 14:06:48 +09:00
										 |  |  |   void GetScreenInfo(content::ScreenInfo* screen_info) const override; | 
					
						
							| 
									
										
										
										
											2016-07-20 11:30:06 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | #if defined(OS_MACOSX)
 | 
					
						
							|  |  |  |   void SetAllowOtherViews(bool allow) override; | 
					
						
							|  |  |  |   bool GetAllowOtherViews() const override; | 
					
						
							|  |  |  |   bool IsEventTracking() const override; | 
					
						
							|  |  |  |   void CloseTabAfterEventTracking() override; | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-07-30 00:51:19 +02:00
										 |  |  |   // content::RenderViewHostDelegateView
 | 
					
						
							| 
									
										
										
										
											2017-01-24 14:06:48 +09: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; | 
					
						
							| 
									
										
										
										
											2016-07-25 15:55:00 +02:00
										 |  |  |   void UpdateDragCursor(blink::WebDragOperation operation) override; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-07-31 12:19:56 +02:00
										 |  |  |  private: | 
					
						
							| 
									
										
										
										
											2016-08-04 15:34:29 +09:00
										 |  |  | #if defined(OS_MACOSX)
 | 
					
						
							|  |  |  |   void PlatformCreate(); | 
					
						
							|  |  |  |   void PlatformDestroy(); | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-04 03:09:16 +01:00
										 |  |  |   OffScreenRenderWidgetHostView* GetView() const; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-01 13:27:39 +02:00
										 |  |  |   const bool transparent_; | 
					
						
							| 
									
										
										
										
											2016-08-04 13:03:24 +09:00
										 |  |  |   OnPaintCallback callback_; | 
					
						
							| 
									
										
										
										
											2016-08-01 13:27:39 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-03 13:46:34 +09:00
										 |  |  |   // Weak refs.
 | 
					
						
							| 
									
										
										
										
											2016-07-27 14:36:22 +02:00
										 |  |  |   content::WebContents* web_contents_; | 
					
						
							| 
									
										
										
										
											2016-08-04 15:34:29 +09:00
										 |  |  | 
 | 
					
						
							|  |  |  | #if defined(OS_MACOSX)
 | 
					
						
							|  |  |  |   OffScreenView* offScreenView_; | 
					
						
							|  |  |  | #endif
 | 
					
						
							| 
									
										
										
										
											2016-07-20 11:30:06 +02:00
										 |  |  | }; | 
					
						
							| 
									
										
										
										
											2016-07-20 11:32:59 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-07-20 11:30:06 +02:00
										 |  |  | }  // namespace atom
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-03 11:01:35 +09:00
										 |  |  | #endif  // ATOM_BROWSER_OSR_OSR_WEB_CONTENTS_VIEW_H_
 |