| 
									
										
										
										
											2014-10-31 11:17:05 -07:00
										 |  |  | // Copyright (c) 2013 GitHub, Inc.
 | 
					
						
							| 
									
										
										
										
											2014-04-25 17:49:37 +08:00
										 |  |  | // Use of this source code is governed by the MIT license that can be
 | 
					
						
							| 
									
										
										
										
											2013-04-14 15:36:48 +08:00
										 |  |  | // found in the LICENSE file.
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-04-15 23:01:12 +08:00
										 |  |  | #ifndef ATOM_BROWSER_API_ATOM_API_WINDOW_H_
 | 
					
						
							|  |  |  | #define ATOM_BROWSER_API_ATOM_API_WINDOW_H_
 | 
					
						
							| 
									
										
										
										
											2013-04-14 15:36:48 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-10-27 14:00:08 +02:00
										 |  |  | #include <map>
 | 
					
						
							| 
									
										
										
										
											2016-06-17 16:57:03 +09:00
										 |  |  | #include <memory>
 | 
					
						
							| 
									
										
										
										
											2014-03-16 09:13:06 +08:00
										 |  |  | #include <string>
 | 
					
						
							| 
									
										
										
										
											2013-11-22 14:23:19 +08:00
										 |  |  | #include <vector>
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-06-24 16:37:48 +08:00
										 |  |  | #include "atom/browser/api/trackable_object.h"
 | 
					
						
							| 
									
										
										
										
											2015-08-05 22:26:18 +08:00
										 |  |  | #include "atom/browser/native_window.h"
 | 
					
						
							| 
									
										
										
										
											2014-03-16 08:30:26 +08:00
										 |  |  | #include "atom/browser/native_window_observer.h"
 | 
					
						
							| 
									
										
										
										
											2016-05-20 22:22:15 +09:00
										 |  |  | #include "atom/common/api/atom_api_native_image.h"
 | 
					
						
							| 
									
										
										
										
											2016-06-17 16:57:03 +09:00
										 |  |  | #include "atom/common/key_weak_map.h"
 | 
					
						
							| 
									
										
										
										
											2014-04-24 16:45:25 +08:00
										 |  |  | #include "native_mate/handle.h"
 | 
					
						
							| 
									
										
										
										
											2016-08-26 15:30:02 -07:00
										 |  |  | #include "ui/gfx/image/image.h"
 | 
					
						
							| 
									
										
										
										
											2014-04-22 23:07:21 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | class GURL; | 
					
						
							| 
									
										
										
										
											2013-04-16 00:25:08 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-05-01 16:20:53 +05:30
										 |  |  | namespace gfx { | 
					
						
							|  |  |  | class Rect; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-04-22 23:07:21 +08:00
										 |  |  | namespace mate { | 
					
						
							|  |  |  | class Arguments; | 
					
						
							|  |  |  | class Dictionary; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-04-14 15:36:48 +08:00
										 |  |  | namespace atom { | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-04-16 00:25:08 +08:00
										 |  |  | class NativeWindow; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | namespace api { | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-04-24 16:45:25 +08:00
										 |  |  | class WebContents; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-06-24 17:58:12 +08:00
										 |  |  | class Window : public mate::TrackableObject<Window>, | 
					
						
							| 
									
										
										
										
											2013-04-18 23:50:47 +08:00
										 |  |  |                public NativeWindowObserver { | 
					
						
							| 
									
										
										
										
											2013-04-16 00:25:08 +08:00
										 |  |  |  public: | 
					
						
							| 
									
										
										
										
											2016-08-02 15:15:40 +09:00
										 |  |  |   static mate::WrappableBase* New(mate::Arguments* args); | 
					
						
							| 
									
										
										
										
											2013-04-16 00:25:08 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-04-22 23:07:21 +08:00
										 |  |  |   static void BuildPrototype(v8::Isolate* isolate, | 
					
						
							| 
									
										
										
										
											2016-08-02 18:08:12 +09:00
										 |  |  |                              v8::Local<v8::FunctionTemplate> prototype); | 
					
						
							| 
									
										
										
										
											2013-04-16 00:25:08 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-10-01 13:45:59 +08:00
										 |  |  |   // Returns the BrowserWindow object from |native_window|.
 | 
					
						
							|  |  |  |   static v8::Local<v8::Value> From(v8::Isolate* isolate, | 
					
						
							|  |  |  |                                    NativeWindow* native_window); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-04-22 23:07:21 +08:00
										 |  |  |   NativeWindow* window() const { return window_.get(); } | 
					
						
							| 
									
										
										
										
											2013-04-16 00:25:08 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |  protected: | 
					
						
							| 
									
										
										
										
											2016-08-02 15:15:40 +09:00
										 |  |  |   Window(v8::Isolate* isolate, v8::Local<v8::Object> wrapper, | 
					
						
							|  |  |  |          const mate::Dictionary& options); | 
					
						
							| 
									
										
										
										
											2016-04-25 10:17:54 +09:00
										 |  |  |   ~Window() override; | 
					
						
							| 
									
										
										
										
											2013-04-16 00:25:08 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-11-25 12:43:25 +08:00
										 |  |  |   // NativeWindowObserver:
 | 
					
						
							| 
									
										
										
										
											2014-10-27 16:58:35 +08:00
										 |  |  |   void WillCloseWindow(bool* prevent_default) override; | 
					
						
							| 
									
										
										
										
											2016-08-25 11:24:16 -07:00
										 |  |  |   void WillDestroyNativeObject() override; | 
					
						
							| 
									
										
										
										
											2014-10-27 16:58:35 +08:00
										 |  |  |   void OnWindowClosed() override; | 
					
						
							|  |  |  |   void OnWindowBlur() override; | 
					
						
							|  |  |  |   void OnWindowFocus() override; | 
					
						
							| 
									
										
										
										
											2016-03-08 09:36:41 -08:00
										 |  |  |   void OnWindowShow() override; | 
					
						
							|  |  |  |   void OnWindowHide() override; | 
					
						
							| 
									
										
										
										
											2016-06-13 21:19:56 +09:00
										 |  |  |   void OnReadyToShow() override; | 
					
						
							| 
									
										
										
										
											2014-11-25 12:43:25 +08:00
										 |  |  |   void OnWindowMaximize() override; | 
					
						
							|  |  |  |   void OnWindowUnmaximize() override; | 
					
						
							|  |  |  |   void OnWindowMinimize() override; | 
					
						
							|  |  |  |   void OnWindowRestore() override; | 
					
						
							| 
									
										
										
										
											2015-05-09 21:25:10 +05:30
										 |  |  |   void OnWindowResize() override; | 
					
						
							|  |  |  |   void OnWindowMove() override; | 
					
						
							| 
									
										
										
										
											2015-05-20 14:07:13 +05:30
										 |  |  |   void OnWindowMoved() override; | 
					
						
							| 
									
										
										
										
											2016-01-21 16:31:09 -08:00
										 |  |  |   void OnWindowScrollTouchBegin() override; | 
					
						
							|  |  |  |   void OnWindowScrollTouchEnd() override; | 
					
						
							| 
									
										
										
										
											2016-09-17 22:29:32 +08:00
										 |  |  |   void OnWindowScrollTouchEdge() override; | 
					
						
							| 
									
										
										
										
											2016-03-23 15:20:11 +00:00
										 |  |  |   void OnWindowSwipe(const std::string& direction) override; | 
					
						
							| 
									
										
										
										
											2014-11-25 12:43:25 +08:00
										 |  |  |   void OnWindowEnterFullScreen() override; | 
					
						
							|  |  |  |   void OnWindowLeaveFullScreen() override; | 
					
						
							| 
									
										
										
										
											2015-05-17 02:31:30 +05:30
										 |  |  |   void OnWindowEnterHtmlFullScreen() override; | 
					
						
							|  |  |  |   void OnWindowLeaveHtmlFullScreen() override; | 
					
						
							| 
									
										
										
										
											2014-10-27 16:58:35 +08:00
										 |  |  |   void OnRendererUnresponsive() override; | 
					
						
							|  |  |  |   void OnRendererResponsive() override; | 
					
						
							| 
									
										
										
										
											2015-06-25 15:09:25 -06:00
										 |  |  |   void OnExecuteWindowsCommand(const std::string& command_name) override; | 
					
						
							| 
									
										
										
										
											2013-04-18 23:50:47 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-10-27 03:12:01 +02:00
										 |  |  |   #if defined(OS_WIN)
 | 
					
						
							| 
									
										
										
										
											2015-10-29 10:53:48 +08:00
										 |  |  |   void OnWindowMessage(UINT message, WPARAM w_param, LPARAM l_param) override; | 
					
						
							| 
									
										
										
										
											2015-10-27 03:12:01 +02:00
										 |  |  |   #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-04-16 00:25:08 +08:00
										 |  |  |  private: | 
					
						
							| 
									
										
										
										
											2016-08-15 20:58:07 -03:00
										 |  |  |   void Init(v8::Isolate* isolate, | 
					
						
							|  |  |  |             v8::Local<v8::Object> wrapper, | 
					
						
							|  |  |  |             const mate::Dictionary& options, | 
					
						
							|  |  |  |             mate::Handle<class WebContents> web_contents); | 
					
						
							| 
									
										
										
										
											2013-04-17 22:49:49 +08:00
										 |  |  |   // APIs for NativeWindow.
 | 
					
						
							| 
									
										
										
										
											2014-04-22 23:07:21 +08:00
										 |  |  |   void Close(); | 
					
						
							|  |  |  |   void Focus(); | 
					
						
							| 
									
										
										
										
											2016-03-10 21:45:51 -08:00
										 |  |  |   void Blur(); | 
					
						
							| 
									
										
										
										
											2014-04-22 23:07:21 +08:00
										 |  |  |   bool IsFocused(); | 
					
						
							|  |  |  |   void Show(); | 
					
						
							| 
									
										
										
										
											2014-10-17 22:51:20 +08:00
										 |  |  |   void ShowInactive(); | 
					
						
							| 
									
										
										
										
											2014-04-22 23:07:21 +08:00
										 |  |  |   void Hide(); | 
					
						
							|  |  |  |   bool IsVisible(); | 
					
						
							| 
									
										
										
										
											2016-06-17 17:38:44 +09:00
										 |  |  |   bool IsEnabled(); | 
					
						
							| 
									
										
										
										
											2014-04-22 23:07:21 +08:00
										 |  |  |   void Maximize(); | 
					
						
							|  |  |  |   void Unmaximize(); | 
					
						
							| 
									
										
										
										
											2014-05-14 23:58:49 +02:00
										 |  |  |   bool IsMaximized(); | 
					
						
							| 
									
										
										
										
											2014-04-22 23:07:21 +08:00
										 |  |  |   void Minimize(); | 
					
						
							|  |  |  |   void Restore(); | 
					
						
							| 
									
										
										
										
											2014-07-26 13:58:26 +08:00
										 |  |  |   bool IsMinimized(); | 
					
						
							| 
									
										
										
										
											2014-11-25 14:34:14 +08:00
										 |  |  |   void SetFullScreen(bool fullscreen); | 
					
						
							| 
									
										
										
										
											2014-04-22 23:07:21 +08:00
										 |  |  |   bool IsFullscreen(); | 
					
						
							| 
									
										
										
										
											2016-01-15 17:31:31 +01:00
										 |  |  |   void SetBounds(const gfx::Rect& bounds, mate::Arguments* args); | 
					
						
							| 
									
										
										
										
											2015-05-01 16:20:53 +05:30
										 |  |  |   gfx::Rect GetBounds(); | 
					
						
							| 
									
										
										
										
											2016-01-15 17:31:31 +01:00
										 |  |  |   void SetSize(int width, int height, mate::Arguments* args); | 
					
						
							| 
									
										
										
										
											2014-04-22 23:07:21 +08:00
										 |  |  |   std::vector<int> GetSize(); | 
					
						
							| 
									
										
										
										
											2016-01-15 17:31:31 +01:00
										 |  |  |   void SetContentSize(int width, int height, mate::Arguments* args); | 
					
						
							| 
									
										
										
										
											2014-05-15 15:30:04 +08:00
										 |  |  |   std::vector<int> GetContentSize(); | 
					
						
							| 
									
										
										
										
											2016-08-04 12:02:24 -07:00
										 |  |  |   void SetContentBounds(const gfx::Rect& bounds, mate::Arguments* args); | 
					
						
							| 
									
										
										
										
											2016-07-28 18:19:17 -07:00
										 |  |  |   gfx::Rect GetContentBounds(); | 
					
						
							| 
									
										
										
										
											2014-04-22 23:07:21 +08:00
										 |  |  |   void SetMinimumSize(int width, int height); | 
					
						
							|  |  |  |   std::vector<int> GetMinimumSize(); | 
					
						
							|  |  |  |   void SetMaximumSize(int width, int height); | 
					
						
							|  |  |  |   std::vector<int> GetMaximumSize(); | 
					
						
							| 
									
										
										
										
											2016-05-19 20:19:08 -07:00
										 |  |  |   void SetSheetOffset(double offsetY, mate::Arguments* args); | 
					
						
							| 
									
										
										
										
											2014-04-22 23:07:21 +08:00
										 |  |  |   void SetResizable(bool resizable); | 
					
						
							|  |  |  |   bool IsResizable(); | 
					
						
							| 
									
										
										
										
											2016-01-18 23:46:35 +01:00
										 |  |  |   void SetMovable(bool movable); | 
					
						
							|  |  |  |   bool IsMovable(); | 
					
						
							|  |  |  |   void SetMinimizable(bool minimizable); | 
					
						
							|  |  |  |   bool IsMinimizable(); | 
					
						
							| 
									
										
										
										
											2016-01-22 22:24:33 +01:00
										 |  |  |   void SetMaximizable(bool maximizable); | 
					
						
							|  |  |  |   bool IsMaximizable(); | 
					
						
							| 
									
										
										
										
											2016-01-22 23:47:37 -08:00
										 |  |  |   void SetFullScreenable(bool fullscreenable); | 
					
						
							|  |  |  |   bool IsFullScreenable(); | 
					
						
							| 
									
										
										
										
											2016-01-18 23:46:35 +01:00
										 |  |  |   void SetClosable(bool closable); | 
					
						
							|  |  |  |   bool IsClosable(); | 
					
						
							| 
									
										
										
										
											2016-09-21 13:35:59 -04:00
										 |  |  |   void SetAlwaysOnTop(bool top, mate::Arguments* args); | 
					
						
							| 
									
										
										
										
											2014-04-22 23:07:21 +08:00
										 |  |  |   bool IsAlwaysOnTop(); | 
					
						
							|  |  |  |   void Center(); | 
					
						
							| 
									
										
										
										
											2016-01-15 17:31:31 +01:00
										 |  |  |   void SetPosition(int x, int y, mate::Arguments* args); | 
					
						
							| 
									
										
										
										
											2014-04-22 23:07:21 +08:00
										 |  |  |   std::vector<int> GetPosition(); | 
					
						
							|  |  |  |   void SetTitle(const std::string& title); | 
					
						
							|  |  |  |   std::string GetTitle(); | 
					
						
							|  |  |  |   void FlashFrame(bool flash); | 
					
						
							| 
									
										
										
										
											2014-06-16 10:29:51 +08:00
										 |  |  |   void SetSkipTaskbar(bool skip); | 
					
						
							| 
									
										
										
										
											2014-04-22 23:07:21 +08:00
										 |  |  |   void SetKiosk(bool kiosk); | 
					
						
							|  |  |  |   bool IsKiosk(); | 
					
						
							| 
									
										
										
										
											2015-10-23 11:35:33 +08:00
										 |  |  |   void SetBackgroundColor(const std::string& color_name); | 
					
						
							| 
									
										
										
										
											2016-01-23 01:15:49 +01:00
										 |  |  |   void SetHasShadow(bool has_shadow); | 
					
						
							|  |  |  |   bool HasShadow(); | 
					
						
							| 
									
										
										
										
											2014-04-22 23:07:21 +08:00
										 |  |  |   void FocusOnWebView(); | 
					
						
							|  |  |  |   void BlurWebView(); | 
					
						
							|  |  |  |   bool IsWebViewFocused(); | 
					
						
							| 
									
										
										
										
											2014-05-27 14:15:34 +08:00
										 |  |  |   void SetRepresentedFilename(const std::string& filename); | 
					
						
							| 
									
										
										
										
											2014-07-18 21:42:26 +08:00
										 |  |  |   std::string GetRepresentedFilename(); | 
					
						
							| 
									
										
										
										
											2014-05-27 14:15:34 +08:00
										 |  |  |   void SetDocumentEdited(bool edited); | 
					
						
							| 
									
										
										
										
											2014-07-24 15:48:33 +08:00
										 |  |  |   bool IsDocumentEdited(); | 
					
						
							| 
									
										
										
										
											2015-12-06 10:14:54 +08:00
										 |  |  |   void SetIgnoreMouseEvents(bool ignore); | 
					
						
							| 
									
										
										
										
											2016-06-22 10:40:01 +02:00
										 |  |  |   void SetContentProtection(bool enable); | 
					
						
							| 
									
										
										
										
											2016-06-13 17:10:28 +09:00
										 |  |  |   void SetFocusable(bool focusable); | 
					
						
							| 
									
										
										
										
											2016-08-08 15:44:48 -07:00
										 |  |  |   void SetProgressBar(double progress, mate::Arguments* args); | 
					
						
							| 
									
										
										
										
											2015-02-06 17:00:26 -08:00
										 |  |  |   void SetOverlayIcon(const gfx::Image& overlay, | 
					
						
							| 
									
										
										
										
											2015-02-06 16:31:41 -08:00
										 |  |  |                       const std::string& description); | 
					
						
							| 
									
										
										
										
											2015-08-06 12:44:07 +08:00
										 |  |  |   bool SetThumbarButtons(mate::Arguments* args); | 
					
						
							| 
									
										
										
										
											2015-06-24 19:51:11 +08:00
										 |  |  |   void SetMenu(v8::Isolate* isolate, v8::Local<v8::Value> menu); | 
					
						
							| 
									
										
										
										
											2014-11-12 20:31:55 +08:00
										 |  |  |   void SetAutoHideMenuBar(bool auto_hide); | 
					
						
							|  |  |  |   bool IsMenuBarAutoHide(); | 
					
						
							|  |  |  |   void SetMenuBarVisibility(bool visible); | 
					
						
							|  |  |  |   bool IsMenuBarVisible(); | 
					
						
							| 
									
										
										
										
											2015-07-23 10:14:02 +08:00
										 |  |  |   void SetAspectRatio(double aspect_ratio, mate::Arguments* args); | 
					
						
							| 
									
										
										
										
											2016-06-17 16:57:03 +09:00
										 |  |  |   void SetParentWindow(v8::Local<v8::Value> value, mate::Arguments* args); | 
					
						
							| 
									
										
										
										
											2016-06-18 09:42:18 +09:00
										 |  |  |   v8::Local<v8::Value> GetParentWindow() const; | 
					
						
							|  |  |  |   std::vector<v8::Local<v8::Object>> GetChildWindows() const; | 
					
						
							|  |  |  |   bool IsModal() const; | 
					
						
							| 
									
										
										
										
											2016-01-07 22:38:35 +02:00
										 |  |  |   v8::Local<v8::Value> GetNativeWindowHandle(); | 
					
						
							| 
									
										
										
										
											2013-04-16 00:25:08 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-10-27 14:00:08 +02:00
										 |  |  | #if defined(OS_WIN)
 | 
					
						
							| 
									
										
										
										
											2015-10-29 03:00:44 +02:00
										 |  |  |   typedef base::Callback<void(v8::Local<v8::Value>, | 
					
						
							|  |  |  |                               v8::Local<v8::Value>)> MessageCallback; | 
					
						
							| 
									
										
										
										
											2015-10-27 14:00:08 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-10-29 10:53:48 +08:00
										 |  |  |   bool HookWindowMessage(UINT message, const MessageCallback& callback); | 
					
						
							| 
									
										
										
										
											2015-10-27 14:00:08 +02:00
										 |  |  |   bool IsWindowMessageHooked(UINT message); | 
					
						
							|  |  |  |   void UnhookWindowMessage(UINT message); | 
					
						
							|  |  |  |   void UnhookAllWindowMessages(); | 
					
						
							| 
									
										
										
										
											2016-07-14 15:54:57 -07:00
										 |  |  |   bool SetThumbnailClip(const gfx::Rect& region); | 
					
						
							| 
									
										
										
										
											2016-08-07 19:23:42 +02:00
										 |  |  |   bool SetThumbnailToolTip(const std::string& tooltip); | 
					
						
							| 
									
										
										
										
											2015-10-27 14:00:08 +02:00
										 |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-05-20 22:22:15 +09:00
										 |  |  | #if defined(TOOLKIT_VIEWS)
 | 
					
						
							|  |  |  |   void SetIcon(mate::Handle<NativeImage> icon); | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-03-26 14:18:37 +08:00
										 |  |  |   void SetVisibleOnAllWorkspaces(bool visible); | 
					
						
							|  |  |  |   bool IsVisibleOnAllWorkspaces(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-06-24 16:37:48 +08:00
										 |  |  |   int32_t ID() const; | 
					
						
							| 
									
										
										
										
											2015-06-05 17:01:17 +08:00
										 |  |  |   v8::Local<v8::Value> WebContents(v8::Isolate* isolate); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-18 09:42:18 +09:00
										 |  |  |   // Remove this window from parent window's |child_windows_|.
 | 
					
						
							| 
									
										
										
										
											2016-06-17 16:57:03 +09:00
										 |  |  |   void RemoveFromParentChildWindows(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-10-29 10:53:48 +08:00
										 |  |  | #if defined(OS_WIN)
 | 
					
						
							|  |  |  |   typedef std::map<UINT, MessageCallback> MessageCallbackMap; | 
					
						
							|  |  |  |   MessageCallbackMap messages_callback_map_; | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-06-05 17:01:17 +08:00
										 |  |  |   v8::Global<v8::Value> web_contents_; | 
					
						
							| 
									
										
										
										
											2015-06-24 19:51:11 +08:00
										 |  |  |   v8::Global<v8::Value> menu_; | 
					
						
							| 
									
										
										
										
											2016-06-17 16:09:43 +09:00
										 |  |  |   v8::Global<v8::Value> parent_window_; | 
					
						
							| 
									
										
										
										
											2016-06-17 16:57:03 +09:00
										 |  |  |   KeyWeakMap<int> child_windows_; | 
					
						
							| 
									
										
										
										
											2013-04-18 15:09:53 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-06-25 11:07:23 +08:00
										 |  |  |   api::WebContents* api_web_contents_; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-05-23 10:59:39 +09:00
										 |  |  |   std::unique_ptr<NativeWindow> window_; | 
					
						
							| 
									
										
										
										
											2013-04-16 00:25:08 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |   DISALLOW_COPY_AND_ASSIGN(Window); | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | }  // namespace api
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-04-14 15:36:48 +08:00
										 |  |  | }  // namespace atom
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-04-24 13:10:04 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | namespace mate { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | template<> | 
					
						
							|  |  |  | struct Converter<atom::NativeWindow*> { | 
					
						
							| 
									
										
										
										
											2015-05-22 19:11:22 +08:00
										 |  |  |   static bool FromV8(v8::Isolate* isolate, v8::Local<v8::Value> val, | 
					
						
							| 
									
										
										
										
											2014-04-24 13:10:04 +08:00
										 |  |  |                      atom::NativeWindow** out) { | 
					
						
							|  |  |  |     // null would be tranfered to NULL.
 | 
					
						
							|  |  |  |     if (val->IsNull()) { | 
					
						
							|  |  |  |       *out = NULL; | 
					
						
							|  |  |  |       return true; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     atom::api::Window* window; | 
					
						
							|  |  |  |     if (!Converter<atom::api::Window*>::FromV8(isolate, val, &window)) | 
					
						
							|  |  |  |       return false; | 
					
						
							|  |  |  |     *out = window->window(); | 
					
						
							|  |  |  |     return true; | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | }  // namespace mate
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-04-15 23:01:12 +08:00
										 |  |  | #endif  // ATOM_BROWSER_API_ATOM_API_WINDOW_H_
 |