diff --git a/atom/browser/api/atom_api_window.cc b/atom/browser/api/atom_api_window.cc index 90d4a086091d..3e4700328036 100644 --- a/atom/browser/api/atom_api_window.cc +++ b/atom/browser/api/atom_api_window.cc @@ -650,8 +650,23 @@ void Window::SetAspectRatio(double aspect_ratio, mate::Arguments* args) { window_->SetAspectRatio(aspect_ratio, extra_size); } -void Window::SetParentWindow(NativeWindow* parent) { - window_->SetParentWindow(parent); +void Window::SetParentWindow(mate::Arguments* args) { + v8::Local value; + NativeWindow* parent; + if (args->GetNext(&value) && + mate::ConvertFromV8(isolate(), value, &parent)) { + parent_window_.Reset(isolate(), value); + window_->SetParentWindow(parent); + } else { + args->ThrowError("Must pass BrowserWindow instance or null"); + } +} + +v8::Local Window::GetParentWindow() { + if (parent_window_.IsEmpty()) + return v8::Null(isolate()); + else + return v8::Local::New(isolate(), parent_window_); } v8::Local Window::GetNativeWindowHandle() { @@ -702,6 +717,7 @@ void Window::BuildPrototype(v8::Isolate* isolate, .SetMethod("isFullScreen", &Window::IsFullscreen) .SetMethod("setAspectRatio", &Window::SetAspectRatio) .SetMethod("setParentWindow", &Window::SetParentWindow) + .SetMethod("getParentWindow", &Window::GetParentWindow) .SetMethod("getNativeWindowHandle", &Window::GetNativeWindowHandle) .SetMethod("getBounds", &Window::GetBounds) .SetMethod("setBounds", &Window::SetBounds) diff --git a/atom/browser/api/atom_api_window.h b/atom/browser/api/atom_api_window.h index fb78b6deb55d..007854897ffa 100644 --- a/atom/browser/api/atom_api_window.h +++ b/atom/browser/api/atom_api_window.h @@ -159,7 +159,8 @@ class Window : public mate::TrackableObject, void SetMenuBarVisibility(bool visible); bool IsMenuBarVisible(); void SetAspectRatio(double aspect_ratio, mate::Arguments* args); - void SetParentWindow(NativeWindow* parent); + void SetParentWindow(mate::Arguments* args); + v8::Local GetParentWindow(); v8::Local GetNativeWindowHandle(); #if defined(OS_WIN) @@ -189,6 +190,7 @@ class Window : public mate::TrackableObject, v8::Global web_contents_; v8::Global menu_; + v8::Global parent_window_; api::WebContents* api_web_contents_;